Как я могу хранить / var на отдельном разделе?

13

Я хотел бы хранить /varна отдельном разделе от /. Как правильно это настроить?

ændrük
источник

Ответы:

17

Сначала подготовьте новый раздел (например, с помощью partedи mkfs).

Скажем, раздел - / dev / sda5

Смонтируйте новый раздел:

mkdir /var2
mount /dev/sda5 /var2

Синхронизируйте текущую переменную:

rsync -a /var/ /var2

Добавьте запись в / etc / fstab

/dev/sda5    /var    ext4    defaults      2 2

Перезагрузка.

Если вам нужно вернуться к вашему старому / var, просто закомментируйте запись в fstab.

Александр Левчук
источник
1
Я бы добавил некоторую информацию, чтобы восстановить место на старом /var: начать с livecd, смонтировать раздел в установленной системе /и rm -rf /var/*.
энзотиб
1
Хорошая точка зрения. Или вы можете подключиться /к какой-либо другой папке в текущей системе во время ее работы (но после перезагрузки). Тогда вы можете получить старое /varи удалить его, если хотите
Александр Левчук
1
Я тоже удивлялся этим. Первая 1 - это что-то действительно архаичное и без эффектов, вторая - порядок fsck, когда пришло время сканировать ваш ext во время загрузки. Я больше не обращаю на них внимания. Просто поставьте 1 1, потому что синтаксис требует этого.
Александр Левчук
2
Вы должны поставить 2 2, чтобы позволить таким вещам, как / получить сканирование fsck перед / var, при перезагрузке 30-го раза. В противном случае, если / var завершится неудачно и попросит вас исправить вещи вручную в однопользовательской оболочке - тогда у вас не будет никакой файловой системы. Прикольные вещи.
Александр Левчук
2
Разве не рекомендуется использовать UUID в fstab? Я получил соответствующий, используя blkid -o list -s UUID, но я думаю, что вам нужно запустить с sudo
steevc
2

Настройка нового раздела / var на виртуальном сервере

Когда я завладел новым виртуальным сервером, который был предоставлен хостинговой компанией моего работодателя, в корневой файловой системе не было достаточно свободного места. К счастью, они использовали менеджер логических томов (LVM) для разделения виртуального диска, и было достаточно свободного места для создания новых томов. Я создал дополнительные логические тома для varи homeкоторые были обычными каталогами в корневой файловой системе. Поскольку поставщик виртуальных серверов не предоставил KVM-подобный интерфейс, с помощью которого я мог получить доступ к серверу в однопользовательском режиме, я использовал метод, очень похожий на тот, который описал Александр (этот ответ включает в себя дополнительные сведения для восстановления дискового пространства в дополнение к LVM-специфическим командам).

Создайте новую файловую систему / var с LVM

Создайте логический том для новой varфайловой системы, смонтируйте его (используя временный каталог) и скопируйте файлы из текущей /varв новую файловую систему:

# Create a new 60GB logical volume in the `VolGroup00` group called `var`.
sudo lvcreate -L 60GB -n var VolGroup00
# Create an ext4 filesystem on this new `var` volume.
sudo mkfs.ext4 /dev/VolGroup00/var
# Mount this filesystem at a temporary mount-point.
sudo mkdir /var.new
sudo mount /dev/VolGroup00/var /var.new

Поскольку запущенные процессы будут /varдержать файлы открытыми и используемыми, дерево каталогов не может быть просто перемещено в новую файловую систему. Рекурсивно ( -r) копировать файлы из текущего /varраздела в новую файловую систему, сохраняя атрибуты файлов и расширенные атрибуты ( -a, --archiveопция). Осторожный пользователь может сначала создать LVM-снимок текущего тома перед копированием, но это слишком много не по теме для этого вопроса.

sudo cp -ra /var/ /var.new/

Кроме того, файлы можно копировать rsyncс -a, --archiveвозможностью сохранения -X, --xattrsметок времени, владельца, режимов и т. Д., А также с возможностью сохранения расширенных атрибутов, таких как метки безопасности, используемые AppArmor и SELinux:

sudo rsync -raX /var/ /var.new/

Обновите таблицу файловой системы

Настройте новую файловую систему для использования в качестве новой точки монтирования /var, добавив следующую строку в /etc/fstab. Обратите внимание, что 0используется в качестве номера прохода (последнее поле), чтобы файловая система не проверялась автоматически ( fsck) после определенного количества перезагрузок.

/dev/mapper/VolGroup00-var    /var    ext4  defaults  0 0

Поскольку переход в однопользовательский режим невозможен, перезагрузите компьютер, чтобы использовать этот новый том в качестве /var.

Удалить временную точку монтирования

После перезагрузки компьютера новая файловая система будет смонтирована, /varчтобы можно было безопасно удалить временную точку монтирования:

sudo rmdir /var.new

Восстановление дискового пространства из корневой файловой системы

Старые /varфайлы по-прежнему будут занимать место в корневом разделе, но их нелегко получить, пока смонтирована другая файловая система /var(они «маскируются» новой файловой системой, используя /varкаталог в качестве точки монтирования). Используйте временную точку монтирования для монтирования корневой файловой системы, чтобы содержимое исходного /varкаталога было доступно по альтернативному пути.

    sudo mkdir /old-root
    sudo mount /dev/mapper/VolGroup00-root /old-root/
    sudo rm -rf /old-root/var/*
    sudo umount /old-root/
    sudo rmdir /old-root/
Энтони Геогеган
источник
Хорошее объяснение возможных вариантов. Тем не менее, вы используете lvcreateи mkfs.ext4не объясняя, что и почему используются. Может быть, вы можете просто сказать, что это для создания нового раздела, поскольку они не являются основной темой ответа.
PhoneixS
Спасибо за отзыв @PhoneixS Я отредактировал ответ, чтобы сделать его более понятным и предоставить дополнительную контекстную информацию.
Энтони