СПОСОБ ОБЕСПЕЧЕНИЯ СОВМЕСТНОЙ РАБОТЫ НЕСКОЛЬКИХ ГИПЕРВИЗОРОВ В КОМПЬЮТЕРНОЙ СИСТЕМЕ
METHOD OF PROVIDING COLLABORATIVE OPERATION OF SEVERAL HYPERVISORS IN COMPUTER SYSTEM

Область техники
Изобретение относится к технологиям виртуализации, а более конкретно к системам и способам обеспечения совместной работы нескольких гипервизоров в компьютерной системе.
Уровень техники
В настоящее время технология виртуализации все более активно используется в самых различных сферах: как в рамках крупных дата-центров, так и на пользовательских компьютерах. Виртуализация предоставляет возможность запускать несколько операционных систем на одной компьютерной системе, что позволяет наиболее полно использовать имеющиеся аппаратные ресурсы. Например, пользователь может использовать несколько виртуальных машин для одновременного исполнения ряда приложений в различных операционных системах (ОС). Однако наиболее востребованной технология виртуализации стала при использовании в рамках крупных серверов, например при оказании услуг веб-хостинга.
Для обеспечения работы виртуальных машин требуется использовать гипервизор, который обеспечивает возможность выполнения виртуальных машин, выступая в роли менеджера или диспетчера виртуальных машин (англ. Virtual Machine Manager, VMM). В том случае, если в компьютерной системе присутствуют несколько гипервизоров, то требуется обеспечить их корректную работу. Совместная работа гипервизоров виртуальных машин обеспечивается их реализацией: при получении управления режим процессора изменяется временно и возврат в исходный режим осуществляет диспетчер виртуальных машин по своему усмотрению. Например, если в операционной системе Windows запущены несколько виртуальных машин различных производителей, таких как VMWare или Citrix (Xen), то планировщик будет выделять время для исполнения гипервизоров как для обычных потоков в операционной системе (с учетом приоритета потоков). Сам код гипервизора корректно завершает свое выполнение по истечению определенного кванта времени (однако стоит отметить, что данный квант времени не совпадает с тем, что был выделен планировщиком ОС). В многоядерном процессоре на каждом ядре будет работать отдельная копия гипервизора, но с разным контекстом.
В ряде публикаций также раскрыт принцип управления несколькими гипервизорами в системе. Например, в публикации US 20140149980 решается задача диагностики кластера гипервизоров (когда на одном компьютере может работать несколько гипервизоров), в рамках которой может быть определен гипервизор, работа которого приводит к деградации производительности. В публикации US 20110023030 описывается возможность передачи управления от одного гипервизора к другому путем "горячей" миграции аппаратных ресурсов и страниц памяти для работающих виртуальных машин (таким образом, миграция происходит на лету).
Однако указанные публикации не решают задачу реализации постоянно работающего гипервизора, периодически уступающего управление гипервизорам виртуальных машин. Подобная необходимость может быть оправдана в том случае, если гипервизор обеспечивает работу критически важных виртуальных машин или же предназначен для постоянного отслеживания выполнения кода в привилегированном режиме (так называемый "режим ядра", англ. kernel mode).
Анализ предшествующего уровня техники позволяет сделать вывод о неэффективности и в некоторых случаях о невозможности применения предшествующих технологий, недостатки которых решаются настоящим изобретением, а именно системой и способом реализации постоянно работающего гипервизора, периодически уступающего управление гипервизорам виртуальных машин.
Раскрытие изобретения
Технический результат настоящего изобретения заключается в обеспечении постоянного выполнения одного из гипервизоров в компьютерной системе.
Постоянное выполнение одного из гипервизоров достигается путем контроля состояния компьютерной системы с целью отслеживания попытки запуска кода в режиме гипервизора со стороны других гипервизоров. При обнаружении подобного состояния компьютерной системы происходит сохранение состояния компьютерной системы и остановка выполнения кода гипервизора, который должен постоянно выполняться. После ожидания возможности начала выполнения кода в режиме гипервизора сохраненное состояние компьютерной системы будет загружено для возможности корректного восстановления выполнения кода в режиме гипервизора.
В еще одном варианте реализации состояние компьютерной системы включает состояние процессора.
Краткое описание чертежей
Дополнительные цели, признаки и преимущества настоящего изобретения будут очевидными из прочтения последующего описания осуществления изобретения со ссылкой на прилагаемые чертежи, на которых:
Фиг. 1 иллюстрирует операционную систему, в которой работает больше одного гипервизора.
Фиг. 2 приводит систему обеспечения выполнения нескольких гипервизоров в системе.
Фиг. 3 иллюстрирует способ работы настоящего изобретения.
Фиг. 4 представляет пример компьютерной системы общего назначения, на которой может быть реализовано настоящее изобретение.
Описание вариантов осуществления изобретения
Объекты и признаки настоящего изобретения, способы для достижения этих объектов и признаков станут очевидными посредством отсылки к примерным вариантам осуществления. Однако настоящее изобретение не ограничивается примерными вариантами осуществления, раскрытыми ниже, оно может воплощаться в различных видах. Сущность, приведенная в описании, является ничем иным, как конкретными деталями, необходимыми для помощи специалисту в области техники в исчерпывающем понимании изобретения, и настоящее изобретение определяется в объеме приложенной формулы.
Настоящее изобретение позволяет решить задачу постоянной работы одного из гипервизоров в компьютерной системе при наличии других гипервизоров при периодической работе других гипервизоров на этом же ядре процессора. На Фиг. 1 приведена операционная система (ОС) 100, в которой работает больше одного гипервизора, например гипервизор 110а, который требуется держать постоянно включенным, и остальные гипервизоры 110б (их может быть более одного). В качестве примера гипервизоров 110б можно привести диспетчеры (мониторы) виртуальных машин компаний VMWare, VirtualBox(Oracle) или Citrix (Xen). Примером гипервизора 110а может являться гипервизор, который требует постоянного выполнения критически важных виртуальных машин, или же гипервизор, который необходим для обеспечения выполнения ряда антивирусных операций. При стандартной работе гипервизоров 110а и 110б время на выполнение им будет выделять стандартный планировщик задач 120. Например, в ОС Windows планировщик работает с управлением по приоритетам, что означает первоочередное выполнение более приоритетных потоков. Следовательно, в рамках ОС 100, где используется планировщик 120, невозможно обеспечить постоянную работу гипервизора 110а даже с назначением ему более высокого приоритета, так как рано или поздно планировщик 120 выделит квант времени (англ. quantum) для выполнения кода гипервизоров 110б. Здесь и далее под выполнением одного из гипервизоров 110б прежде всего подразумевается выполнение виртуальных машин, которые работают под указанными гипервизорами.
Стоит отметить, что гипервизор 110а может понадобиться при выполнении антивирусных операций по нескольким причинам. Во-первых, с помощью гипервизора можно обнаружить выполнение кода на уровне ядра ОС (например, руткиты). Во-вторых, гипервизор может потребоваться для обхода защиты ядра ОС, такой как PatchGuard.
На Фиг. 2 приведена система обеспечения выполнения нескольких гипервизоров в системе. На приведенной схеме гипервизор 110а не управляется планировщиком 120 (в отличие от гипервизоров 110б), а управляется обработчиком 210, который отслеживает состояние системы 220. Когда гипервизор 110б пытается начать выполнять код в режиме гипервизора (ring -1), то происходит в первую очередь изменение режима работы процессора, так как в это время будут выполняться команды, которые отвечают за подготовку последующего запуска виртуальной машины. Например, полностью перегружается каталог страниц (англ. Page Directory), регистр CR3. Другим примером запуска виртуальной машины является команда vmrun (применительно к VMWare). Все эти параметры и команды выделены на Фиг. 2 как состояние системы 220. Обработчик 210 отслеживает изменение указанных параметров или выполнение команд (путем их перехвата) для остановки выполнения гипервизора 110а. В частном варианте реализации обработчик 210 выполнен в виде драйвера ОС 100.
Рассмотрим более подробно процесс включения и остановки гипервизора 110а. Данный процесс содержит следующие этапы:
а) сохранение текущего состояния процессора (т.е. на тот момент выполнения кода одного из гипервизоров 110б в режиме гипервизора);
б) выполнение кода гипервизора 110а;
в) определение попытки запуска кода гипервизора 110б;
г) восстановление фактического состояния процессора с этапа а) для корректной отработки инструкции включения виртуализации гипервизором 110б;
д) выход из режима гипервизора и передача управления на последнюю инструкцию при выполнении кода гипервизора 110а.
Таким образом, следующая инструкция потока гипервизора 110а уже выполняется вне режима гипервизора, так как далее выполнение уже идет в рамках другого кольца привилегий (как правило, это будет ring 0).
Фиг. 3 иллюстрирует способ работы настоящего изобретения. На этапе 310 происходит отслеживание состояния системы 220 (например, с помощью обработчика 210). Если на этапе 320 определяется, что состояние системы изменилось (например, перегружен каталог страниц или выполнена команда vmrun), то на этапе 330 происходит остановка выполнения гипервизора 110а. Также стоит отметить, что на этапе 320 может происходить дополнительная проверка, например из какого режима была вызвана перегрузка регистра CR3. Если перегрузка регистра была вызвана из режима ядра, то это лишь переключение контекста, а если из режима пользователя, то можно дополнительно проверить что это, например, - вызов из процесса виртуальной машины. Подобная проверка позволяет минимизировать количество «ложных срабатываний» при остановке гипервизора 110а, чтобы не останавливать его без крайней необходимости. На этапе 340 происходит ожидание возможности запуска гипервизора 110а. Ожидание может включать следующие условия:
- закончился квант времени на исполнение, который выделил планировщик 120 для выполнения одного из гипервизоров 110б;
- произошло изменение состояния системы 120;
- обработчик 210 отслеживает выполнение гипервизора 110б и получает нотификацию об окончании его работы (например, через официальный Application Programmable Interface или API, предоставленный разработчиком гипервизора).
Если на этапе 350 было определено, что один из гипервизоров 110б закончил выполнение (путем проверки вышеуказанных условий), то на этапе 360 происходит его повторный запуск.
В одном из вариантов реализации повторный запуск реализуется через таймерную процедуру (например, в ОС Windows это можно сделать через вызов KeSetTimer). Например, по истечению заданного времени (когда закончился квант времени на выполнение) планировщик 120 определяет, чей код должен быть выполнен (например, старт гипервизора 110а). Таймер может быть переставлен для того, чтобы можно выполнить повторный запуск в следующий раз, когда один из гипервизоров 110б закончит свою работу и гипервизор 110а может быть запущен.
Еще один пример того, когда следует останавливать гипервизор 110а, касается изменения состояния системы 220, связанного с питанием, например при входе в режим гибернации (англ. hibernate). С этой целью можно отслеживать функции, связанные с питанием (Power Management event callback функции в ОС Windows) или системные переменные (SYSTEMPOWERSTATE в ОС Windows).
Другим примером необходимости останавливать гипервизор 110а является запуск кода, который также приводит к сильному изменению состояния процессора, например эмуляторов (такие как QEMU и другие аналогичные, используемые также в антивирусных приложениях). Если же эмулятор и гипервизор 110а входят в состав антивирусного продукта, то после работы эмулятора последний может автоматически запускать гипервизор 110а.
Фиг. 4 представляет пример компьютерной системы общего назначения, персональный компьютер или сервер 20, содержащий центральный процессор 21, системную память 22 и системную шину 23, которая содержит разные системные компоненты, в том числе память, связанную с центральным процессором 21. Системная шина 23 реализована, как любая известная из уровня техники шинная структура, содержащая в свою очередь память шины или контроллер памяти шины, периферийную шину и локальную шину, которая способна взаимодействовать с любой другой шинной архитектурой. Системная память содержит постоянное запоминающее устройство (ПЗУ) 24, память с произвольным доступом (ОЗУ) 25. Основная система ввода/вывода (BIOS) 26 содержит основные процедуры, которые обеспечивают передачу информации между элементами персонального компьютера 20, например, в момент загрузки операционной системы с использованием ПЗУ 24.
Персональный компьютер 20 в свою очередь содержит жесткий диск 27 для чтения и записи данных, привод магнитных дисков 28 для чтения и записи на сменные магнитные диски 29 и оптический привод 30 для чтения и записи на сменные оптические диски 31, такие как CD-ROM, DVD-ROM и иные оптические носители информации. Жесткий диск 27, привод магнитных дисков 28, оптический привод 30 соединены с системной шиной 23 через интерфейс жесткого диска 32, интерфейс магнитных дисков 33 и интерфейс оптического привода 34 соответственно. Приводы и соответствующие компьютерные носители информации представляют собой энергонезависимые средства хранения компьютерных инструкций, структур данных, программных модулей и прочих данных персонального компьютера 20.
Настоящее описание раскрывает реализацию системы, которая использует жесткий диск 27, сменный магнитный диск 29 и сменный оптический диск 31, но следует понимать, что возможно применение иных типов компьютерных носителей информации 56, которые способны хранить данные в доступной для чтения компьютером форме (твердотельные накопители, флеш карты памяти, цифровые диски, память с произвольным доступом (ОЗУ) и т.п.), которые подключены к системной шине 23 через контроллер 55.
Компьютер 20 имеет файловую систему 36, где хранится записанная операционная система 35, а также дополнительные программные приложения 37, другие программные модули 38 и данные программ 39. Пользователь имеет возможность вводить команды и информацию в персональный компьютер 20 посредством устройств ввода (клавиатуры 40, манипулятора «мышь» 42). Могут использоваться другие устройства ввода (не отображены): микрофон, джойстик, игровая консоль, сканнер и т.п. Подобные устройства ввода по своему обычаю подключают к компьютерной системе 20 через последовательный порт 46, который в свою очередь подсоединен к системной шине, но могут быть подключены иным способом, например, при помощи параллельного порта, игрового порта или универсальной последовательной шины (USB). Монитор 47 или иной тип устройства отображения также подсоединен к системной шине 23 через интерфейс, такой как видеоадаптер 48. В дополнение к монитору 47 персональный компьютер может быть оснащен другими периферийными устройствами вывода (не отображены), например колонками, принтером и т.п.
Персональный компьютер 20 способен работать в сетевом окружении, при этом используется сетевое соединение с другим или несколькими удаленными компьютерами 49. Удаленный компьютер (или компьютеры) 49 являются такими же персональными компьютерами или серверами, которые имеют большинство или все упомянутые элементы, отмеченные ранее при описании существа персонального компьютера 20, представленного на Фиг. 4. В вычислительной сети могут присутствовать также и другие устройства, например маршрутизаторы, сетевые станции, пиринговые устройства или иные сетевые узлы.
Сетевые соединения могут образовывать локальную вычислительную сеть (LAN) 50 и глобальную вычислительную сеть (WAN). Такие сети применяются в корпоративных компьютерных сетях, внутренних сетях компаний и, как правило, имеют доступ к сети Интернет. В LAN- или WAN-сетях персональный компьютер 20 подключен к локальной сети 50 через сетевой адаптер или сетевой интерфейс 51. При использовании сетей персональный компьютер 20 может использовать модем 54 или иные средства обеспечения связи с глобальной вычислительной сетью, такой как Интернет. Модем 54, который является внутренним или внешним устройством, подключен к системной шине 23 посредством последовательного порта 46. Следует уточнить, что сетевые соединения являются лишь примерными и не обязаны отображать точную конфигурацию сети, т.е. в действительности существуют иные способы установления соединения техническими средствами связи одного компьютера с другим.
В заключение следует отметить, что приведенные в описании сведения являются примерами, которые не ограничивают объем настоящего изобретения, определенного формулой.