Подробные инструкции по копированию виртуальных машин с использованием blocksync.py
Эти инструкции применяются к виртуальной машине, использующей диск, предоставленный LVM, и предполагают, что Python находится на каждом из хостов.
Загрузите скрипт blocksync.py с веб-сайта https://gist.github.com/rcoup/1338263 и поместите хост-источник и целевой каталог в папку / home / user.
предвестник
- У вас должен быть доступ «ssh» к обоим компьютерам (исходному и целевому) для вашего пользователя.
Вам также необходимо иметь доступ sudo к root на обеих машинах.
В качестве альтернативы вы можете делать все как пользователь root, но только если ваш ключ ssh дает вам root-доступ по крайней мере к целевой машине. ** В этом случае удалите имя пользователя из командной строки.
Пример настроек
- Виртуальная машина находится на хосте dom0, известном как chewie
- Требуемый пункт назначения на хосте dom0, известный как darth, с внутренним IP-адресом 10.10.10.38 (для нашего примера)
- В нашем случае мы используем centos 7 в качестве операционной системы dom0 на обеих машинах.
- ВИРТУАЛЬНАЯ Машина в этом случае, которую мы движемся, называется ЛАРРИ
- Пользователь, выполняющий действие, - ПОЛЬЗОВАТЕЛЬ (который будет вашим именем)
- DOM0 означает фактический физический сервер
Процедура
Начальные шаги на исходном хосте
- Войдите в систему на хосте dom0, на котором в данный момент находится компьютер (хост "source"), например:
ssh user@chewie.domainname.com.au
- Оставайтесь как пользователь, поэтому не становитесь пользователем sudo * Перечислите машины с помощью
судо вирш - все
- Дамп определения машины, используя, например:
sudo virsh dumpxml larry> larry.xml
Скопируйте записанное определение на новый компьютер («целевой» хост), например:
scp -p larry.xml 10.10.10.38:larry.xml
вы можете изменить внутренний ip на имя вашего сервера назначения dom0 ** Примечание: лучше всего использовать ip-адрес для цели, например: scp -p larry.xml user@10.10.10.38: larry.xml
Если вы не можете скопировать из-за ключей cat larry.xml и скопировать его, то вы можете ssh на другой компьютер и создать файл и вставить его.
Найдите размер и имя диска виртуальной машины, используя
sudo lvs - подразделения B
,
** Команда выше должна показывать размер точно в байтах. ** Имя диска машины находится в первом столбце списка, его группа томов - во втором, а размер - в последнем. ** Определите имя устройства как / dev // ** Проверьте его с помощью команды ll. Например, в следующих выходных данных: vm_larry vg1 -wi-ao ---- 69793218560B
LV VG Attr LSize Исходные данные пула% Meta% Журнал перемещения Cpy% Синхронизация
lv_root vg1 -wi-ao ---- 53687091200B
lv_swap vg1 -wi-ao ---- 17179869184B
vm_vsrv1 vg1 -wi-ao ---- 193273528320B
vm_vsrv10 vg1 -wi-ao ---- 64424509440B
vm_vsrv11 vg1 -wi-ao ---- 161061273600B
vm_vsrv12 vg1 -wi-ao ---- 204010946560B
vm_vsrv2 vg1 -wi-ao ---- 140110725120B
vm_vsrv3 vg1 -wi-ao ---- 128849018880B
vm_larry vg1 -wi-ao ---- 69793218560B
vm_vsrv5 vg1 -wi-ao ---- 257698037760B
vm_vsrv6 vg1 -wi-ao ---- 64424509440B
vm_vsrv7 vg1 -wi-ao ---- 161061273600B
vm_vsrv8 vg1 -wi-ao ---- 64424509440B
vm_vsrv9 vg1 -wi-ao ---- 214748364800B
Начальные шаги на целевом хосте
- Войти на целевой хост, например
ssh user@darth.domainname.com.au
- Оставайтесь как ваш собственный пользователь. т.е. не становитесь root.
Создайте файл определения тома, например:
vi larry.domainname.com.au-vol.xml
или nano larry.domainname.com.au-vol.xml
со следующими строками: ПРИМЕЧАНИЕ. - Вам нужно будет взять размер в байтах от оригинальной виртуальной машины и поместить в скрипт ниже. Команда на исходном компьютере для определения размера была sudo lvs --units B
<volume type='block'>
<name>larry.domainname.com.au</name>
<capacity unit='bytes'>69793218560</capacity>
<allocation unit='bytes'>69793218560</allocation>
<target>
<path>/dev/centos/larry.domainname.com.au</path>
<permissions>
<mode>0600</mode>
<owner>0</owner>
<group>6</group>
<label>system_u:object_r:fixed_disk_device_t:s0</label>
</permissions>
</target>
</volume>
Примечание. Это определение предназначено для диска 69793218560 байт для виртуальной машины. При необходимости измените его для реальной виртуальной машины.
Примечание: имя и последняя часть пути должны совпадать и будут использоваться как новое имя диска.
Создайте новый диск из определения, используя
sudo virsh vol-create --pool centos larry.domainname.com.au-vol.xml
будет сказано, что vol larry.domainname.com.au создан из larry.domainname.com.au-vol.xml
Сделайте файл дискового устройства доступным:
Колесо sudo chgrp /dev/mapper/centos-larry.domainname.com.au
sudo chmod g + rw /dev/mapper/centos-larry.domainname.com.au
Отредактируйте скопированное определение xml, например:
vi larry.xml
Найдите определение диска в файле (найдите «source dev =») и замените устройство на только что созданное (вы можете ls / dev / centos / увидеть vm), например: / dev / drbd4 -> / dev / CentOS / larry.domainname.com.au
Это изменение моста было уникальным для нашей ситуации.
** Найдите любые ссылки на "br1" в разделах интерфейса и измените его на "br0", например, вы меняете исходный мост, поэтому линия выглядит следующим образом
Последние шаги на исходном хосте
Войдите в исходный хост, например
ssh user@chewie.domainname.com.au
Рекомендуется отключить виртуальную машину на исходном хосте перед выполнением окончательной синхронизации, но это не нужно делать. (virsh shutdown NameOfMachine)
Если его еще нет на исходном хосте, загрузите сценарий blocksync.py с веб-сайта https://gist.github.com/rcoup/1338263.
Если ваше имя пользователя - пользователь (например), то скопируйте скрипт blocksync.py на обе машины в / home / user и chown user: user и chmod 755 сценарий.
- Если его еще нет на целевом хосте, скопируйте его туда, например:
scp -p blocksync.py user@10.10.10.38: blocksync.py
- Используйте его для копирования исходного диска на целевой диск, например
Команда, которая делает копирование
sudo -E python blocksync.py / dev / vg1 / vm_larry user@10.10.10.38 /dev/mapper/centos-larry.domainname.com.au -b 4194304
Примечание: первое имя устройства для хоста источника, как определено командой 'lvs'; это от [[chewie]] исходного хоста.
Примечание: это уничтожит содержимое целевого диска, убедитесь, что /dev/mapper/centos-larry.domainname.com.au правильно!
Примечание: синхронизация займет много времени - около 100 секунд на гигабайт, то есть: 90 минут на диск объемом 60 гигабайт.
Однако вы можете выполнить синхронизацию во время использования виртуальной машины; последующие синхронизации могут быть до 25 процентов быстрее
Скрипт распечатает параметры, которые он использует (может появиться сообщение об устаревшем модуле, это нормально). Затем он отображает команду ssh, которую он использует, и запускает ее (вы увидите сообщение об этом только для авторизованного персонала). Во время синхронизации будет отображаться общее количество скопированных блоков и их средняя скорость. Наконец, он выводит сообщение о завершении с указанием количества секунд, которое потребовалось.
Что нужно знать
Вы можете отменить синхронизацию с помощью CTRL C и перезапустить ее позже, снова выполнив команду
Последние шаги на целевом хосте
Примечание: может потребоваться изменить детали виртуальной машины в соответствии с новой средой.