ОБЛАСТЬ ТЕХНИКИ
[0001] Заявленное изобретение относится к области виртуальных вычислительных сред, в частности, к подходу по обеспечению миграции виртуальных устройств с сохранением их динамического состояния.
УРОВЕНЬ ТЕХНИКИ
[0002] Виртуальное устройство представляет собой программную или аппаратную систему, имитирующую аппаратное обеспечение компьютера и выполняющую программы для гостевой платформы на хост-платформе. Виртуальное устройство может эмулировать работу различных компонентов аппаратного обеспечения и даже целого реального компьютера. Примером такого устройства могут быть блочные устройства, сетевые карточки и файловые системы, вплоть до виртуальных машин.
[0003] Из предыдущего уровня техники известны реализации различных типов виртуальных устройств на базе технологии vDPA. vDPA - набор инструментов для создания устройств, совместимых со спецификацией VirtlO. Далее представлены несколько примеров таких устройств:
• Виртуальные сетевые адаптеры (vNIC) - виртуальные устройства, которые обеспечивают сетевые подключения для виртуальных машин.
• Виртуальные блочные устройства (vBlock Devices) - виртуальные диски, используемые для хранения данных виртуальных машин.
• Виртуальные устройства SCSI (vSCSI) - используются для взаимодействия с хранилищами данных на уровне виртуальных машин.
• Виртуальные устройства ввода-вывода (vIO) - общая категория устройств, обеспечивающих различные виды ввода и вывода данных для виртуальных машин.
• Виртуальные GPU (vGPU) - виртуализированные графические процессоры, которые позволяют виртуальным машинам использовать графические ускорители для обработки и рендеринга графики.
[0004] Эти примеры демонстрируют, как технология vDPA используется для создания различных типов виртуальных устройств, обеспечивающих высокую производительность и гибкость в виртуализированных средах.
[0005] Виртуальные устройства можно разделить на 2 типа - те, которые могут не иметь состояния (stateless, например, виртуальное блочное устройство, vBlock Device), и те, которые могут нуждаться в этом состоянии (stateful, например, виртуальное устройство файловой системы, vFS Device). Например, vBlock Device не требуется хранить состояние между операциями ввода-вывода, оно не «помнит» предыдущую операцию после ее завершения, поскольку обрабатывает каждый запрос независимо от предыдущих. Напротив, vFS Device отслеживает множество метаданных и состояние операций, т.е. это отслеживание необходимо для обеспечения работоспособности и сами операции зависят от контекста предыдущих запросов.
[0006] Кроме того, существует потребность в возможности миграции таких устройств и ресурсов внутри виртуализированных сред (например, таких как OpenStack, KVM), которая проистекает из необходимостей гибко балансировать нагрузку, обновлять и технически обслуживать, повышать отказоустойчивость и надежность, обеспечивая непрерывность бизнес-процессов.
[0007] Проблематика stateful-устройств заключается в том, что при их миграции необходимо сохранять и восстанавливать их динамическое состояние, например, для vFS Device - информацию об открытых файлах, состояние о структуре каталогов, данных и атрибутов файлов, информацию о свободном пространстве, журналах транзакций и т.д. Если устройство располагает динамическим, изменяющимся во времени, состоянием, это существенно осложняет процесс живой миграции: необходимо мигрировать не только само устройство, но и его состояние.
[0008] На данный момент миграция виртуальных устройств с динамическим состоянием разрабатывается для протокола vhost-user [1]. Однако технология vDPA, позволяющая разрабатывать универсальные VirtIO устройства, не совместима с этим способом. Эта несовместимость выражается в:
• технических ограничениях - текущая разработка миграции с динамическим состоянием в рамках vhost-user предполагает специфическую интеграцию с программными устройствами, которые работают в пространстве пользователя. vDPA же изначально разрабатывался с упором на аппаратное ускорение и оптимизацию для использования с высокопроизводительными сетевыми и блочными адаптерами. Это различие в архитектуре приводит к несоответствиям в способах управления состоянием устройства.
• несоответствии интерфейсов - vhost-user и vDPA используют разные подходы к взаимодействию с виртуальными устройствами, vhost-user полагается на коммуникацию между процессами в пространстве пользователя, в то время как vDPA предполагает более низкоуровневое взаимодействие, которое может быть не полностью совместимо с методами vhost-user.
• различии в поддержке сохранения состояния - vDPA устройства могут требовать специальные механизмы для сохранения и восстановления их состояния, которые не всегда могут быть реализованы в рамках существующей инфраструктуры vhost-user. Это касается как программных аспектов (управление кэшами и потоками данных), так и аппаратных (поддержка функций миграции на уровне железа).
[0009] Предлагаемая нами технология предназначена устранить этот пробел и предлагает способ миграции для vDPA устройств с динамическим состоянием.
[0010] Заявленное техническое решение направлено на устранение вышеуказанных недостатков, присущих существующим решениям, известным из уровня техники и представляет способ миграции для виртуальных устройств с динамическим состоянием.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0011] При создании технологического решения, преследовались следующие задачи и требования:
1. Изоляция в пространстве пользователя, универсальность и быстродействие: Предпочтительна реализация виртуального устройства в пространстве пользователя для изолирования от критически важных компонентов инфраструктуры, гипервизора и ядра хостовой ОС ТСВ (Trusted Computing Base). Предоставление услуг на основе облачных технологий (облачный провайдер) предполагает обеспечение безопасности пользователей и минимизацию воздействия на ядро системы. Решение должно быть унифицировано для использования как на физических узлах, так и внутри виртуальных машин. У разных пользователей могут быть разные задачи. В связи с этим виртуальные устройства должны быть одинаково эффективны и для пользователей виртуальных машин, и для тех, кто работает с физическими узлами. Быстродействие виртуального устройства на транспортном уровне должно быть максимальным, особенно в контексте виртуальных машин. Плохая производительность файловой системы может нивелировать все ее достоинства, учитывая ограничения облачной инфраструктуры. Именно поэтому в качестве фундамента нашего способа была выбрана технология VDUSE.
2. Возможность оптимизаций и поддержка миграции: Способ должен предусматривать возможность дополнительных оптимизаций в рамках конкретной реализации. Помимо обеспечения высокой производительности на транспортном уровне, реализация не должна накладывать существенных ограничений на последующие оптимизации, такие как кэширование и специальная обработка запросов. Для сценариев использования внутри виртуальных машин должна быть предусмотрена поддержка миграции. Необходимо поддержать миграцию не только очередей с данными, но и состояния файловой системы, чтобы обеспечить беспрерывную работу сервисов. Таким образом, канал передачи данных может быть реализован, например, в виде файлового дескриптора ОС.
3. Бесшовное восстановление, гибкость и адаптация: Реализация должна предоставлять способ сохранять и восстанавливать данные в случае выхода из строя оборудования или необходимости перезапуска файловой системы. Данный процесс должен быть незаметен и безопасен для пользователей, чтобы избежать влияния на данные, принадлежащие пользователям. Сохраняемое и загружаемое состояние конкретной файловой системы должно определяться ее реализацией. Механизм должен быть универсальным, чтобы это позволяло учитывать различные сценарии и нужды пользователей облачной инфраструктуры. На базе VDUSE и vDPA был разработан способ для нужд облачной инфраструктуры. В отличие от предшествующего уровня техники, разработанный способ универсален и позволяет мигрировать не только очереди VirtIO, но и динамическое состояние, что реализует гибкую и бесшовную миграцию для сценариев миграции и бесшовного восстановления состояния виртуального устройства.
[0012] Техническим результатом, объективно проявляющимся при использовании заявленного изобретения, является обеспечение сохранения динамического состояния виртуальных устройств при их миграции.
[0013] Заявленный технический результат достигается за счет выполнения компьютерно-реализуемого способа миграции виртуальных устройств с сохранением их динамического состояния, заключающегося в том, что виртуальные устройства мигрируют с первой виртуальной машины, работающей в активном режиме на первом узле, на вторую виртуальную машину, запущенную в режиме ожидания на втором узле, и содержащего этапы, на которых:
• создают канал передачи данных между первым виртуальным устройством первой виртуальной машины и первым гипервизором на первом узле, причем первая виртуальная машина работает под управлением первого гипервизора на первом узле,
• сохраняют динамическое состояние первого виртуального устройства на первом узле путем фиксации снимка текущего состояния первой виртуальной машины, содержащего данные о состоянии первого виртуального устройства,
• передают данные о состоянии первого виртуального устройства по каналу передачи данных первому гипервизору на первом узле,
• передают данные о состоянии первого виртуального устройства по каналу передачи данных второму гипервизору на втором узле,
• создают канал передачи данных между вторым виртуальным устройством второй виртуальной машины и вторым гипервизором на втором узле, причем вторая виртуальная машина работает под управлением второго гипервизора на втором узле,
• получают данные о состоянии первого виртуального устройства по каналу передачи данных от второго гипервизора на втором узле,
• восстанавливают данные о состоянии первого виртуального устройства на втором виртуальном устройстве.
[0014] В одном из частных примеров реализации виртуальные устройства являются устройствами на базе vDPA.
[0015] В другом частном примере реализации данные о состоянии включают в себя, по меньшей мере, содержимое регистров, внутренних счетчиков, сессии подключения, сведения об открытых файлах, открытые дескрипторы, внутренние буферы памяти, регистры команд, причем данные о состоянии зависят от конкретной реализации виртуального устройства.
[0016] Заявленный технический результат достигается также за счет реализации устройства для миграции виртуальных устройств с сохранением их динамического состояния, содержащего по меньшей мере один процессор,
по меньшей мере одну память, связанную с процессором и содержащую машиночитаемые инструкции, которые при их выполнении по меньшей мере одним процессором обеспечивают выполнение способа миграции виртуальных устройств с сохранением их динамического состояния.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0017] На Фиг. 1 представлена среда выполнения способа миграции виртуальных устройств.
[0018] На Фиг. 2 представлена блок-схема компьютерно-реализуемого способа миграции виртуальных устройств с сохранением их динамического состояния.
[0019] На Фиг. 3 представлена общая схема вычислительного устройства.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
[0020] Ниже будут описаны понятия и термины, необходимые для понимания настоящего изобретения.
[0021] Виртуализация - это группа технологий, основанных на преобразовании формата или параметров программных или сетевых запросов к компьютерным ресурсам с целью обеспечения независимости процессов обработки информации от программной или аппаратной платформы информационной системы [2].
[0022] Виртуальная инфраструктура - это композиция иерархически взаимосвязанных групп виртуальных устройств обработки, хранения и/или передачи данных, а также группы необходимых для их работы аппаратных и/или программных средств [2].
[0023] Гостевая операционная система (guest operation system) - это операционная система, установленная на виртуальной машине [3].
[0024] Хостовая система сервера (host operating system) - это операционная система, в среде которой функционирует гипервизор [3].
[0025] Виртуальная машина, ВМ (virtual machine) - это виртуальная вычислительная система, которая состоит из виртуальных устройств обработки, хранения и передачи данных и которая дополнительно может содержать аппаратное обеспечение и пользовательские данные [3].
[0026] Гипервизор (hypervisor), также известный как монитор виртуальных машин (VMM) - это тип компьютерного программного обеспечения, встроенного ПО или оборудования, которое создает и запускает виртуальные машины [4].
[0027] vDPA (virtIO Data Path Acceleration) - это набор инструментов, который позволяет ускорять работу VirtIO устройств, таких как сетевые карты и блочные устройства, с помощью аппаратных ускорителей. vDPA обеспечивает унифицированный интерфейс для VirtIO устройств, который может быть реализован как в программных, так и в аппаратных средах [5].
[0028] Устройство vDPA (vDPA Device) - это тип виртуального устройства, который реализует ускорение обработки данных (data path acceleration) с помощью аппаратных ускорителей в рамках технологии vDPA. Оно поддерживает унифицированный интерфейс VirtIO для взаимодействия с гостевыми операционными системами и может быть реализовано как в программных, так и в аппаратных средах, обеспечивая улучшенную производительность и эффективную работу подсистем ввода-вывода [5].
[0029] VirtIO-устройство - это виртуализированное аппаратное устройство, использующее стандартный интерфейс VirtIO для обеспечения взаимодействия и обмена данными между виртуальными машинами и гипервизором. VirtIO-устройства минимизируют накладные расходы на виртуализацию, обеспечивая высокую производительность и низкие задержки ввода-вывода, что делает их эффективными для работы различных виртуальных сред [6].
[0030] Устройство vDPA в пользовательском пространстве (Virtual Device in UserSpacE, VDUSE) - это набор инструментов в ядре Linux, который позволяет реализовать пользовательское приложение, эмулирующее устройство vDPA [7].
[0031] Очереди приема (Receive Queue) и передачи (Transmit Queue) - это структуры данных, используемые драйвером гостевой операционной системы для управления потоками входящих и исходящих данных между виртуальной машиной и аппаратными устройствами или внешними источниками.
[0032] Драйвер файловой системы - это драйвер, занимающийся трансляцией обращений к файловой системе внутри узла или виртуальной машины в соответствующие запросы формата FUSE через транспортный уровень VirtIO.
[0033] Виртуальная файловая система (Virtual File System, vFS) - это уровень абстракции над файловыми системами в ядре ОС, позволяющий в общем виде работать с файловой системой независимо от ее типа и деталей ее реализации; по сути, интерфейс ядра для файловых систем [6].
[0034] Виртуальное устройство файловой системы (vFS Device) - это тип виртуального устройства, которое отслеживает состояние и множество метаданных для обеспечения корректной работы файловой системы в виртуализированной среде. vFS Device хранит и управляет состоянием операций ввода-вывода, обеспечивая контекстно-зависимую обработку запросов. Это позволяет виртуальной машине или контейнеру использовать файловую систему, как будто она представлена на реальном физическом устройстве, с учетом всех особенностей и зависимостей операций.
[0035] Динамическое состояние устройства - это состояние работоспособности устройства, как правило, виртуального, при котором изменяются во времени различные характеристики и параметры этого устройства.
[0036] vhost-user - это протокол, используемый для коммуникации между гипервизором (например, QEMU) и процессами, работающими в пространстве пользователя. Он был разработан для улучшения производительности передачи данных в виртуальных сетях, поскольку vhost-user позволяет перенести обработку ввода-вывода из ядра в пространство пользователя, что снижает накладные расходы и увеличивает производительность [1].
[0037] QEMU (Quick EMUlator) - это популярная свободная и открытая эмуляционная среда и гипервизор, используемая для виртуализации аппаратного обеспечения. QEMU позволяет эмулировать различные архитектуры процессоров, что делает его универсальным инструментом для создания и управления виртуальными машинами.
[0038] Поставщик службы облачных вычислений (cloud service provider) - это сторона, которая обеспечивает доступ к службам облачных вычислений [8].
[0039] Снапшот (от англ. snapshot - «моментальный снимок») - это копия данных виртуальной машины и всего состояния системы. С его помощью можно вернуться к работоспособному состоянию машины после неудачного обновления, тестирования приложений или других потенциально опасных действий [9].
[0040] Сериализация - это процесс преобразования объекта в поток байтов для сохранения или передачи в память, в базу данных или в файл. Эта операция предназначена для того, чтобы сохранить состояния объекта для последующего воссоздания при необходимости. Обратный процесс называется десериализацией [10].
[0041] На Фиг. 1 представлена виртуальная инфраструктура, являющаяся средой выполнения способа миграции виртуальных устройств. В ходе осуществления заявленного изобретения необходимо осуществить миграцию виртуальных устройств с первой виртуальной машины (ПО), работающей в активном режиме на первом узле (101), на вторую виртуальную машину (120), запущенную в режиме ожидания на втором узле (102). При этом первая (110) и вторая (120) виртуальные машины работают под управлением первого (121) и второго (122) гипервизора соответственно.
[0042] Каждый из узлов (101, 102) является устройством (например, компьютерной системой общего назначения), на котором функционирует, например, клиент гипервизора (121, 122) и операционная система (ОС) узла, под управлением которой исполняются виртуальные машины (110, 120).
[0043] В качестве узла (101, 102) также может выступать, но не ограничиваться указанными примерами: модуль вычислительной системы, узел хранения, часть вычислительного кластера, обрабатывающая необходимые данные для осуществления заявленного технического решения. Конкретный выбор элементов узлов (101, 102) для реализации различных программно-аппаратных архитектурных решений может варьироваться с сохранением обеспечиваемого требуемого функционала.
[0044] Рассмотрим процесс инициализации виртуальных устройств, предшествующий процессу их миграции.
[0045] В предпочтительном варианте воплощения заявленного решения в качестве виртуального устройства выступает устройство vDPA в пользовательском пространстве (VDUSE). Оно публикуется на шине vDPA, что является характерной чертой всех VDUSE устройств. В данном примере динамическим состоянием будем считать некие множественные условные записи (Entry), содержащие два значения: имя (name) и число (counter). Запускают два абсолютно идентичных экземпляра приложения (111, 112) на разных узлах (101, 102). На этих же узлах (101, 102) запускают два гипервизора (121, 122), в активном и пассивном режиме соответственно.
[0046] С точки зрения адресного пространства, будем считать, что каждое из двух запущенных экземпляров приложений содержит некий массив записей, например, такой:
[0047] В процессе работы первого виртуального устройства внутри первой виртуальной машины (110), поскольку первый гипервизор (121) находится в активном режиме и пользователь работает с ним, могут изменяться старые записи или появляться новые. Например, предположим, что перед запросом на миграцию, записи в первом экземпляре приложения (111) выглядят так:
[0048] Во втором экземпляре приложения (112) очевидным образом записи не менялись, второй гипервизор (122) находился в пассивном режиме и ожидал запроса на миграцию. Задача - при миграции с первого узла (101) на второй узел (102) поменять в адресном пространстве второго экземпляра приложения (112) все записи ровно на тот вид, в каком они присутствовали в первом экземпляре приложения (111). Таким образом, после миграции, второй экземпляр приложения (112) будет содержать те же значения, что ранее содержал первый экземпляр приложения (111).
[0049] Рассмотрим фазы инициализации экземпляров приложения и непосредственно процесс миграции ниже. Будем предполагать, что миграция осуществляется по TCP/IP, включая, но не ограничиваясь указанным стеком протоколов, так как реализация не накладывает ограничений на способ миграции. Например, миграция может осуществляться посредством сохранения в файл с последующим восстановлением из него, или через UDP, или через локальный сокет, или иным образом. Точно так же нет ограничений на количество узлов в цепочке миграции, равно как и нет требований, чтобы все гипервизоры, участвующие в миграции, находились на разных узлах.
[0050] Фазы инициализации экземпляров приложения (111, 112) на примере миграции по TCP/IP:
[0051] а) Запуск первого экземпляра приложения (111) на первом узле (101):
Пример: На первом узле (101) запускается первый экземпляр приложения (111), который инициализирует виртуальное устройство VDUSE: hostl$./арр -device-id vfs_device 001
Описание: Первый экземпляр приложения (111) запускает виртуальное устройство VDUSE с заданным пользователем идентификатором device_001. После инициализации устройство появляется в ОС под именем /dev/vduse/device_001.
[0052] b) Публикация устройства VDUSE на виртуальной шине vDPA в режиме vhost-vdpa:
Пример: После запуска первого экземпляра приложения (111) выполняют публикацию устройства:
hostl$ modprobe -r virtio-vdpa && modprobe vhost-vdpa
hostl$ vdpa dev add name device 001 mgmtdev vduse
Описание: Используя утилиту vdpa, устройство vfs device 001 публикуется на виртуальной шине vDPA с драйвером vhost-vdpa. Последовательность команд опубликует VDUSE устройство device_001 как отдельное устройство с уникальным идентификатором вида /dev/vhost-vdpa-Х, например, /dev/vhost-vdpa-0.
[0053] с) Запуск первой виртуальной машины (110) на первом узле (101):
Пример: На первом узле (101) запускаются первый гипервизор (121) и первую виртуальную машину (110) с пробросом идентификатора устройства и управляющим локальным сокетом (путь задается переменной
QEMU_SOCKET):
host1S qemu-system-x86_64 -т 4G -device vhost-vdpa-pci,vdpa_dev_id=/dev/vhost-vdpa-0 -monitor unix:${QEMU SOCKET},server=on,wait=on
Описание: Первый гипервизор (121) запускает первую виртуальную машину (ПО) с пробросом идентификатора устройства vfs_device_001, что позволяет первой виртуальной машине (110) взаимодействовать с устройством VDUSE. Также создается локальный сокет в режиме ожидания. Первый гипервизор (121) и первая виртуальная машина (110) ждут подключения. Первый гипервизор (121) создает виртуальное устройство внутри первой виртуальной машины (110), которое выглядит и ведет себя как физическое устройство. Гостевая ОС видит это устройство и может взаимодействовать с ним непосредственно через его драйверы.
[0054] d) Подключение к управляющему сокету первого гипервизора (121):
Пример: На первом узле подключаются к управляющему локальному сокету (путь задается переменной QEMU SOCKET):
hostl$ socat -,echo=0,icanon=0 unix-connect:${QEMU_SOCKET}
Описание: Осуществляется подключение, первый гипервизор (121) первого узла (101) стартует первую виртуальную машину (110). Через управляющий сокет можно отправлять команды, включая запрос на миграцию.
[0055] е) Запуск второго экземпляра приложения (112) на втором узле (102):
Пример: На втором узле (102) запускается второй экземпляр приложения (112), который инициализирует виртуальное устройство VDUSE: host2$./vfs_xpp -device-id device001
Описание: Второй экземпляр приложения (112) запускает виртуальное устройство VDUSE с заданным пользователем идентификатором device_001. После инициализации устройство появляется в ОС под именем /dev/vduse/device_001.
[0056] f) Публикация устройства VDUSE на виртуальной шине vDPA в режиме vhost-vdpa:
Пример: После запуска второго экземпляра приложения (112) выполняем публикацию устройства:
host2$ modprobe -r virtio-vdpa && modprobe vhost-vdpa
host2$ vdpa dev add name device_001 mgmtdev vduse
Описание: Используя утилиту vdpa, устройство device_001 публикуется на виртуальной шине vDPA с драйвером vhost-vdpa. Последовательность команд опубликует VDUSE устройство device_001 как отдельное устройство с уникальным идентификатором вида /dev/vhost-vdpa-Х, например, /dev/vhost-vdpa-0.
[0057] g) Запуск второй виртуальной машины (120) на втором узле (102):
Пример: На втором узле (102) запускаются второй гипервизор (122) и вторую виртуальную машину (120) с пробросом идентификатора устройства:
host2$ qemu-system-x86_64 -m 4G -device vhost-vdpa-pci,vdpa_dev_id=/dev/vhost-vdpa-0 -incoming tcp:${IP}:${PORT}
Описание: Второй гипервизор (122) запускает вторую виртуальную машину (120) с пробросом идентификатора устройства device_001, что позволяет второй виртуальной машине (120) взаимодействовать с устройством VDUSE. Дополнительно можно так же аналогично поднять управляющий сокет, если предполагается управление гипервизором и виртуальной машиной (например, на следующий узел). IP и PORT обозначают в данном примере условные IP адрес и порт, на котором будет ожидаться соединение при миграции.
[0058] На Фиг. 2 представлен компьютерно-реализуемый способ (200) миграции виртуальных устройств с сохранением их динамического состояния. В частном примере реализации выполнение способа (200) осуществляется с помощью устройства для миграции виртуальных устройств с сохранением их динамического состояния, которое может быть реализовано на базе вычислительного устройства, модифицированного в программно-аппаратной части таким образом, чтобы выполнять функции устройства для миграции виртуальных устройств с сохранением их динамического состояния. Более подробное описание вычислительного устройства раскрыто далее со ссылкой на Фиг. 3.
[0059] На первом этапе (201) создают канал передачи данных между первым виртуальным устройством первой виртуальной машины и первым гипервизором на первом узле, причем первая виртуальная машина работает под управлением первого гипервизора на первом узле.
[0060] Пример: На первом узле (101) в рабочем экземпляре терминала управления первым гипервизором (121) осуществляется миграция (см. этап d) фазы инициализации):
hostl$ migrate tcp:${IP}:${PORT}
[0061] Описание: Создание канала передачи данных реализуется посредством широко известных техник, например, посредством командной строки или запроса. Первый гипервизор (121) первого узла (101) создает канал данных между собой и первым виртуальным устройством (например, устройством файловой системы), причем канал передачи данных может быть реализован, например, в виде файлового дескриптора ОС. Первый гипервизор (121) сообщает о появившемся канале и факте миграции, а также о необходимости сохранении состояния. IP и PORT обозначают в данном примере условные IP адрес и порт, по которым доступен ранее запущенный гипервизор на втором узле.
[0062] В частном варианте реализации с помощью первого гипервизора (121) передают управление каналом передачи данных от первого гипервизора (121) к первой виртуальной машине (110).
[0063] В предпочтительном варианте реализации заявленного изобретения виртуальные устройства являются устройствами на базе vDPA.
[0064] На этапе (202) сохраняют динамическое состояние первого виртуального устройства на первом узле (101) путем фиксации снимка текущего состояния первой виртуальной машины (110), содержащего данные о состоянии первого виртуального устройства.
[0065] Пример: Получив запрос на миграцию и сохранение состояния, первый экземпляр приложения (111) вызывает связанную с миграцией секцию кода, условно названную dump handler. При исполнении, данная секция кода получает на вход канал от первого гипервизора (121), условно называемый channel. Реализация обработчика не ограничена конкретными воплощениями. Для более наглядного понимания сути заявленного решения и этапа (202) в частности, представлен вариант реализации для примера с файловой системой (псевдокод):
[0066] Описание: При получении запроса от первого гипервизора (121), первый экземпляр приложения (111) вызывает обработчик dump_handler, получая на вход канал channel. Описанная реализация проверяет динамическое состояние и сериализирует его. Сериализированный документ отправляется в полученный канал. Обработчик сохранения в конце вызывает секцию кода dump, ответственную за преобразование из формата сериализации и запись в виде байт. Формат сериализации представляет собой по меньшей мере одно из: последовательность байтов, строку или XML/JSON-документ.
[0067] На этапе (203) передают данные о состоянии первого виртуального устройства (110) по каналу передачи данных первому гипервизору (121) на первом узле (101).
[0068] Пример: Попав в секцию кода dump, первый экземпляр приложения осуществляет преобразование в JSON и запись в канал:
fn dump(channel, map):
json.dump(channel, map)
[0069] Описание: секция dump приведена для выделения настоящего этапа; технически все может осуществляться в рамках dump_handler, json. dump - указан в качестве примера, в рамках заявленного решения может использоваться любой другой формат.
[0070] На этапе (204) передают данные о состоянии первого виртуального устройства по каналу передачи данных второму гипервизору (122) на втором узле (102). Данный этап (204) осуществляется непосредственно первым (121) и вторым (122) гипервизорами, независимо от действий со стороны пользователя. Передаваемые первым гипервизором (121) и получаемые вторым гипервизором (122) данные включают в себя данные о состоянии первого виртуального устройства, переданные на предыдущем этапе (203).
[0071] В частном варианте реализации на этапе (204) первый гипервизор (121) и второй гипервизор (122) создают между собой по меньшей мере один канал, в том числе, для передачи данных о состоянии первого виртуального устройства.
[0072] На этапе (205) создают канал передачи данных между вторым виртуальным устройством второй виртуальной машины (120) и вторым гипервизором (122) на втором узле (102), причем вторая виртуальная машина (120) работает под управлением второго гипервизора (122) на втором узле (102). Данный этап (205) осуществляется непосредственно вторым гипервизором (122), независимо от действий со стороны пользователя. Второй гипервизор (122) сообщает о появившемся канале и факте миграции, а также о необходимости загрузки состояния.
[0073] В частном варианте реализации с помощью второго гипервизора (122) передают управление каналом передачи данных от второго гипервизора (122) второй виртуальной машине (120).
[0074] На этапе (206) получают данные о состоянии первого виртуального устройства по каналу передачи данных от второго гипервизора (122) на втором узле (102).
[0075] Пример: Получив запрос на миграцию и загрузку состояния, второй экземпляр приложения (112 вызывает связанную с миграцией секцию кода, условно названную load_handler. При исполнении, данная секция кода получает на вход канал от второго гипервизора (122), условно называемый channel. Реализация обработчика не ограничена конкретными воплощениями. Для более наглядного понимания сути заявленного решения и этапа (206) в частности, представлен вариант реализации для примера с файловой системой (псевдокод):
[0076] Описание: При получении запроса от второго гипервизора (122), второй экземпляр приложения (112) вызывает обработчик load_handler, получая на вход канал channel. Описанная реализация получает состояние первого виртуального устройства и десериализирует его. Обработчик загрузки в конце вызывает секцию кода load, ответственную за применение полученных данных к адресному пространству приложения. json.load- указан в качестве примера, в рамках заявленного решения может использоваться любой другой формат, до тех пор пока он корректно производит операцию десериализации относительно сериализации в
[0077] На этапе (207) восстанавливают данные о состоянии первого виртуального устройства на втором виртуальном устройстве.
[0078] Пример: Попав в секцию кода load, второй экземпляр приложения (112) осуществляет обновление адресного пространства:
[0079] Описание: секция load приведена для выделения этапа (207), технически все может осуществляться в рамках load_handler.
[0080] Приведенные реализации dump_handler, dump, load_handler, load - являются вариантами, иллюстрирующими пример реализации заявленного изобретения, но их воплощение не ограничивается указанными примерами. В данном случае предметом патента является прозрачный для разработчика вызов dump_handler и load handler, а не их реализация.
[0081] В одном из примеров реализации заявленного изобретения данные о состоянии включают в себя, по меньшей мере, содержимое регистров, внутренних счетчиков, сессии подключения, сведения об открытых файлах, открытые дескрипторы, внутренние буферы памяти, регистры команд, причем данные о состоянии зависят от конкретной реализации виртуального устройства.
[0082] На Фиг. 3 представлен общий вид вычислительного устройства (300), на базе которого может быть реализовано устройство для миграции виртуальных устройств с сохранением их динамического состояния, обеспечивающее реализацию способа миграции виртуальных устройств с сохранением их динамического состояния.
[0083] В общем случае вычислительное устройство (300) содержит объединенные общей шиной информационного обмена один или несколько процессоров (301), средства памяти, такие как ОЗУ (302) и ПЗУ (303), интерфейсы ввода/вывода (304), устройства ввода/вывода (305), и средство для сетевого взаимодействия (306).
[0084] Процессор (301) (или несколько процессоров, многоядерный процессор) могут выбираться из ассортимента устройств, широко применяемых в текущее время, например, компаний Intel™, AMD™, Apple™, Samsung Exynos™, MediaTEK™, Qualcomm Snapdragon(и т.п.В качестве процессора (301) может также применяться графический процессор, например, Nvidia, AMD, Graphcore и пр. Процессор (301) имеет иерархию из нескольких уровней кэша (L1, L2, L3).
[0085] ОЗУ (302) представляет собой оперативную память и предназначено для хранения исполняемых процессором (301) машиночитаемых инструкций для выполнение необходимых операций по логической обработке данных. ОЗУ (302), как правило, содержит исполняемые инструкции операционной системы и соответствующих программных компонент (приложения, программные модули и т.п.).
[0086] ПЗУ (303) представляет собой одно или более устройств постоянного хранения данных, например, жесткий диск (HDD), твердотельный накопитель данных (SSD), флэш-память (EEPROM, NAND и т.п.), оптические носители информации (CD-R/RW, DVD-R/RW, Blu-Ray Disc, MD) и др.
[0087] Для организации работы компонентов устройства (300) и организации работы внешних подключаемых устройств применяются различные виды интерфейсов В/В (304). Выбор соответствующих интерфейсов зависит от конкретного исполнения вычислительного устройства, которые могут представлять собой, не ограничиваясь: PCI, AGP, PS/2, IrDa, Fire Wire, LPT, COM, SATA, IDE, Lightning, USB (2.0, 3.0, 3.1, micro, mini, type C), TRS/Audio jack (2.5, 3.5, 6.35), HDMI, DVI, VGA, Display Port, RJ45, RS232 и т.п.
[0088] Для обеспечения взаимодействия пользователя с вычислительным устройством (300) применяются различные устройства (305) В/В информации, например, клавиатура, дисплей (монитор), сенсорный дисплей, тач-пад, джойстик, манипулятор мышь, световое перо, стилус, сенсорная панель, трекбол, динамики, микрофон, средства дополненной реальности, оптические сенсоры, планшет, световые индикаторы, проектор, камера, средства биометрической идентификации (сканер сетчатки глаза, сканер отпечатков пальцев, модуль распознавания голоса) и т.п.
[0089] Средство сетевого взаимодействия (306) обеспечивает передачу данных устройством (300) посредством внутренней или внешней вычислительной сети, например, Интранет, Интернет, ЛВС и т.п.В качестве одного или более средств (306) может использоваться, но не ограничиваться: Ethernet карта, GSM модем, GPRS модем, LTE модем, 5G модем, модуль спутниковой связи, NFC модуль, Bluetooth и/или BLE модуль, Wi-Fi модуль и др.
[0090] Дополнительно в составе устройства (300) могут также применяться средства спутниковой навигации, например, GPS, ГЛОНАСС, BeiDou, Galileo.
[0091] Представленные материалы заявки раскрывают предпочтительные примеры реализации технического решения и не должны трактоваться как ограничивающие иные, частные примеры его воплощения, не выходящие за пределы испрашиваемой правовой охраны, которые являются очевидными для специалистов соответствующей области техники.
[0092] Источники информации:
[1] Data Plane Development Kit (DPDK) Documentation, http://core.dpdk.org/doc/
[2] ГОСТ P 56938-2016 Защита информации. Защита информации при использовании
технологий виртуализации. Общие положения
[3] ГОСТ Р 59163-2020 Информационные технологии (ИТ). Методы и средства обеспечения безопасности. Руководство по обеспечению безопасности при внедрении серверов виртуализации
[4] Hypervisor - Wikipedia. https://en.wikipedia.org/wiki/Hypervisor
[5] Introduction to vDPA kernel framework, https://www.redhat.com/en/blog/introduction-vdpa-kernel-framework
[6] Virtual I/O Device (VIRTIO) Version 1.3. https://docs.oasis-open.org/virtio/virtio/v1.3/csd01/virtio-vl.3-csd01.html
[7] Introducing VDUSE: a software-defined datapath for virtio.
https://www.redhat.com/en/blog/introducing-vduse-software-defined-datapath-virtio
[8] ГОСТ P 70860-2023 Информационные технологии. Облачные вычисления. Общие технологии и методы
[9] Снапшоты - документация Виртуальный ЦОД на базе VMware. https://cloud.ru/docs/vdc/ug/topics/vms/vms_snapshots.html
[10] Сериализация - Visual Basic | Microsoft Learn, https://learn.microsoft.com/ru-ru/dotnet/visual-basic/programming-guide/concepts/serialization/
Изобретение относится к вычислительной технике. Технический результат заключается в обеспечении сохранения динамического состояния виртуальных устройств при их миграции. Заявленный результат достигается за счет выполнения способа миграции виртуальных устройств с сохранением их динамического состояния, заключающегося в том, что виртуальные устройства мигрируют с первой виртуальной машины, работающей в активном режиме на первом узле, на вторую виртуальную машину, запущенную в режиме ожидания на втором узле, и содержащего этапы, на которых: создают канал передачи данных между первым виртуальным устройством первой виртуальной машины и первым гипервизором на первом узле, сохраняют динамическое состояние первого виртуального устройства на первом узле, передают данные о состоянии первого виртуального устройства первому гипервизору на первом узле, передают данные о состоянии первого виртуального устройства второму гипервизору на втором узле, создают канал передачи данных между вторым виртуальным устройством второй виртуальной машины и вторым гипервизором на втором узле, получают данные о состоянии первого виртуального устройства от второго гипервизора на втором узле, восстанавливают данные о состоянии первого виртуального устройства на втором виртуальном устройстве. 2 н. и 2 з.п. ф-лы, 3 ил.
1. Компьютерно-реализуемый способ миграции виртуальных устройств с сохранением их динамического состояния, заключающийся в том, что виртуальные устройства мигрируют с первой виртуальной машины, работающей в активном режиме на первом узле, на вторую виртуальную машину, запущенную в режиме ожидания на втором узле, и содержащий этапы, на которых:
• создают канал передачи данных между первым виртуальным устройством первой виртуальной машины и первым гипервизором на первом узле, причем первая виртуальная машина работает под управлением первого гипервизора на первом узле,
• сохраняют динамическое состояние первого виртуального устройства на первом узле путем фиксации снимка текущего состояния первой виртуальной машины, содержащего данные о состоянии первого виртуального устройства,
• передают данные о состоянии первого виртуального устройства по каналу передачи данных первому гипервизору на первом узле,
• передают данные о состоянии первого виртуального устройства по каналу передачи данных второму гипервизору на втором узле,
• создают канал передачи данных между вторым виртуальным устройством второй виртуальной машины и вторым гипервизором на втором узле, причем вторая виртуальная машина работает под управлением второго гипервизора на втором узле,
• получают данные о состоянии первого виртуального устройства по каналу передачи данных от второго гипервизора на втором узле,
• восстанавливают данные о состоянии первого виртуального устройства на втором виртуальном устройстве.
2. Способ по п. 1, характеризующийся тем, что виртуальные устройства являются устройствами на базе vDPA.
3. Способ по п. 1, характеризующийся тем, что данные о состоянии включают в себя, по меньшей мере, содержимое регистров, внутренних счетчиков, сессии подключения, сведения об открытых файлах, открытые дескрипторы, внутренние буферы памяти, регистры команд, причем данные о состоянии зависят от конкретной реализации виртуального устройства.
4. Устройство для миграции виртуальных устройств с сохранением их динамического состояния, содержащее по меньшей мере один процессор,
по меньшей мере одну память, связанную с процессором и содержащую машиночитаемые инструкции, которые при их выполнении по меньшей мере одним процессором обеспечивают выполнение способа по любому из пп. 1-3.
US 9619255 B1, 11.04.2017 | |||
US 20160274934 A1, 22.09.2016 | |||
US 8554981 B2, 08.10.2013 | |||
US 20180039436 A1, 08.02.2018 | |||
СПОСОБ, СИСТЕМА И МАШИНОЧИТАЕМЫЙ НОСИТЕЛЬ ДЛЯ ВЫПОЛНЕНИЯ МИГРАЦИИ С ФИЗИЧЕСКИХ МАШИН НА ВИРТУАЛЬНЫЕ | 2019 |
|
RU2793457C2 |
Авторы
Даты
2025-03-03—Публикация
2024-09-18—Подача