Назад | Перейти на главную страницу

Как переместить / var в другой существующий раздел?

У меня есть / раздел, который содержит / var и слишком мал. У меня есть еще один существующий раздел, на котором достаточно места.

Вот мой df:

File system          Size. Occ. Avai. %Ful. Monté sur
/dev/sda1             5,0G  4,5G  289M  95% /
tmpfs                 242M     0  242M   0% /lib/init/rw
udev                   10M  2,7M  7,4M  27% /dev
tmpfs                 242M     0  242M   0% /dev/shm
/dev/sda2              15G  406M   14G   3% /home

Как я могу переместить папку / var с sda1 на sda2?

Перейдите в однопользовательский режим и убедитесь, что любой процесс, записывающий в /var остановлен. (Проверить с lsof | grep /var)

  • mkdir -p /home/var
  • rsync -va /var /home/var
  • mv /var /var.old # вы можете удалить /var.old когда вы закончите, чтобы освободить место
  • mkdir -p /var
  • mount -o bind /home/var /var
  • обнови свой /etc/fstab чтобы сделать крепление постоянным.

/etc/fstab

 /home/var /var        none    bind

Вы также можете использовать:

 mkdir /home/var
 <move contents of /var to /home/var -- however you want; EX: mv /var/* /home/var>
 mv /var /var.old
 ln -s /home/var /var

Это кажется намного проще, чем возиться с fstab и mount.

Шаг /var без перехода в однопользовательский режим

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

Создать и использовать новый /var файловая система с LVM

Создайте файловую систему для нового var том, смонтируйте его (используя временный каталог) и скопируйте файлы из текущего /var в новую файловую систему. При копировании файлов с rsync, используйте его -a, --archive возможность сохранения отметок времени, владения, режимов и т. д. и его -X, --xattrs опция для сохранения расширенных атрибутов, таких как метки безопасности, используемые AppArmor и SELinux.

sudo lvcreate -L 60GB -n var VolGroup00
sudo mkfs.ext4 /dev/VolGroup00/var
sudo mkdir /var.new
sudo mount /dev/VolGroup00/var /var.new
sudo rsync -raX /var/ /var.new/

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

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

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

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

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

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

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

    sudo rmdir /var.new
    
  2. Создайте новую точку монтирования, чтобы создать альтернативный путь к файлам на старом /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/