Живая миграция - это процесс перемещения работающей виртуальной машины (ВМ) с одного физического сервера на другой, не нарушая доступность виртуальной машины для пользователей. Целью динамической миграции виртуальной машины является обеспечение возможности обслуживания или обновления виртуальной машины без каких-либо простоев пользователей виртуальной машины во время миграции. Живая миграция также известна как плавная живая миграция, когда конечный пользователь не видит заметных простоев во время процесса миграции.
Требование:
- Поддержка аппаратной виртуализации.
- Используйте процессоры от одного производителя. Например, все AMD или все Intel.
- Принадлежит либо к одному домену Active Directory, либо к доменам, которые доверяют друг другу.
- Виртуальные машины должны быть настроены на использование виртуальных жестких дисков или виртуальных дисков Fibre Channel (без физических дисков).
Обзор:
Произведена настройка живой миграции. На этапе настройки динамической миграции исходный сервер создает соединение с целевым сервером. Это соединение передает данные конфигурации виртуальной машины на конечный сервер. Скелетная виртуальная машина настроена на конечном сервере, а память выделена для целевой виртуальной машины.
Страницы памяти передаются от исходного узла к целевому узлу. На втором этапе динамической миграции память, выделенная для мигрирующей виртуальной машины, копируется по сети на конечный сервер. Эта память называется «рабочим набором» переносимой виртуальной машины. Страница памяти составляет 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