Детальні вказівки щодо копіювання віртуальних машин за допомогою блоків
Ці інструкції стосуються VM з використанням диска, що надається LVM, і передбачає, що Python є на кожному з хостів
Завантажте сценарій blockync.py з https://gist.github.com/rcoup/1338263 та поставте як вихідний, так і цільовий хост у папку / home / user.
Попередник
- Потрібно мати доступ 'ssh' до обох машин (джерела та цілі) для вашого користувача.
Вам також потрібно мати "sudo" доступ до "root" на обох машинах.
Крім того, ви можете зробити все як root, але лише якщо ваш ключ ssh надає вам доступ до кореневої системи принаймні до цільової машини. ** У цьому випадку видаліть ім'я користувача з командних рядків.
Приклад налаштувань
- Віртуальна машина знаходиться на хості dom0, відомому як chewie
- Цільове місце призначення на хості dom0, відомому як дарт і мав тут внутрішній IP 10.10.10.38 (для нашого прикладу)
- У нашому реальному випадку ми використовуємо centos 7 як операційну систему dom0 на обох машинах
- ВІРТУАЛЬНА машина, в якій ми рухаємося, називається ЛАРРІ
- Користувач, який здійснює дію, є USER (яке буде ваше ім’я)
- DOM0 означає фактичний фізичний сервер
Порядок
Початкові кроки на вихідному хості
- Увійдіть до хоста dom0, який наразі має машину ("вихідний" хост), наприклад:
ssh user@chewie.domainname.com.au
- Залишайтеся своїм користувачем, тому не ставайте користувачем sudo * Перелічіть машини
sudo virsh - всі
- Вивантажте визначення машини за допомогою, наприклад:
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
Якщо ви не можете скопіювати через ключі кішку larry.xml і скопіювати її, тоді ви можете сш в іншу машину і створити файл і вставити його.
Знайдіть розмір та назву диска VM за допомогою
sudo lvs - одиниці B
.
** Команда вище повинна показувати розмір точно в байтах. ** Назва диска машини знаходиться в першому стовпчику списку, група гучності - у другій, а розмір - в останньому. ** Визначте ім'я пристрою як / dev // ** Перевірте його командою 'll' Наприклад, у цьому виході: vm_larry vg1 -wi-ao ---- 69793218560B
LV VG Attr LSize Походження даних басейну% Мета% Журнал переміщення 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
- Будьте власним користувачем. тобто не вкорінюються.
Створіть файл визначення обсягу, наприклад:
vi larry.domainname.com.au-vol.xml
або nano larry.domainname.com.au-vol.xml
із наступними рядками: ПРИМІТКА - Вам потрібно буде взяти розмір у байтах від оригінальної програми VM та поставити його нижче в сценарій. Командою на вихідній машині для розміру було sudo lvs - юнити 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 байт-диска для VM larry, зміни в міру необхідності для фактичного VM.
Примітка: ім'я та остання частина шляху повинні збігатися і використовуватимуться як нове ім’я диска.
Створіть новий диск із визначення, використовуючи
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
Найкращою практикою було б відключення VM на вихідному хості перед тим, як зробити остаточну синхронізацію, але цього не потрібно робити. (відключення virsh NameOfMachine)
Якщо ви ще не знаходитесь на вихідному хості, завантажте скрипт blockync.py з https://gist.github.com/rcoup/1338263
Якщо ваше ім'я користувача є користувачем (наприклад), тоді скопіюйте сценарій blockync.py на обидва машини в / home / user та chown user: user та chmod 755.
- Якщо це вже не на цільовому хості, скопіюйте його, наприклад:
scp -p blockync.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-гігабайтного диска.
Однак ви можете робити синхронізацію під час використання VM; наступні синхронізації можуть бути до 25 відсотків швидшими
Сценарій роздруковує параметри, які він використовує (може бути повідомлення про застарілий модуль, це нормально). Далі, він відображає команду ssh, яку вона використовує, і запускає її (ви побачите повідомлення авторизованого персоналу лише тоді, коли це зробить). Під час синхронізації він відображатиме загальну кількість скопійованих блоків та середню швидкість. Нарешті, він друкує повідомлення про завершення з кількістю секунд, які знадобилося.
Що потрібно знати
Ви можете скасувати синхронізацію з CTRL C і перезапустити її пізніше, запустивши команду ще раз
Останні кроки на цільовому вузлі
- Увійти до цільового хоста, наприклад
ssh user@darth.domainname.com.au
- Створіть віртуальну машину, наприклад:
virsh визначити larry.xml
- Запустіть щойно визначений апарат, наприклад:
sudo virsh start larry
- Позначте його для початку хості завантаження, наприклад:
sudo virsh автозапуск larry
Примітка. Можливо, буде потрібно змінити деталі VM, щоб відповідати новій обстановці.