Перемещение разделов в корневой раздел

Перемещение разделов в корневой раздел

В настоящее время я застрял на схеме ограничительного разбиения, которая приводит к заполнению моих разделов. Это выглядит так:

/dev/sda7             870G  315G  511G  39% /
/dev/sda6             2.0G  271M  1.6G  15% /tmp
/dev/sda3              15G   13G  1.5G  90% /usr
/dev/sda2              15G  8.6G  5.0G  64% /var
/dev/sda1              99M   36M   58M  39% /boot
tmpfs                 7.9G     0  7.9G   0% /dev/shm

Я хочу переместить данные /usr/var, возможно, также) в корневой раздел. Мне не особо интересны сами разделы, поэтому слияние не требуется.

Какой подход будет наилучшим для этого? В настоящее время мой план таков:

cp -R /usr /newusr
umount /usr
mv /newusr /usr

Неужели все так просто или я что-то упускаю из виду?

решение1

Ваш подход правильный. Создайте каталог на корневом разделе, скопируйте туда свои данные, отмонтируйте usrраздел и переместите новый каталог в usr. Не забудьте /etc/fstabпотом отредактировать свой.

решение2

  1. Сначала всегда нужно проверять, достаточно ли у вас свободного места. На этот раз оно есть.

  2. О копии:

Не все так просто. Есть специальные файлы, чьи специальные атрибуты не всегда копируются правильно. Вместо cp -R, используйте

cp -vfa /usr /newusr

Если вы хотите увидеть, что в данный момент делается, это можно сделать с помощью флага «-v».

  1. Не забудьте внести /etc/fstabизменения.
  2. ВНИМАНИЕ: После переразметки ядро ​​не всегда может перечитать вашу новую таблицу разделов, и поэтому возможно, что оно будет использовать вашу старую! Это очень опасно! Версию ядра о текущей таблице разделов можно найти в /proc/partitions, а таблицу разделов на диске можно прочитать с помощью fdisk -l /dev/sda. Если есть несоответствие о разделе, который вы хотите изменить в данный момент, лучше всего перезагрузиться.

решение3

Для этого необходимо сделать это в однопользовательском режиме или с помощью LiveCD, который вы найдете в Интернете.

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

Во-первых, ты вообщедолженпроверьте, что все процессы/службы используют/пишут в каталог, который вы хотите переместить.

lsof | grep -E '/usr|/var'

Обычно /var по-прежнему используется для файлов pid и sock,/usrа также любая библиотека будет в этом нуждаться.

Итак, остановите/убейте службы и процессы, которые появляются.

COMMAND    PID  TID        USER   FD      TYPE             DEVICE   SIZE/OFF       NODE NAME
cupsd      723             root    5u      REG                8,1          0    8651393 /var/log/cups/error_log
cupsd      723             root    6u      REG                8,1          0    8651908 /var/log/cups/page_log
cupsd      723             root   12u     unix 0xffff88020d97d780        0t0       9958 /var/run/cups/cups.sock

В этом коротком примере запущен демон cups, который использует эти каталоги. Если их остановить, они не появятся в выводе lsof.

После этого вам понадобится копия ваших текущих данных, я предлагаю использовать rsync вместо cp (чтобы сохранить все, разрешения, символические ссылки и т. д.)

mkdir /mnt/var
mkdir /mnt/usr

Сделайте резервную копию

rsync -avz /var/* /mnt/var
rsync -avz /usr/* /mnt/usr

Размонтировать папки

umount /var
umount /usr

Восстановить данные

rsync -avz /mnt/var/* /var
rsync -avz /mnt/usr/* /usr

Редактировать ваш/etc/fstabфайл и прокомментируйте/удалите записи, где/вари/usrгде предполагается его установка.

Затем вы можете запустить все остановленные службы или перезапустить машину. Если для/usrне работает, вы не можете остановить демон (возможно, вы не можете убить его, потому что это зависит от init pid), единственный способ — использовать LiveCD.

Хотя вы не упомянули, какой тип машины используется (ваш ПК, офисная машина, сервер и т. д.), от этого будет зависеть выполнение действий максимально формальным способом.

Связанный контент