Живая миграция - это процесс перемещения работающей виртуальной машины (ВМ) с одного физического сервера на другой, не нарушая доступность виртуальной машины для пользователей.
Целью динамической миграции виртуальной машины является обеспечение возможности обслуживания или обновления виртуальной машины без каких-либо простоев пользователей виртуальной машины во время миграции. Живая миграция также известна как плавная живая миграция, когда конечный пользователь не видит заметных простоев во время процесса миграции.
Произведена настройка живой миграции.
На этапе настройки динамической миграции исходный сервер создает соединение с целевым сервером. Это соединение передает данные конфигурации виртуальной машины на конечный сервер. Скелетная виртуальная машина настроена на конечном сервере, а память выделена для целевой виртуальной машины.
Страницы памяти передаются от исходного узла к целевому узлу.
На втором этапе динамической миграции память, выделенная для мигрирующей виртуальной машины, копируется по сети на конечный сервер. Эта память называется «рабочим набором» переносимой виртуальной машины. Страница памяти составляет 4 КБ.
Измененные страницы переносятся.
Третий этап динамической миграции - это процесс копирования памяти, который дублирует оставшиеся измененные страницы памяти для «тестовой виртуальной машины» на конечном сервере. Исходный сервер передает состояние процессора и устройства виртуальной машины на конечный сервер.
Дескриптор хранилища перемещается с исходного сервера на конечный сервер.
На четвертом этапе динамической миграции управление хранилищем, связанным с «тестовой виртуальной машиной», например любыми файлами виртуального жесткого диска или физическим хранилищем, подключенным через виртуальный адаптер Fibre Channel, передается на сервер назначения.
Виртуальная машина подключена к сети на конечном сервере.
На пятом этапе динамической миграции конечный сервер теперь имеет обновленный рабочий набор для «тестовой виртуальной машины», а также доступ к любому хранилищу, используемому «тестовой виртуальной машиной». В этот момент «тестовая виртуальная машина» возобновляется.
Чистка сети происходит.
На последнем этапе динамической миграции перенесенная виртуальная машина работает на конечном сервере. В этот момент сообщение отправляется сетевому коммутатору. Это сообщение приводит к тому, что сетевой коммутатор получает новые MAC-адреса перенесенной виртуальной машины, чтобы сетевой трафик к «тестовой виртуальной машине» и обратно мог использовать правильный порт коммутатора.
• Количество измененных страниц на виртуальной машине, которую нужно перенести - чем больше количество измененных страниц, тем дольше виртуальная машина будет оставаться в состоянии миграции.
• Доступная пропускная способность сети между исходным и целевым серверами.
• Конфигурация оборудования исходного и конечного серверов.
• Загрузка на исходном и конечном серверах.
• Доступная пропускная способность (сеть или Fibre Channel) между серверами и общим хранилищем.
Создание хранилища пулов NFS. Пулы NFS - это ресурсы хранения, предоставляемые хостами OVP, которые используются виртуальными машинами для целей хранения.
1.1 Настройка каталога NFS Pool.
Создайте каталог пула.
# mkdir -p /export/x86-64-kvm-guest-pool
Отредактируйте /etc /exports, чтобы добавить соответствующую строку экспорта.
# cat /etc/exports
/export/x86-64-kvm-guest-pool *(rw,no_subtree_check,insecure,no_root_squash)
Скажите серверу NFS перезагрузить файл конфигурации экспорта.
# exportfs –a
1.2 Подключиться к гипервизору QEMU.
# virsh connect qemu:///system
1.3 Загрузите файл конфигурации для пула NFS.
Перед загрузкой файла конфигурации рекомендуется убедиться, что переменная POOL_HOST содержит полное имя, а не локальное имя, например localhost. Использование полностью определенных имен позволяет виртуальным машинам находить необходимые ресурсы хранения, даже если они переносятся на разные хосты OVP.
# cat xmlDir/x86-64-kvm-guest-pool.xml
<pool type="netfs">
<name>x86-64-kvm-guest-pool</name>
<source>
<host name='HOST_NAME'/>
<dir path='/export/x86-64-kvm-guest-pool/'/>
</source>
<target>
<path>/export/images/</path>
</target>
</pool>
# virsh pool-define xmlDir/x86-64-kvm-guest-pool.xml
ПРИМЕЧАНИЕ. Создание всех файлов примеров со значениями по умолчанию.
# libvirt-xml-examples
# ls
x86-64-kvm-guest-glusterfs-qcow2.xml x86-64-kvm-guest-local-qcow2.xml
x86-64-kvm-guest-nfs-qcow2.xml x86-64-kvm-guest-pool
x86-64-kvm-guest-glusterfs-raw.xml x86-64-kvm-guest-local-raw.xml
x86-64-kvm-guest-nfs-raw.xml x86-64-kvm-guest-pool.xml
1.4 Запустите пул хранения
# virsh pool-start x86-64-kvm-guest-pool
Примечание: virsh - это инструмент интерфейса командной строки для управления гостевыми виртуальными машинами и гипервизором. Инструмент командной строки virsh построен на API управления libvirt и работает как альтернатива команде qemu-kvm и графическому приложению virt-manager.
1.5 Создайте том хранения в пуле хранения x86-64-kvm-guest-pool.
# virsh vol-create-as x86-64-kvm-guest-pool x86-64-kvm-guest-vda.raw 10G --format raw
Запуск виртуальной машины на исходном сервере.
2.1 Создание Linux-моста для сетевого подключения к виртуальной машине
brctl addbr <BRIDGE_NAME>
ifconfig <INTERFACE_NAME> 0.0.0.0 promisc up
brctl addif <BRIDGE_NAME> <INTERFACE_NAME>
ifconfig <BRIDGE_NAME> <BRIDGE_IP> up
2.2 Отредактируйте файл конфигурации виртуальной машины.
# cp x86-64-kvm-guest-nfs-raw.xml <NAME_FOR_CONF_FILE>.xml
#vim <NAME_FOR_CONF_FILE>.xml
<domain type='kvm'>
<name>L2_VM2</name> -name for VM
………
<cpu mode='custom' match='exact'>
<model fallback='allow'>Conroe</model>
<topology sockets='1' cores='3' threads='1'/> - assign vcpus to VM
</cpu>
……..
<devices>
<emulator>/usr/bin/kvm</emulator>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<source file='….*iso' startupPolicy='optional'> - mention ISO file
</source>
<target dev='hdc' bus='ide'/>
<readonly/>
<serial></serial>
<boot order='1'/>
<alias name='ide0-1-0'/>
<address type='drive' controller='0' bus='1' target='0' unit='0'/>
</disk>
...... ..
-. назначить здесь хранилище, созданное в разделе 1.5 VDA …… ..
- назначить имя для моста, созданного в разделе 2.1 - уникально для каждой виртуальной машины
2.3 Запустить виртуальную машину.
2.3.1. Подключение к гипервизору QEMU.
# virsh connect qemu:///system
2.3.2 Загрузите файл конфигурации виртуальной машины.
#virsh define xmlDir/x86-64-kvm-guest-nfs-raw.xml - created in section 2.2
2.3.3 Запустить ВМ.
Это первая загрузка виртуальной машины для загрузки образа установщика. Установите гостевой образ.
#virsh start VM_NAME
Убедитесь, что машина работает.
#virsh list Id Name State -------------------------------------------- -------- 8 x86-64-kvm-guest работает может получить доступ к графическому интерфейсу виртуальной машины с помощью сеанса vnc: - порт 5900 vnc.
2.4.4. После успешного внедрения ОС. Отредактируйте файл конфигурации виртуальной машины.
<devices>
<emulator>/usr/bin/kvm</emulator>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<source file='….*iso' startupPolicy='optional'> - remove ISO file name .
</source>
<target dev='hdc' bus='ide'/>
<readonly/>
<serial></serial>
<boot order='1'/>
<alias name='ide0-1-0'/>
Выполните шаг, указанный в разделе 2.3, чтобы запустить виртуальную машину.
Миграция виртуальной машины.
В этом упражнении предполагается, что виртуальная машина x86-64-kvm-guest работает на узле OVP SOURCE_HOST и должна быть перенесена в реальном времени на узел OVP TARGET_HOST. Прежде чем приступить к работе с этим разделом, убедитесь, что обе машины доступны друг другу.
3.1 Создайте мост с тем же именем в TARGET_HOST, которое было создано в разделе 2.1.
3.2 Включите общий пул NFS на TARGET_HOST.
# scp xmlDir/x86-64-kvm-guest-pool.xml root@TARGET_HOST_IP:xmlDir.
Следуйте разделу 1.3 и 1.4 раздела Target_HOST.
3.3 На SOURCE_HOST запустите миграцию.
# virsh migrate
--live \
--p2p \ // interface name used for migration
--verbose \
--x86-64-kvm-guest \
qemu+tcp://TARGET_HOST/system
Верфий, если миграция прошла успешно. Запустите команду на TARGET_HOST.
#virsh list
Id Name State
----------------------------------------------------
8 x86-64-kvm-guest running