Переместить var на другой диск
Обновлено: 21.11.2024
Во-первых, я новичок в Linux. Недавно мне дали задание настроить сервер LAMP для клиента, но я могу подключиться к машине только по SSH, что, как я предполагаю, не может загрузиться в однопользовательском режиме.
Я не уверен, что содержит /var и для чего они используются, и почему он не монтируется только в однопользовательском режиме. Надеюсь, кто-то может объяснить это мне. Я поискал в Google, и я думаю, что есть 2 возможных метода, в которых я не уверен, поэтому мне нужно получить от вас несколько советов, прежде чем облажаться и потерять возможность SSH на машине.
Меня беспокоит этот метод: как убить все файлы, открытые в /var? Можно ли убить открытые файлы, когда я подключаюсь к машине по SSH?
Меня беспокоит этот метод: можно ли принудительно удалить файл /var с помощью ln -sf? Есть ли какие-либо последствия, которые мне нужно остерегаться при использовании символической ссылки?
Извините, я предлагаю что-то нелепое, так как я новичок в Linux. Я не могу позволить себе облажаться, так как это моя первая работа, а также я не могу воспроизвести тот же сценарий у себя дома.
Популярные темы в Linux в целом
8 ответов
- отметить 87 лучших ответов
- thumb_up – 178 благодарных отзывов
Попытайтесь описать проблему, которую вы пытаетесь решить, а не решение, которое вы рассматриваете.
Находится ли /var в корневой файловой системе? Журналы в /var вызывают переполнение корневой файловой системы?
Я не знаю настоящего вопроса, но рискну ответить.
Вы можете переименовать каталог /var, не затрагивая открытые файлы.
Затем вы можете создать пустой каталог с именем /var для использования в качестве точки монтирования и смонтировать туда другую файловую систему.
Процессы с открытыми файлами продолжат запись этих файлов в /var.tmp/
pigdog написал:
Попробуйте описать проблему, которую вы пытаетесь решить, а не решение, которое вы рассматриваете.
Зачем менять это?
Находится ли /var в корневой файловой системе? Журналы в /var вызывают переполнение корневой файловой системы?
Извините, я забыл упомянуть об этом. /var в настоящее время находится в корневом разделе, и я хотел бы переместить его в другой раздел из соображений безопасности.
pigdog написал:
Вы можете переименовать каталог /var, не затрагивая открытые файлы.
например,
Тогда вы можете создать пустой каталог с именем /var, чтобы использовать его в качестве точки монтирования, и смонтировать туда другую файловую систему.
Процессы, у которых есть открытые файлы, продолжат записывать эти файлы в /var.tmp. /
В этом случае, если я смонтирую /var в новый раздел и выполню rsync -a /var.tmp/. /var, затем выполните перезагрузку, все ли будет работать?
Я только что попытался переименовать файл /var на своем компьютере, но не смог из-за следующей ошибки. Думаю, я не могу выполнять какие-либо действия, пока открываются файлы.
- отметить 87 лучших ответов
- thumb_up – 178 благодарных отзывов
Является ли /var точкой монтирования файловой системы на вашем компьютере?
Попробуйте "df" на каждой машине, чтобы увидеть, есть ли список для /var на каждой.
бадбанана
в чем проблема?
это каталоги, созданные системой и используемые ОС, поэтому вы не можете перемещать ни один из них, не перейдя в однопользовательский режим. вот и все.
зачем нужно или говорите, что из соображений безопасности нужно переместить "/var" ?
badbanana написал:
в чем проблема?
"/"
"/etc"
"/usr"
"/var"
это каталоги, созданные системой и используемые ОС, поэтому вы не можете перемещать ни один из них, не перейдя в однопользовательский режим. вот и все.
зачем нужно или говорят, что из соображений безопасности нужно переместить "/var" ?
Я не говорил, что мне нужно переместить /var из соображений безопасности. Я сказал, что мне нужно переместить /var из соображений безопасности, например, чтобы файлы журналов не заполняли корневую папку.
Я понимаю, что это каталоги, созданные системой, которые должны использоваться операционной системой. Это та часть, которую я не понимаю, когда я перехожу в однопользовательский режим, система не использует /var?
бадбанана
Kent-Virtuosoul написал:
badbanana написал:
в чем проблема?
"/"
"/etc"
"/usr"
"/var"
это каталоги, созданные системой и используемые ОС, поэтому вы не можете перемещать из них без предварительного перехода в однопользовательский режим. вот и все.
зачем нужно или говорят, что из соображений безопасности нужно переместить "/var" ?
Я не говорил, что мне нужно переместить /var из соображений безопасности. Я сказал, что мне нужно переместить /var из соображений безопасности, например, чтобы файлы журналов не заполняли корневую папку.
Я понимаю, что это каталоги, созданные системой, которые должны использоваться операционной системой. Это та часть, которую я не понимаю, когда я перехожу в однопользовательский режим, система не использует /var?
по привычке :-) должно быть как вы сказали "безопасность".
он по-прежнему используется даже в однопользовательском режиме. просто в этом режиме обслуживание выполняется в этом режиме, чтобы никакие файлы не использовались совместно (следовательно, однопользовательский режим) с другими. для его перемещения необходимо выполнить множество действий, включая перезагрузку, поэтому, если на вашем сервере все еще нет данных, можно начать с нуля.
У меня есть раздел /, содержащий /var, и он слишком мал. У меня есть другой существующий раздел с достаточным пространством.
Как переместить папку /var из sda1 в sda2?
3 ответа 3
Перейдите в однопользовательский режим и убедитесь, что любой процесс записи в /var остановлен. (Проверьте с помощью lsof | grep /var )
Да, если вы решите проблему таким образом, всегда будет каталог /home/var. Одним из способов перехода в однопользовательский режим является перезагрузка и выбор однопользовательского режима в меню загрузки.
Я не совсем уверен, что это будет работать нормально все время. Если вы используете более позднюю версию (wheezy), вы можете быть в порядке, поскольку она имеет файловую систему /run. OTOH: в начале процесса загрузки файлы могут быть открыты в /var до того, как он будет смонтирован при помощи привязки.
@cstamas, Наличие /var в отдельной файловой системе поддерживается и всегда поддерживалось. Использование /var отдельно даже рекомендуется как хорошая идея в FHS и официальной документации Debian.
Вы также можете использовать:
Это кажется намного проще, чем возиться с fstab и монтированием.
Не уверен, почему кто-то проголосовал против этого. Это отлично сработает. Сим-ссылка должна работать нормально. Я просто использую привязку для других целей, поэтому обычно думаю о них в первую очередь.
Кроме того, это может быть не так безопасно, но на самом деле работает. Недавно я сделал это на машине, прежде чем запускать ее в производство. Я бы проявил осторожность, если бы это была машина, которая использовалась или на которой запущено много процессов. В моем случае это был новый сервер, предназначенный только для запуска tomcat.
Симлинк /var работает, но вместо этого я предпочитаю помещать запись в /etc/fstab, чтобы самому помнить, на какой раздел/том я что и зачем ставил (можно добавить комментарии). Этот способ также более понятен мне, что я должен изменить в конфигурации, если мне нужно что-то изменить в моем оборудовании.
Когда я занял новый виртуальный сервер, предоставленный мне хостинговой компанией моего работодателя, я создал дополнительные логические тома для var и home, которые раньше были обычными каталогами в корневом разделе. Поскольку провайдер виртуального сервера не предоставил KVM-подобный интерфейс, с помощью которого я мог бы получить доступ к серверу в однопользовательском режиме, приведенные выше ответы не были применимы к моей настройке. Я надеюсь, что этот ответ будет полезен для других в аналогичной ситуации (я сохранил детали LVM, но их можно пропустить, поскольку не имеет особого значения, создается ли новая файловая система на логическом томе или на разделе диска).
Создать и использовать новую файловую систему /var с LVM
Создайте файловую систему для нового тома var, смонтируйте его (используя временный каталог) и скопируйте файлы из текущего каталога /var в новую файловую систему. При копировании файлов с помощью rsync используйте параметр -a, --archive для сохранения меток времени, прав собственности, режимов и т. д., а также параметр -X, --xattrs для сохранения расширенных атрибутов, таких как метки безопасности, используемые AppArmor и SELinux.
Обновить таблицу файловой системы
Настройте новую файловую систему для использования в качестве новой точки монтирования для /var, добавив следующую строку в /etc/fstab. Обратите внимание, что 0 используется в качестве номера прохода (последнее поле), чтобы файловая система не проверялась автоматически (fsck) после определенного количества перезагрузок (у меня нет доступа для входа на сервер в однопользовательском режиме) .
Поскольку я не могу перейти в однопользовательский режим, перезагрузите компьютер, чтобы использовать этот новый том как /var .
Восстановить место на диске из корневой файловой системы
После перезагрузки компьютера выполните следующие действия, чтобы очистить временный каталог и удалить старые файлы /var из корневой файловой системы:
Удалить временную точку подключения:
Создайте новую точку монтирования, чтобы создать альтернативный путь к файлам в старом каталоге /var в корневой файловой системе (в настоящее время он «замаскирован» новой файловой системой /var, смонтированной в каталоге):
Что ж, если недостаточно спланировать создание ресурса, он съест наше продуктивное время, когда он выйдет из строя или не будет работать так, как ожидалось. В текущем контексте усилий по переносу раздела /var может быть меньше, но если это не будет сделано должным образом, это может привести к потере данных!
Текущая настройка перед переносом /var в новый раздел:
Как вы можете сделать вывод из вышеизложенного, для /var нет отдельного монтирования, и в настоящее время он является частью / , однако я намерен переместить /var в другой раздел для использования в будущем. Чтобы запустить виртуальную машину на хосте KVM, выполните следующие шаги:
- Создайте образ qcow2 и подключите его к виртуальной машине.
- Создать и смонтировать файловую систему xfs на вновь добавленном диске, rsync существующую /var на вновь смонтированный диск
- Добавить данные в /etc/fstab для монтирования /var при перезагрузке
1. Подключить диск к ВМ §
Кстати, при создании разделов на существующем диске следуйте этому руководству . Вернёмся к нашему сценарию, создадим и подключим новый диск к гостевой машине и выполним на KVM-машине, как показано ниже
Убедитесь, что диск создан и подключен к гостевой машине (Fedora)
2. Создайте файловую систему на диске §
После добавления диска к виртуальной машине вы можете следовать этому руководству до создания файловой системы, потому что в нашем сценарии мы создаем файловую систему xfs. Выполните команду mkfs.xfs /dev/vg1/lv1 на виртуальной машине хоста, и на диске будет создана новая файловая система.
Если вы хотите использовать уже существующий диск и создать на нем xfs, сотрите (ВНИМАНИЕ: возможная потеря данных) существующие заголовки файловой системы, запустив wipefs -a, и создайте на нем новую файловую систему.
*Если вы не хотите мучиться с созданием LVM, вы можете просто запустить mkfs.xfs на новом диске.
3. Синхронизировать /var на новый диск §
Мы смонтируем новый диск и, чтобы избежать записи данных, перейдем на уровень запуска 1 и выполним rsync данные /var на смонтированный диск
Если все в порядке, сервер должен перезагрузиться без каких-либо проблем с /var, смонтированным в соответствии с записями /etc/fstab.
Проверка и минимальное устранение неполадок §
После перезапуска сервера смонтировать | grep var должен быть успешным, df -h должен указать, что /var монтируется в другую файловую систему, а lsblk указывает /var на lvm
Ниже представлена информация после переноса:
Если по какой-то причине сервер не заработал должным образом, войдите в виртуальную машину через консольное подключение (virt-manager) из KVM и выполните следующие действия:
Многие сервисы используют /var для журнальных сообщений и хранения данных помимо конфигураций, всегда полезно, особенно в серверных средах, иметь достаточный объем свободного места в каталоге /var.
Все описанные выше шаги выполняются и проверяются в Fedora 32 Server Edition как часть освобождения места для образов контейнеров и монтирования связанных томов.
Спасибо за ваше время, и я надеюсь, что оно потрачено не зря. Я буду очень рад услышать ваши мысли в разделе комментариев, или вы можете связаться со мной любым способом, указанным в нижнем колонтитуле 😄.
Я хочу хранить /var в отдельном разделе от / . Как правильно это настроить?
2 ответа 2
Сначала подготовьте новый раздел (например, с помощью parted и mkfs ).
Скажем, раздел /dev/sda5
Смонтируйте новый раздел:
Синхронизировать текущую переменную:
Добавить запись в /etc/fstab
Если вам нужно вернуться к своему старому /var, просто закомментируйте запись в fstab.
Я бы добавил некоторую информацию, чтобы освободить место на старом /var : начать с livecd, смонтировать раздел на установленной системе / и rm -rf /var/* .
Хорошее замечание. Или вы можете смонтировать / в какое-либо другое место в текущей системе во время ее работы (но после перезагрузки). Затем вы можете добраться до старого /var и удалить его, если хотите
Раньше я тоже об этом задумывался. Первая 1 является чем-то действительно архаичным и неэффективным, вторая управляет порядком fsck, когда пришло время сканировать ваш добавочный во время загрузки. Я больше не обращаю на них внимания. Просто поставьте 1 1, потому что этого требует синтаксис.
Вы должны поставить 2 2, чтобы такие вещи, как / get fsck, сканировались до / var при 30-й перезагрузке. В противном случае, если /var выйдет из строя и попросит вас исправить что-то вручную в одной пользовательской оболочке, у вас не будет никакой файловой системы. Забавный материал.
Разве не рекомендуется использовать UUID в fstab? Я получил соответствующий с помощью blkid -o list -s UUID , но я думаю, вам нужно запустить с помощью sudo
Когда я занял новый виртуальный сервер, предоставленный хостинговой компанией моего работодателя, в корневой файловой системе не хватило свободного места. К счастью, они использовали Logical Volume Manager (LVM) для разделения виртуального диска, и было достаточно свободного места для создания новых томов. Я создал дополнительные логические тома для var и home, которые раньше были обычными каталогами в корневой файловой системе. Поскольку провайдер виртуального сервера не предоставил KVM-подобный интерфейс, с помощью которого я мог бы получить доступ к серверу в однопользовательском режиме, я использовал метод, очень похожий на метод, описанный Александром (этот ответ включает дополнительные сведения о восстановлении дискового пространства в дополнение к командам, специфичным для LVM).
Создать новую файловую систему /var с помощью LVM
Создайте логический том для новой файловой системы var, смонтируйте его (используя временный каталог) и скопируйте файлы из текущего /var в новую файловую систему:
Поскольку запущенные процессы будут иметь файлы в /var открытыми и используемыми, дерево каталогов нельзя просто переместить в новую файловую систему. Рекурсивно ( -r ) копировать файлы из текущего раздела /var в новую файловую систему, сохраняя при этом атрибуты файлов и расширенные атрибуты (параметр -a, --archive). Осторожный пользователь может сначала создать моментальный снимок LVM текущего тома перед копированием, но это слишком много не по теме для данного вопроса.
Кроме того, файлы можно копировать с помощью rsync с параметром -a, --archive для сохранения меток времени, владельцев, режимов и т. д. и параметром -X, --xattrs для сохранения расширенных атрибутов, таких как метки безопасности, используемые AppArmor и SELinux:
Обновить таблицу файловой системы
Настройте новую файловую систему для использования в качестве новой точки монтирования для /var, добавив следующую строку в /etc/fstab. Обратите внимание, что в качестве номера прохода (последнее поле) используется 0, чтобы файловая система не проверялась автоматически ( fsck ) после определенного количества перезагрузок.
Поскольку переход в однопользовательский режим невозможен, перезагрузите компьютер, чтобы использовать этот новый том как /var .
Удалить временную точку подключения
После перезагрузки компьютера новая файловая система будет смонтирована в /var, чтобы можно было безопасно удалить временную точку монтирования:
Восстановить место на диске из корневой файловой системы
Старые файлы /var по-прежнему будут занимать место в корневом разделе, но к ним будет нелегко получить доступ, пока другая файловая система смонтирована в /var (они «маскируются» новой файловой системой, использующей каталог /var в качестве монтирования). -точка). Используйте временную точку монтирования для монтирования корневой файловой системы, чтобы содержимое исходного каталога /var было доступно по альтернативному пути.
Читайте также: