У меня есть Linux-бокс, на котором не хватает места на диске без полномочий root. Как лучше всего перейти на диск большего размера?
Я полагаю, что загружаюсь в однопользовательский режим, форматирую, монтирую новый диск, выполняю какую-то волшебную команду копирования, которая сохраняет ссылки, разрешения, даты файлов и все остальное, затем размонтирую старый диск, монтирую новый диск как старое имя и перезагружаюсь.
Звучит правильно? Я что-то упускаю? Предложения? Подсказки? Кто-нибудь знает, какой была бы команда cp?
Это машина с убунту.
Если вы указали свой текущий макет (вывод fdisk -l
будет делать, если вы не используете LVM, вывод "fdisk -l
","pvdisplay -C
","vgdisplay -C
" и "lvdisplay -C
"если вы используете LVM) и диск / раздел, который вы хотите увеличить, мы могли бы дать более точный ответ.
Предполагая, что под «некорневым диском тома» вы подразумеваете диск с одним разделом, который содержит том, который вы хотите вырастить на новый диск, что старый диск отображается как sdb (и раздел на нем sdb1), что существующий раздел это файловая система ext2 или ext3, в которой находится новый диск и разделен как единый том (скажем, sdc1), и что вы хотите полностью перейти на новый диск, избавившись от старого, будет работать следующее:
dd if=/dev/sdb1 of=/dev/sdc1
fsck /dev/sdc1 -C 0
resize2fs /dev/sdc1 -p
редактировать: «-C 0» в fsck и «-p» в resize2fs сообщают соответствующим утилитам, что они должны выводить информацию о ходе выполнения своей работы. Операция изменения размера должна быть довольно быстрой (обычно это занимает много времени только при уменьшении объема, поскольку в этом случае необходимо перемещать больше данных). Если у вас есть pv после установки вы можете сделать шаг 3, чтобы вы также получили информацию о ходе выполнения, заменив вызов dd на "pv / dev / sdb1> / dev / sdc1"
редактировать 2: это хороший вариант для довольно полных томов, так как он сначала копирует блок за блоком, поэтому не нужно переворачивать головки дисководов, заботясь о структурах файловой системы (так что копирование будет происходить так же быстро, как "медленнее" скорости старого диск может выполнять массовое чтение "и" скорость, которую новый диск может массово записывать "), и у него нет никакой путаницы с жесткими ссылками, узлами устройств или чем-либо еще особенным, что может быть в файловой системе - для томов, которые довольно пусты, вы найду один из методов на основе cp / cpio намного быстрее, так как они не будут копировать все пустые блоки с диска на диск
Я предпочитаю rsync для такого рода заданий, потому что, если что-то прерывает процесс копирования, вы можете просто запустить rsync еще раз, и он продолжит работу с того места, где остановился, а не с самого начала.
вы также можете запустить rsync, когда система работает нормально (хотя это будет медленнее, пока rsync копирует файлы). затем, когда вы будете готовы перейти к новому диску, либо выключите все который выполняет запись на старый диск (включая пользовательский процесс, демон, задания cron и т. д.) ИЛИ перезагрузитесь в однопользовательский режим и снова запустите rsync, чтобы синхронизировать новый диск с любыми изменениями, которые произошли во время работы первоначального rsync.
процесс примерно:
если это, вероятно, повторится в будущем, или если вы хотите использовать емкость как старого, так и нового диска, вы можете рассмотреть возможность использования LVM для нового диска ... затем выполните синхронизацию данных с ним и отредактируйте fstab, как указано выше. как только у вас есть система, работающая в группе томов LVM, вы можете добавить старый диск (и / или любые дополнительные новые диски) в группу томов и изменить размер файла fs.
Моя любимая файловая система copy-fu:
(cd /src; tar cf - .) | (cd /dst; tar xpf -)
Однако мне любопытно узнать, что предлагают другие. Поскольку вы перемещаете всю файловую систему, вероятно, будут лучшие варианты. О, есть ли исходная файловая система на томе LVM?
Я всегда был неравнодушен к cpio:
cd /src; find . -print | cpio -dpum /dst
Если это не корень, и диск ничего не использует (/usr/sbin/lsof | grep '/path/to/mount/point
), то вам не нужно загружаться в однопользовательском режиме.
я бы сделал cp -a
, если это не LVM. Но насколько я помню, Ubuntu (по крайней мере, версии 9) требует альтернативного установочного диска. Насчет других версий не знаю.
Если у вас есть lvm, вы можете делать это на лету без перезагрузки / остановки каких-либо служб, если ваша система поддерживает горячее подключение дисков, вы также можете заменить диски. - разбить новый диск на разделы - pvcreate новый раздел - pvcreate new_disk - расширить вашу группу томов до нового раздела vgextend datavg new_disk - pvmove old_disk new_disk