Переход на больший диск в Linux

У меня есть ящик Linux, на котором не хватает места на томе без полномочий root. Какой лучший способ перейти на больший диск?

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

Это звучит правильно? Я что-то пропустил? Предложения? Подсказки? Кто-нибудь знает, какой будет команда cp?

Это машина убунту.

6 ответов

Решение

Если вы дали свой текущий макет (вывод fdisk -l будет делать, если вы не используете LVM, вывод "fdisk -l","pvdisplay -C","vgdisplay -C" а также "lvdisplay -C"Если вы используете LVM) и диск / раздел, который вы хотите увеличить, мы могли бы дать более точный ответ.

Предполагая, что под "диском без корневого тома" вы подразумеваете диск с одним разделом, который содержит том, который вы хотите увеличить на новый диск, что старый диск отображается как sdb (и раздел на нем sdb1), что существующий раздел файловая система ext2 или ext3, новый диск находится и разделен на один том (скажем, sdc1), и вы хотите полностью перейти на новый диск, избавившись от старого, сработает следующее:

  1. Резервное копирование данных, на всякий случай
  2. остановите все службы и другие процессы, которые обращаются к тому / dev / sdb1
  3. преодолеть это
  4. dd if=/dev/sdb1 of=/dev/sdc1
  5. fsck /dev/sdc1 -C 0
  6. resize2fs /dev/sdc1 -p
  7. Настройте любые указатели на старое устройство (т.е. в / etc / fstab) на новое
  8. Перемонтировать и перезапустить сервисы
  9. Удалите старый диск в следующий раз, когда машина выключится. Возможно, вы захотите сохранить его в качестве резервной копии на случай, если новый диск окажется грязным

edit: "-C 0" на fsck и "-p" на resize2fs сообщают соответствующим утилитам выводить информацию о прогрессе, когда они делают свое дело. Операция изменения размера должна быть довольно быстрой (обычно это занимает много времени при уменьшении объема, поскольку в этом случае необходимо перемещать больше данных). Если у вас установлен pv, вы можете сделать шаг 3, чтобы получить информацию о прогрессе, заменив вызов dd на "pv /dev/sdb1 > /dev/sdc1"

редактировать 2: это хороший вариант для довольно полных томов, так как сначала копирует блок за блоком, поэтому не нужно переворачивать головку диска, заботясь о структурах файловой системы (так что копирование будет происходить так же быстро, как и медленнее) скорость, с которой старый накопитель может выполнять массовое чтение "и" скорость, с которой новый накопитель может выполнять массовую запись "), и при этом не возникает путаницы с жесткими ссылками, узлами устройств или чем-то еще, что может быть в файловой системе - для томов, которые довольно пустой, вы найдете один из методов на основе cp/cpio намного быстрее, так как они не будут копировать все пустые блоки с диска на диск

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

Вы также можете запустить rsync, когда система работает нормально (хотя это будет медленнее, пока rsync копирует файлы). затем, когда вы будете готовы к переходу на новый диск, либо выключите все, что записывает на старый диск (включая пользовательский процесс, задания демона, задания cron и т. д.), либо перезагрузитесь в однопользовательский режим и снова запустите rsync., чтобы синхронизировать новый диск с любыми изменениями, произошедшими во время работы rsync.

процесс примерно:

  • установить новый диск
  • разбить на разделы и отформатировать их с вашей предпочтительной файловой системой
  • смонтировать его
  • rsync старый фс в новый фс
  • перезагрузка в однопользовательском режиме
  • rsync снова
  • отредактируйте / etc / fstab, чтобы смонтировать новый fs вместо старого
  • перезагрузите компьютер снова (или выключите и сначала удалите старый диск)

если это может произойти снова в будущем или если вы хотите использовать емкость как старого, так и нового диска, то вы можете рассмотреть возможность использования LVM для нового диска... затем выполните rsync-синхронизацию данных и отредактируйте Fstab, как указано выше. Как только вы запустите систему в группе томов LVM, вы можете добавить старый диск (и / или любые дополнительные новые диски) в группу томов и изменить размер fs.

Моя любимая файловая система copy-fu:

(cd /src; tar cf - .) | (cd /dst; tar xpf -)

Мне любопытно посмотреть, что предлагают другие. Поскольку вы перемещаете всю файловую систему, вероятно, будет лучший выбор. О, оригинальная файловая система находится на томе LVM?

Я всегда был неравнодушен к cpio:

cd /src; find . -print | cpio -dpum /dst

Если у вас есть lvm, вы можете сделать это на лету, не перезагружая / не останавливая какие-либо службы, если ваша система поддерживает горячее подключение дисков, вы также можете заменить диски. - разделить новый диск - создать новый раздел - pvcreate new_disk - расширить группу томов до нового раздела vgextend datavg new_disk - pvmove old_disk new_disk

Если это не рут, и нет ничего, использующего диск (/usr/sbin/lsof | grep '/path/to/mount/point), то вам не нужно загружаться в однопользовательском режиме.

я бы сделал cp -a, если это не LVM. Но, насколько я помню, для Ubuntu(по крайней мере, версии 9) требуется альтернативный установочный диск. Я не знаю о других версиях.

Другие вопросы по тегам