Помогите разобраться. Не могу восстановить VM из бэкапа.
VM построена на базе KVM c хранилищем в LVM.В гостевой системе на один раздел установлена Ubuntu Server 11.04 (на хосте /dev/virt/mamba).
Хостовая машины Fedora 15Как я делаю бэкап:
Делаю снэпшот с последующим монтированием раздела VM.
> lvcreate -L100M -nmamba-backup virt
> kpartx -a /dev/virt/mamba-backup
> mount /dev/mapper/virt-mamba--backup1Бэкаплю
> duplicity --no-encryption --exclude /mnt/tmp --exclude /mnt/proc --exclude /mnt/mnt --exclude /mnt/lost+found /mnt file://mamba
> dd if=/dev/virt/mamba of=mamba-mbr.bin bs=512 count=1Сохраняю настройки VM
> virsh dumpxml mamba >mamba-dupli.xmlА теперь пытаюсь восстановить машину под другим доменом
> lvcreate -L10G -nmamba-dupli virt
> dd if=mamba-mbr.bin of=/dev/virt/mamba-dupli
> kpartx -a /dev/virt/mamba-dupli
> mkfs -t ext4 /dev/mapper/virt-mamba--dupli1
> mount /dev/mapper/virt-mamba--dupli1 /mnt
> duplicity --force --no-encryption file://mamba /mnt/
> echo "mamba-dupli" > /mnt/etc/hostnameПрописываем UUID /dev/mapper/virt-mamba--dupli1 для корневого раздела в /mnt/etc/fstab
> mkdir /mnt/proc
> mount -t proc none /mnt/proc/
> mount -o bind /dev/ /mnt/dev/
> chroot /mnt/ /bin/bash
> update-grub
> grub-install /dev/mapper/virt-mamba--dupli
> exit
> umount /mnt/proc/ /mnt/dev/ /mnt/
> kpartx -d /dev/virt/mamba-dupliИзменяю записи в mamba-dupli.xml, что бы они отличались от оригинальной VM:
<name>mamba-dupli</name>
<uuid>31e107b3-e1ae-416f-a202-a2fb0aac7491</uuid>
<source dev='/dev/virt/mamba-dupli'/>
<mac address='52:54:00:8f:90:d8'/>Регистрирую VM
> virsh define mamba-dupli.xmlПосле этого пытаюсь загрузить VM, но она виснет с надписью
Booting from Hard Disk...
И все дальше тишина...Я так понимаю она не может найти диск хотя в настройках он есть. Что я упускаю сделать?
Что-то слишком намудрёно и непонятно....> Как я делаю бэкап:
> Делаю снэпшот с последующим монтированием раздела VM.
>> lvcreate -L100M -nmamba-backup virt
>> kpartx -a /dev/virt/mamba-backup
>> mount /dev/mapper/virt-mamba--backup1Какой это снэпшот?
Это создание раздела в 100мб в группе virt, маппирование и затем монтирование. Команды правильные? Почему 2 тире в третьей команде? Куда монтируется том не указано. Каким образом монтируется новый том без создания файловой системы?Дальше тоже лажа какая-то...
Может проще сделать так:
1)lvcreate --size 100m --snapshot --name mamba-snapshot /dev/virt/mamba
2)Дальше в зависимости от того, в каком режиме у нас используется раздел /dev/virt/mamba - эмуляция диска или эмуляция раздела.
Если эмуляция диска, то
kpartx -a /dev/virt/mamba-snapshot
Дальше, если там несколько разделов с файловыми системами, монтируем какие надо.
mount /dev/mapper/virt-mamba-snapshot1 /mnt/backup # virt-mamba-snapshot1 может быть другое, смотреть какое выставлено.
Бекапить можно выборочно, можно просто tar-ить... или как больше нравится....
Если же эмулируется раздел, то маппировать не нужно, можно сразу монтировать.
mount /dev/virt/mamba-snapshot /mnt/backup
> Что-то слишком намудрёно и непонятно....
>> Как я делаю бэкап:
>> Делаю снэпшот с последующим монтированием раздела VM.
>>> lvcreate -L100M -nmamba-backup virt
>>> kpartx -a /dev/virt/mamba-backup
>>> mount /dev/mapper/virt-mamba--backup1
> Какой это снэпшот?
> Это создание раздела в 100мб в группе virt, маппирование и затем монтирование.
> Команды правильные? Почему 2 тире в третьей команде? Куда монтируется том
> не указано. Каким образом монтируется новый том без создания файловой системы?Прошу прощения - команды обрезалась. Полностью так:
lvcreate -L100M -nmamba-backup -s /dev/virt/mamba
kpartx -a /dev/virt/mamba-backup
mount /dev/mapper/virt-mamba--backup1 /mntдва тире делает kpartx при мапинге заменяя в названии одно тире.
>[оверквотинг удален]
> 2)Дальше в зависимости от того, в каком режиме у нас используется раздел
> /dev/virt/mamba - эмуляция диска или эмуляция раздела.
> Если эмуляция диска, то
> kpartx -a /dev/virt/mamba-snapshot
> Дальше, если там несколько разделов с файловыми системами, монтируем какие надо.
> mount /dev/mapper/virt-mamba-snapshot1 /mnt/backup # virt-mamba-snapshot1 может быть
> другое, смотреть какое выставлено.
> Бекапить можно выборочно, можно просто tar-ить... или как больше нравится....
> Если же эмулируется раздел, то маппировать не нужно, можно сразу монтировать.
> mount /dev/virt/mamba-snapshot /mnt/backupВсе, что вы описали - я так и делаю и это все работает. Т.е. к самому бэкапу у меня вопросов нет. У меня не получается восстановить полностью диск виртуальной машины из этого бэкапа. Т.е. выполнив те действия, которые я описал - я получаю диск (если смотреть его guestfs-browser то он виден), но почему-то виртуальная машина во время загрузки его не видит. Я так понимаю, при восстановлении, что-то еще упустил при создании диска или нужно изменить какие-то настройки ВМ.
p.s. Могу прокомментировать процесс восстановления если что-то непонятно в командах...
Могу добавить только, что если я в ВМ загружаюсь с livecd(SystemRescueCD) и делаю тот же chroot c установкой груба то машина при перезагрузке загружается с со своего диска, т.е. все работает. Явная проблема в некорректном прописывании груба после чирута от хоста.
Отличие только в имени диска в загрузочный сектор, которого ставится груб:
- под хостом - /dev/mapper/virt-mamba--dupli
- под гостем - /dev/vdaТ.е. проблема где-то здесь:
mount -t proc none /mnt/proc/
mount -o bind /dev/ /mnt/dev/
chroot /mnt/ /bin/bash
update-grub
grub-install /dev/mapper/virt-mamba--dupliдополнительно смонтировал /sys в /mnt/sys - не помогло.
Чем отличается процесс чирутинга для устройств [хост диск]->[гостевой диск] от [гостевой livecd]->[гостевой диск]?
Гостевая машина в каком режиме работает? Паравиртуализация или полная виртуализация?
Как описаны настройки дисковых устройств в конфиге вир.машины?Я у себя для win машин (полная виртуализация) диски описываю в таком формате
disk = [ 'phy:/dev/vg_emc1/winc01,ioemu:hda,w', 'file:/home/work/W2k3_z2.iso,hdc:cdrom,r' ]Для linux машин в паравиртуальном режиме описываю так
disk = [ "phy:/dev/vg/myvmroot1,xvda,w", "phy:/dev/vg/myvmswap1,xvdb1,w", "phy:/dev/vg/myvmopt1,xvdc1,w", "phy:/dev/vg/myvmhome1,xvdd1,w" ]Девайс xvda эмулируется в режиме диска, там своя таблица разделов и 2 логических диска - / и /var.
Для доступа к этим разделам из хостовой машины возможен при использовании kpartx.
Девайсы xvdb1, xvdc1, xvdd1 эмулируются в виде разделов. Т.е. для доступа к ним kpartx не нужен. Для доступа к ним из хоста достаточно просто смонтрировать том /dev/vg/myvmopt1, /dev/vg/myvmhome1 и т.п.(естественно при остановленном госте) Это гораздо удобнее.В данном случае бекапить удобнее так:
xvda (/ и /var) - делаю снэпнот и через dd копирую на раздел lvm такого же размера, либо кладу в файл *.img на имеющуюся фс. Разворачивать в обратном порядке. Быстро и удобно, т.к. эти разделы у меня минимального размера.
Данные с /dev/vg/myvmopt1, /dev/vg/myvmhome1 удобнее делать так: делаю снэпшот, монтирую на хосте, tar-ю нужные файлы. При восстановлении достаточно создать lvm-раздел нужного размера (не обязательно по размеру исходного), форматирую, монтирую на хосте, раз-tar-иваю, отмонтирую, запускаю вир.машину.
> Гостевая машина в каком режиме работает? Паравиртуализация или полная виртуализация?
> Как описаны настройки дисковых устройств в конфиге вир.машины?Полная виртуализация. Сам диск виден из под гостевой ОС, т.к. при загрузке с livecd внутри ВМ - я его вижу(о чем я писал постом выше). Вот кусок дампа конфига для диска:
<disk type='block' device='disk'>
<driver name='qemu' type='raw'/>
<source dev='/dev/virt/mamba-dupli'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</disk>>[оверквотинг удален]
> остановленном госте) Это гораздо удобнее.
> В данном случае бекапить удобнее так:
> xvda (/ и /var) - делаю снэпнот и через dd копирую на
> раздел lvm такого же размера, либо кладу в файл *.img на
> имеющуюся фс. Разворачивать в обратном порядке. Быстро и удобно, т.к. эти
> разделы у меня минимального размера.
> Данные с /dev/vg/myvmopt1, /dev/vg/myvmhome1 удобнее делать так: делаю снэпшот, монтирую
> на хосте, tar-ю нужные файлы. При восстановлении достаточно создать lvm-раздел нужного
> размера (не обязательно по размеру исходного), форматирую, монтирую на хосте, раз-tar-иваю,
> отмонтирую, запускаю вир.машину.Когда я снимаю образ диска /dev/virt/mamba с помощью dd или qemu-img или virt-clone и потом восстанавливаю его - то все работает. Проблема в другом - размер образа слишком большой (в ВМ существует только один корневой раздел), а уменьшить его отделив раздел /boot или / пока нет возможности по административным ограничениям.
Поэтому, сформулирую вопрос по другому - у меня есть tar-архив корневого раздела гостевой ОС(в частности Ubuntu). Как его правильно развернуть на другом хосте?
Ход моего восстановления корректный при восстановлении груба из под ВМ с помощью livecd. Как правильно восстановить груб для гостевой ОС под хостом?
решение здесь - http://www.linux.org.ru/forum/linux-install/6873075?lastmod=...
Тема закрыта.