Как переместить корневой раздел LVM 250 ГБ на новый жесткий диск 120 ГБ?

18

У меня следующая ситуация:

Моя текущая установка Ubuntu (12.04) выполняется с внешнего жесткого диска (250 ГБ), потому что мне было лень покупать новый внутренний жесткий диск. Теперь у меня есть новый внутренний (120 ГБ), и я хочу переместить все на внутренний. Установка Ubuntu new не подлежит обсуждению, поскольку она перонализирована.

К счастью (я надеюсь, что) корневой раздел разделен на LVM, поэтому я надеюсь, что смогу переместить раздел на внутренний жесткий диск меньшего размера.

Это возможно? И где я могу найти помощь?

РЕДАКТИРОВАТЬ: Этот вопрос уже довольно старый и может быть устаревшим. Я добавил версию Ubuntu, которая использовалась тогда.

NotANormalNerd
источник
связанный вопрос - приведенные выше ответы недостаточно ясны ...
MeSo2
вышеупомянутые два ответа не достаточно ясны для меня. Так начался новый пост.
MeSo2

Ответы:

39

Как вы подозреваете, это чрезвычайно элегантно делать с помощью LVM.

Уменьшите существующую установку, чтобы соответствовать меньшему диску.

Физически установите новый жесткий диск, отформатируйте pvcreateего и используйте, vgextendчтобы добавить его в тот же vg, что и корневой раздел.

Используйте pvmoveдля прозрачного перемещения всех данных из старого раздела

Используйте vgreduceдля удаления внешнего жесткого диска из VG. Отключите старый диск / dev / sdOLD.

В приведенном ниже примере:

  • /dev/sdOLD обозначает старый раздел для замены
  • /dev/sdNEW обозначает новый раздел, чтобы занять его место.
  • vgX обозначает объемную группу

Пример: Конечно, вы должны быть на 100% уверены, что используете правильные устройства. Кроме того, необходимо иметь полные и актуальные резервные копии, удаленные из системы.

pvcreate /dev/sdNEW
vgextend vgX /dev/sdNEW
pvmove /dev/sdOLD
vgreduce vgX /dev/sdOLD

Используйте update-grubи grub-installчтобы сделать ваш новый корневой диск загрузочным

Выполнено.

Floyd
источник
Было бы неплохо, если бы вы предоставили конкретные примеры.
Исааклв
12
Ах, это здорово, проголосовав за действительный принятый пост с полезной информацией. Я намеренно НЕ привел конкретный пример, потому что опасность состоит в том, что кто-то бездумно скопирует и вставит это и уничтожит его / ее данные. Если вы сделаете что-нибудь с lvm, вы сможете найти, что вы держите указатели, которые я даю.
Флойд
2
Работал и на Cento7. Шаги, представленные здесь, были достаточно для меня, чтобы немного поучиться и немного погуглить. Точечно
terary
centos: используйте grub2-mkconfig -o "$ (readlink -e /etc/grub2.cfg)" ... отсюда
учебный курс
21

Во-первых, если для текущей установки вы использовали весь диск объемом 250 ГБ, вам нужно уменьшить его до размера диска 120 ГБ. Вы можете сжать только файловую систему ext4, пока она не смонтирована, поэтому вам нужно будет загружаться с работающей системы Ubuntu (CD или USB) или специализированной работающей системы поддержки, такой как GParted live . Вы можете использовать resize2fsили GParted, чтобы изменить размер существующей файловой системы.

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

В следующем описании я покажу, как перейти с физического тома /dev/sdb1на физический том /dev/sda1с именем существующей группы томов oldvg. Обязательно настройте буквы дисков и номера разделов в соответствии с вашей системой.

Чтобы сделать прямой перевод:

  1. Разбить новый диск, используя инструмент разделения на ваш выбор ( cfdisk, fdisk, parted...). Смотрите, например, Как добавить дополнительный жесткий диск?
  2. Создайте физический том на новом диске: pvcreate /dev/sda1
  3. Добавьте этот физический том в существующую группу томов, содержащую логические тома, которые вы хотите переместить: vgextend oldvg /dev/sda1
  4. Переместите логические тома с одного физического тома на другой: pvmove /dev/sdb1 /dev/sda1
  5. Разделите существующую группу томов на две части: vgsplit oldvg newvg /dev/sda1

Другой способ - сделать существующие логические тома зеркальным томом lvconvert --mirror, настроить зеркало на новом диске, а затем разделить зеркала lvconvert --splitmirrors. Таким образом, вы получаете две копии своих данных, и после разделения каждая копия ведет свою жизнь.

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

chroot /mnt
# if the name of the volume group has changed, edit /etc/fstab
update-grub
grub-install /dev/sda

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

Жиль "ТАК - прекрати быть злым"
источник
1
Как ответ, который в основном говорит, что pvadd, pvmove, pvremoveпринят по ЭТОМУ, вне меня ...
Иш
Слишком сложно и не то, что ему нужно
Флойд