FAQ по vMotion в VMWare vSphere: особенности, типы, настройка

FAQ по vMotion в VMWare vSphere: особенности, типы, настройка

Технология vMotion позволяет перенести запущенную виртуальную машины VMWare с одного физического хоста ESXi на другой без прерывания ее работы и остановки сервисов. В этой статье мы рассмотрим особенности технологии VMWare vMotion: как работает vMotion, какие виды vMotion бывают, как настроить vMotion в VMWare vSphere и как вручную смигрировать виртуальную машину между хостами ESXi или хранилищами с помощью vMotion. Рассмотрим основные способы оптимизации vMotion и решения проблем.

Как мы уже сказали, vMotion позволяет выполнить “живую миграцию” виртуальных машин без простоя и прерывания работы пользователей. Технология vMotion позиционируется не как средство обеспечения высокой доступности ВМ при авариях. В первую очередь это простое и удобное средство переноса продуктивных ВМ, когда вам нужно выполнить обслуживание/обновление/замену физических серверов с установленным гипервизором ESXi или дисковых массивов. Также vMotion является основой технологии распределения (выравнивания) нагрузки на физические сервера — DRS (Dynamic Resource Scheduler)).

Аналогичная технология Microsoft для миграции ВМ между хостами Hyper-V называется Hyper-V Live Migration

vmware vmotion faq

Как работает VMWare vMotion?

Для миграции ВМ между физическим хостами с помощью vMotion используются следующие компоненты VMWare:

  1. Сервер управления VMWare vCenter;
  2. Наличие общего хранилища (подключенного через Fibre Channel, iSCSI или NAS), на котором хранятся файлы виртуальной машины. Благодаря общему хранилищу в SAN сети несколько физических ESXi серверов могут получать доступ к файлам одной ВМ;
  3. Наличие общей быстрой сети ( не менее 1 Гб Ethernet) между исходным и целевым хостом ESXi. При миграции у ВМ сохраняется ее оригинальный MAC адрес, а vMotion оповещает маршрутизатор о том, что местоположение данного MAC адреса изменилось. В результате активные сетевые соединения не теряются;
  4. Совместимость процессоров на хостах, или включённая опция Enhanced vMotion Compatibility (EVC)

Как происходит vMotion? Сначала на целевом хосте создается теневой клон исходной ВМ с такой-же конфигурацией из vmx файла. Эта ВМ-клон видит все файлы ВМ на общем хранилище. Содержимое оперативной памяти и состояние запущенной ВМ передается по сети между исходным и целевым хостом ESXi. vMotion делает снапшот состояния памяти ВМ, копирует его на целевой сервер по сети. vMotion при этом отслеживает изменения в страницах памяти, а затем до-копирует модифицированные сегменты памяти (это может происходить в несколько этапов, каждый раз копируется все меньший объем данных и за меньшее время).

В какой-то момент состояние исходной ВМ замораживается, выполняется копированию изменённых сегментов памяти и команд процессора, и ВМ запускается на целевом ESXi. Весь процесс для 1/10 Гб Ethernet сети для средних размеров ВМ занимает несколько секунд.

Виды VMware vMotion

VMWare под названием vMotion понимает целый стек различных технологий, позволяющих переместить на лету запущенные ВМ между серверами, дисковыми массивами, городами или между наземной и облачной инфраструктурой.

Виды vMotion:

  • Классический vMotion – миграция запущенной ВМ между серверами ESXi;
  • Storage vMotion – онлайн перенос файлов виртуальной машины между хранилищами (дисковыми массивами);
  • Shared-Nothing vMotion – миграция ВМ между серверами ESXi по сети без использования общего хранилища (требуется L2 сеть);
  • Long Distance vMotion – перенос ВМ между удаленными сайтами (максимальная задержка Round Trip Time до 150 мс, в том числе в L3-сетях). Появился в версии vSphere 6.0;
  • Encrypted vSphere vMotion – возможность шифрования ВМ при передачи по сети (доступно в vSphere 6.5);
  • Cross-Cloud Cold и Hot Migration – онлайн и офлайн миграция между наземной и облачной инфраструктурой;

Особенности VMware Storage vMotion

Как мы уже сказали, технология Storage VMotion позволяет переместить файлы запущенной виртуальной машины (виртуальные диски и файлы конфигурации) на другое VMFS/NFS хранилище (LUN, дисковый массива) без остановки ВМ.

Требования для успешного выполнения Storage VMotion:

  • Диски VM должны иметь тип persistent или RDM;
  • Не поддерживается миграция ВМ, во время установки VMware Tools;
  • При миграции нужно учитывать версию VMFS на хранилище. Например, нельзя перенести диск размером более 2 Тб с VMFS5 на VMFS3;
  • Наличие лицензии на хосте ESXi;
  • Хост, на котором запущена ВМ должен иметь доступ к исходному и целевому хранилищу;
  • При копировании для диска виртуальной машины используется технология Changed Block Tracking, которая позволяет отслеживать измененные блоки данных и до-копировать их.

Enhanced vMotion Compatibility (EVC) в VMWare

Режим Enhanced vMotion Compatibility (EVC) для кластеров VMware HA/DRS используется, если кластер построен на хостах с процессорами разных поколений (но не разных производителей!!). При включении EVC для кластера, гипервизор начинает маскировать инструкции CPU, которые поддерживаются не на всех хостах. При включении EVC все функции процессоров хостов ESXi в кластере начинают соответствовать некому базовому минимальному набору инструкций CPU, который задал администратора vSphere в настройках.

Таким образом благодаря EVC вы можете мигрировать ВМ между хостами с разными наборами инструкций процессора.

Нельзя смешивать в одном кластере vSphere хосты с разными вендорами процессоров, например, Intel и AMD. EVC позволяет добиться совместимости между процессорами только одного вендора.

Вы можете включить VMWare EVC на уровне кластера. Перейдите в раздел Configure -> Configuration -> VMWare EVC и нажмите кнопку Edit.

Enhanced vMotion Compatibility (EVC) в VMware ESXi

При включении EVC для кластера вам нужно выбрать режим EVC (для AMD или Intel) и выбрать в выпадающем списке минимальное поколение процессоров вендора, которые имеются в вашем кластере.

включить EVC для Intel процессоров

VMWare рекомендует всегда включать EVC, независимо от того какие хосты у вас в кластере. Так вам будет проще при расширении кластера. Есть даже отдельный документ, где доказывается, что даже если ваши ВМ не будут использовать весть набор инструкций, на производительность это не скажется.

В VMware vSphere 6.7 появились технологии миграции между облаком и on-prem (Cross-Cloud Cold и Hot Migration). Для реализации ВМ в облако теперь можно включать в настройках ВМ Per-VM EVC (доступно в vSphere 6.7 с Hardware Version 14).

Можно получить базовые уровни EVC выставлены для ВМ в кластере из PowerCLI:

Get-VM | Select Name,HardwareVersion,
@{Name='VM_EVC_Mode';Expression={$_.ExtensionData.Runtime.MinRequiredEVCModeKey}},
@{Name='Cluster_Name';Expression={$_.VMHost.Parent}},
@{Name='Cluster_EVC_Mode';Expression={$_.VMHost.Parent.EVCMode}} | ft

Чтобы получить максимально поддерживаемый режим EVC на:
Get-VMHost | Select-Object Name,ProcessorType,MaxEVCMode

Как включить vMotion в VMWare vSphere?

Рассмотрим, как включить vMotion на примере VMWare vSphere 6.7. Для использования vMotion достаточно лицензии Essentials Plus .

vMotion включается на уровне VMkernel виртуального коммутатора хоста ESXi. Выберите хост, перейдите на вкладку Configure -> Networking -> VMkernel adapters.

Выберите ваш VMkernel интерфейс и откройте его свойства (Edit).

faq d0bfd0be vmotion d0b2 vmware vsphere d0bed181d0bed0b1d0b5d0bdd0bdd0bed181d182d0b8 d182d0b8d0bfd18b d0bdd0b0d181d182d180d0bed0b9d0bad0b0 65d225ac4b79a

В свойствах vmk порта в секции Enabled Service включите опцию vMotion.

включить vMotion на vmkernel интерфейсе

В моем примере HA кластер VMWare уже создан и используется vSphere Distributed Switch (VDS).

vMotion: как мигрировать ВМ между серверами

Чтобы с помощью vMotion перенести запущенную ВМ между двумя ESXi хостами, запустите vSphere Client, щелкните по ВМ и выберите Migrate.

запустить mvotion в vmware

Выберите тип миграции, который вы хотите использовать:

  • Change compute resource only — миграция ВМ на другой сервер ESXi;
  • Change storage only — подразумевается Storage vMotion – смена Datastore, на котором хранятся файлы ВМ;
  • Change both compute resource and storage — режим миграции без общего хранилища (vMotion without shared storage/Shared-Nothing), при этом файлы ВМ копируются между хостами черед сеть).

Я выбрал первый вариант.

Мастер миграции предложит выбрать хост, кластер, resourse pool или vApp, в который нужно перенести данную виртуальную машину. Выберите хост. Если vMotion настроен правильно, и не обнаружено конфликтов, в секции Compatibility будет указано: Compatibility checks succeeded.

Если в поле совместимости содержатся какие-то ошибки, нужно внимательно прочитать их и исправить.

Нажмите Next.

выбор esxi хоста, на который нужно смигрировать виртуальную машину, проверка совместимости

Мастер миграции ВМ предложит выбрать в какую сети нужно поместить vNIC сетевой ВМ при миграции. Если вы хотите, чтобы ВМ была доступна после миграции, она должна быть помещена в тот же самый сегмент (VLAN), как и на исходном хосте. Если у вас используется стандартный vSphere Switch, нужно создать одинаковые группы портов (Port Group) на всех ESXi хостах. При использовании VDS, группы портов на всех хостах кластера одинаковые.

выбор сети ВМ при vmotion

На последнем этапе нужно выбрать приоритет задачи миграции vMotion. По-умолчанию используется наивысший приоритете (Schedule vMotion with high priority). Я всегда использую именно его.

Schedule vMotion with high priority - приоритет vMotion

Осталось нажать Next -> Finish и запустится процедура миграции ВМ на другой хост. За статусом миграции можно следить в панели Recent Tasks (задание Relocate virtual machine). В моем случае процесс миграции ВМ с помощью vMotion по 10 Гб Ethernet занял около 3 секунд.

Убедитесь, что ваша ВМ теперь запущена на другом хосте ESXi.

Relocate virtual machine - выполнена vmotion ВМ

Можно переместить запущенную ВМ на другой хост с помощью PowerShell командлета Move-VM из PowerCLI. Например, мы хотим перенести все ВМ с хоста esxi-1 на esxi-2:

Get-VMHost esxi-1|Get-Vm| Move-VM –Destination (Get-VMHost esxi-2)

Почему не работает vMotion?

Перечислим основные причины, из-за которых vMotion может завершаться с ошибкой или миграция ВМ выполняться очень медленно:

  1. Несовместимость CPU (включите режим EVC — Enhanced vMotion Compatibility);
  2. Не включен vMotion на интерфейсе VMkernel;
  3. Некорректные сетевые настройки хоста ESXi или виртуальных коммутаторов, групп портов (неправильно настроенн Jumbo Frames, конфликт IP адресов в сети vMotion, некорректные настройки vSwitch, плохая сеть, потеря пакетов);
  4. Отсутствие общего хранилища (для vSphere до версии 5.)1. В vSphere 5.1 и выше доступен режим Shared-Nothing VMotion;
  5. Недоступен CD/DVD или ISO образ;
  6. Наличие включенных правил Anti-Affinity
  7. В гостевой ВМ идет установка vMware tools;
  8. Если гостевая ОС активно меняет содержимое своей RAM, процесс vMotion может не успевать передавать измененные данные по сети на копию ВМ на другом хосте;
  9. Если на целевом хосте недостаточно CPU или памяти для создания “теневой” ВМ, vMotion завершится с ошибкой.

При ошибках миграции ваша ВМ не выключается, не прекращает работу и по прежнему запущена на исходном хосте.

Как ускорить/оптимизировать vMotion для быстрой миграции ВМ?

Вы можете ускорить миграцию ваших виртуальных машин несколькими способами.

  • В первую очередь желательно использовать максимально производительную сеть между ESXi хостами. Нужно использовать как минимум 10 Gb, а лучше 25Gb сеть (сетевой адаптер вашего ESXi сервера и физический коммутатор должны поддерживать этот режим).
  • Использовать разные физические интерфейсы для трафика vMotion;
  • При миграции vMotion используются потоки. Для одного интерфейса VMkernel, для которого включен vMotion, создается один поток. При этом этот поток может использовать только одно ядро процессора.

Чтобы предоставить для процессов vMotion более одного ядра CPU, нужно создать несколько VMkernel интерфейсов с включенной опцией vMotion и привязать их к одному NIC интерфейсу. Один поток vMotion имеет среднюю пропускную способность около 15 GbE, соответственно, чтобы загрузить сеть 100 GbE вам нужно 6 потоков.

Также можно увеличить количество потоков vMotion (streams) для одного vmkernel интерфейса с помощью опции Migrate.VMotionStreamHelpers в Advanced System Settings.

Виртуализация
FAQ по vMotion в VMWare vSphere: особенности, настройка, типы