Как правильно перенести виртуальную машину на диск меньшего размера?
Доброго времени суток.
У меня такая ситуация нужно перенести систему с большего диска на меньший, причем структура такая. Диск 100Гб, boot раздел fat32, остальное в LVM — в системе используется не более 20Гб, нужно перенести на диск с 50Гб сохраняя рабочее состояние, на несколько часов машину можно потушить.
Для тестов я создал виртуалку и пробую на ней. Всё ли верно и есть ли способ упростить всё это?
Общий алгоритм переноса на новый диск я вижу таким
1. Подключаем новый диск /dev/sdb
2. Загружаемся с LiveCD (sysresccd)
3. Разбиваем новый диск посредством fdisk как целевой (sfdisk -d не катит, т.к новый диск меньше)
(Почему не получилось создать /dev/sdb5 с началом 501760, fdisk показал первым сектором 501758 я так и не понял)
fdisk -l /dev/sda
Disk /dev/sda: 10 GiB
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 499711 248832 83 Linux
/dev/sda2 501758 20969471 10233857 5 Extended
/dev/sda5 501760 20969471 10233856 8e Linux LVM
fdisk -l /dev/sdb
Disk /dev/sdb: 8 GiB
Device Boot Start End Blocks Id System
/dev/sdb1 * 2048 499711 248832 83 Linux
/dev/sdb2 501758 16777215 8137729 5 Extended
/dev/sdb5 503808 16777215 8136704 8e Linux LVM
4. Копируем загрузочный раздел
dd if=/dev/sda1 of=/dev/sdb1
5. Далее возникает вопрос как правильно скопировать LVM
Добавляем в VG новый диск, уменьшим текущую VG группу что бы она смогла перенестить на новый, переносим данные командой pvmove, и удаляем старый диск из VG (можно отключать)
6. Опять же в LiveCD установим загрузчик
Примонтируем LVM root раздел, создадим симлинки на каталоги proc, dev,sys сделаем chroot и собственно установим grub
Можно перезагружаться и пользоваться.
Эти все операции занимают много времени и вызывают некоторые неудобства, как это можно упростить? Пробовал переносить Clonezilla устройство на устройство но оказалось так нельзя.
Читал что можно снимать образ dd, заполнять нулями, делать бэкап. Но нужен внешнее хранилище или флешка, короче плохо всё это. Могу написать пошаговый how to в песочницу, нужно? И можно ли это делать как-то в лайв режиме не потушив машину? Спасибо за ответы.
UPD: Примечание. Может будет яснее зачем это делается. После создания виртуальной машины через Xen, VirtualBox, Hyper-V, WmWare мы указываем максимальный размер HDD который либо резервируется под полный объем, либо занимает фактический размер и расширяется постепенно — этот диск обычно можно увеличить при выключенной машине, но уменьшить нет. А внутри, читай выше вопрос, уже boot раздел и lvm. Сжав внутри виртуалки раздел LVM внешне диск не изменится — именно по этому для миграции на диск меньшего размера нужно делать все вышеописанное.
У меня такая ситуация нужно перенести систему с большего диска на меньший, причем структура такая. Диск 100Гб, boot раздел fat32, остальное в LVM — в системе используется не более 20Гб, нужно перенести на диск с 50Гб сохраняя рабочее состояние, на несколько часов машину можно потушить.
Для тестов я создал виртуалку и пробую на ней. Всё ли верно и есть ли способ упростить всё это?
Общий алгоритм переноса на новый диск я вижу таким
1. Подключаем новый диск /dev/sdb
2. Загружаемся с LiveCD (sysresccd)
3. Разбиваем новый диск посредством fdisk как целевой (sfdisk -d не катит, т.к новый диск меньше)
(Почему не получилось создать /dev/sdb5 с началом 501760, fdisk показал первым сектором 501758 я так и не понял)
fdisk -l /dev/sda
Disk /dev/sda: 10 GiB
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 499711 248832 83 Linux
/dev/sda2 501758 20969471 10233857 5 Extended
/dev/sda5 501760 20969471 10233856 8e Linux LVM
fdisk -l /dev/sdb
Disk /dev/sdb: 8 GiB
Device Boot Start End Blocks Id System
/dev/sdb1 * 2048 499711 248832 83 Linux
/dev/sdb2 501758 16777215 8137729 5 Extended
/dev/sdb5 503808 16777215 8136704 8e Linux LVM
4. Копируем загрузочный раздел
dd if=/dev/sda1 of=/dev/sdb1
5. Далее возникает вопрос как правильно скопировать LVM
Добавляем в VG новый диск, уменьшим текущую VG группу что бы она смогла перенестить на новый, переносим данные командой pvmove, и удаляем старый диск из VG (можно отключать)
6. Опять же в LiveCD установим загрузчик
Примонтируем LVM root раздел, создадим симлинки на каталоги proc, dev,sys сделаем chroot и собственно установим grub
Можно перезагружаться и пользоваться.
Эти все операции занимают много времени и вызывают некоторые неудобства, как это можно упростить? Пробовал переносить Clonezilla устройство на устройство но оказалось так нельзя.
Читал что можно снимать образ dd, заполнять нулями, делать бэкап. Но нужен внешнее хранилище или флешка, короче плохо всё это. Могу написать пошаговый how to в песочницу, нужно? И можно ли это делать как-то в лайв режиме не потушив машину? Спасибо за ответы.
UPD: Примечание. Может будет яснее зачем это делается. После создания виртуальной машины через Xen, VirtualBox, Hyper-V, WmWare мы указываем максимальный размер HDD который либо резервируется под полный объем, либо занимает фактический размер и расширяется постепенно — этот диск обычно можно увеличить при выключенной машине, но уменьшить нет. А внутри, читай выше вопрос, уже boot раздел и lvm. Сжав внутри виртуалки раздел LVM внешне диск не изменится — именно по этому для миграции на диск меньшего размера нужно делать все вышеописанное.
Похожие публикации
Запуск VirtualBox через TihgtVNC = исчезновение VNC
Как правильно перевести всю инфраструктуру на виртуализацию?
Нет комментариев