The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Восстановление из бэкапа VM (KVM+LVM)"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Виртуализация / Linux)
Изначальное сообщение [ Отслеживать ]

"Восстановление из бэкапа VM (KVM+LVM)"  +/
Сообщение от ws (ok) on 12-Окт-11, 17:49 
Помогите разобраться. Не могу восстановить 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...
И все дальше тишина...

Я так понимаю она не может найти диск хотя в настройках он есть. Что я упускаю сделать?


Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Восстановление из бэкапа VM (KVM+LVM)"  +/
Сообщение от zd3n (ok) on 13-Окт-11, 08:05 
Что-то слишком намудрёно и непонятно....

> Как я делаю бэкап:
> Делаю снэпшот с последующим монтированием раздела 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


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Восстановление из бэкапа VM (KVM+LVM)"  +/
Сообщение от ws (ok) on 13-Окт-11, 23:12 
> Что-то слишком намудрёно и непонятно....
>> Как я делаю бэкап:
>> Делаю снэпшот с последующим монтированием раздела 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. Могу прокомментировать процесс восстановления если что-то непонятно в командах...

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Восстановление из бэкапа VM (KVM+LVM)"  +/
Сообщение от ws (ok) on 14-Окт-11, 03:03 
Могу добавить только, что если я в ВМ загружаюсь с 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]->[гостевой диск]?

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Восстановление из бэкапа VM (KVM+LVM)"  +/
Сообщение от zd3n (ok) on 14-Окт-11, 10:12 
Гостевая машина в каком режиме работает? Паравиртуализация или полная виртуализация?
Как описаны настройки дисковых устройств в конфиге вир.машины?

Я у себя для 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-иваю, отмонтирую, запускаю вир.машину.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Восстановление из бэкапа VM (KVM+LVM)"  +/
Сообщение от ws (ok) on 14-Окт-11, 11:47 
> Гостевая машина в каком режиме работает? Паравиртуализация или полная виртуализация?
> Как описаны настройки дисковых устройств в конфиге вир.машины?

Полная виртуализация. Сам диск виден из под гостевой ОС, т.к. при загрузке с 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. Как правильно восстановить груб для гостевой ОС под хостом?

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Восстановление из бэкапа VM (KVM+LVM)"  +/
Сообщение от ws (ok) on 17-Окт-11, 01:23 
решение здесь - http://www.linux.org.ru/forum/linux-install/6873075?lastmod=...
Тема закрыта.
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру