Как переместить / usr в новый раздел?

20

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

Можно ли это сделать во время работы Ubuntu, или мне нужно использовать LiveCD для этого?

    
задан Nathan Osman 02.08.2010 в 02:21
источник

3 ответа

23

Было бы безопаснее использовать Live CD, но вы могли бы сделать:

  • скопируйте все файлы в новый раздел, убедившись, что содержимое /usr не изменится, пока вы это делаете.
  • отредактируйте /etc/fstab , чтобы /usr был установлен при следующей перезагрузке
  • перезагрузка
  • удалить старые файлы

Подробнее о каждом шаге см. ниже.

Обратите внимание, что вы не можете монтировать новый раздел на /usr во время работы, так как будет много файлов в /usr , которые будут открыты.

Копирование файлов

Я бы использовал cp -a . -a - это опция архива. На странице man :

-a, --archive
          same as -dR --preserve=all
...
-d     same as --no-dereference --preserve=links
...
-P, --no-dereference
          never follow symbolic links in SOURCE
...
--preserve[=ATTR_LIST]
          preserve      the      specified      attributes       (default:
          mode,ownership,timestamps),  if  possible additional attributes:
          context, links, xattr, all
...
-R, -r, --recursive
          copy directories recursively

Редактирование / etc / fstab

Вам нужно знать UUID вашего нового раздела. Вы можете увидеть отображение, выполнив:

$ ls -l /dev/disk/by-uuid/

И затем добавьте эту строку в /etc/fstab :

UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr           ext4    defaults        0       2

Измените UUID на свой UUID и измените ext4 на тип используемой файловой системы - вы должны это знать, если вы настроили раздел.

Удалить старые файлы

После перезагрузки старые файлы в /usr в корневом разделе будут скрыты новым разделом, установленным на /usr . Но мы можем использовать некоторые mount bind trickery , чтобы перейти к старым файлам, а затем удалить их.

$ sudo mount --bind / /mnt
$ sudo rm -rf /mnt/usr
$ sudo umount /mnt

Но некоторые незначительные ошибки (например, нажатие Enter, когда вы только набрали sudo rm -rf /mnt ) могут вызвать катастрофу, поэтому я бы использовал этот метод только в том случае, если вы были очень уверены в том, что делаете, действительно не мог справиться с любое время простоя или не имело физического доступа к машине и, следовательно, не могло загрузиться с живого компакт-диска или живого USB-накопителя.

    
ответ дан Hamish Downer 02.08.2010 в 15:39
источник
6

Поскольку большинство используемых библиотек находятся в / usr, я бы не рекомендовал перемещать этот каталог во время работы Ubuntu. Фактически, вы, вероятно, получаете сообщения об ошибках, когда пытаетесь это сделать. Следовательно, лучше всего использовать LiveCD.

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

После перемещения файлов на другой раздел вам нужно добавить еще одно монтирование в / etc / fstab для монтирования нового раздела в / usr.

    
ответ дан txwikinger 02.08.2010 в 02:36
-1

Внимание: я понятия не имею, что я делаю, я просто копирую команды и делаю, как это было предложено другими. Это может быть неправильный способ сделать это, но он работает для меня (на данный момент, по крайней мере).

Вот как я это сделал (следуя ответам Хэмиша и комментариям):

  1. Скопируйте все файлы вновь созданного раздела (замените его местоположением, он будет похож на мой):

    rsync -avz /usr /media/aleksandar/750b84e2-e65f-4309-ade5-5af0033a937c 
    
  2. В этот момент я понял, что он скопировал все в папку /usr раздела, , которая не будет работать , поэтому я скопировал все (с файловым менеджером ) из этой папки в корень раздела, а затем удалил эту пустую папку.

  3. Измените /etc/fstab (то же самое, что и в ответе Хэмиша, конечно, замените своим UUID)

    UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr           ext4    defaults        0       2
    
  4. Шаг, который оказался не очень мудрым: я изменил имя текущего монтированного раздела /usr на /usrBACKUP , так что я знаю, что, когда я перезагружаю систему, это фактически перезагружается во вновь созданный раздел, а не старый. После этого все захлопнулось на экране, и мне пришлось отключить его, долгое нажатие клавиши питания (гениальность, как я) . Пропустите этот шаг, если вы не хотите сбой вашей системы.

  5. Перезагрузите систему

  6. После перезагрузки откройте «Системный монитор» или подобное приложение, чтобы проверить, установлен ли ваш новый раздел /usr , и для проверки безопасности, все ли так, как планировалось.

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

ответ дан Aleksandar Stefanović 03.04.2016 в 12:14