Мы переводим нашу платформу виртуализации с Citrix XenServer на Hyper-V на Windows Server 2008 R2. В рамках этого проекта мне нужно в той или иной форме перенести некоторые серверы Debian Linux на Hyper-V. Я успешно построил сервер на базе Debian на нашей новой платформе Hyper-V и начинаю его тестировать.
Debian 6 (Squeeze) использует ядро 2.6.32, которое включает синтетические драйверы Hyper-V, но Microsoft не считает его поддерживаемой гостевой операционной системой. Я немного сомневаюсь в том, чтобы попытаться использовать их, если нет веской причины, поскольку у других были проблемы (Вот, и Вот).
Почему я должен беспокоиться о том, чтобы: а) иметь дело с сообщениями о нестабильности драйверов Hyper-V, которые в настоящее время находятся в ядре, б) пытаться собрать новое ядро или в) пытаться заставить Дополнения к виртуальным машинам работать с дистрибутивом, для которого они не были созданы, когда кажется, что все «просто работает»?
РЕДАКТИРОВАТЬ: Чтобы добавить немного к ответам ... Дрейф часов кажется существенной проблемой (поскольку NTP не может держать часы во времени), если вы не используете Linux Integration Services. Видеть KB918461. Очевидно, использование компонентов vmbus, включенных в службы интеграции Linux, решает эту проблему. Мое тестирование выявило это как проблему.
Синтетические драйверы «общаются» напрямую с реальным оборудованием, минуя большую часть гипервизора (для обычных операций с данными). Это значительно сокращает накладные расходы гипервизора, связанные с большей частью сетевой активности.
Если ваш сервер плохо взаимодействует с сетью или ваше оборудование недостаточно загружено, вам должно быть хорошо с эмулированными драйверами. Однако это определенно снижает производительность.
Когда ваш гипервизор эмулирует оборудование, возникает множество регистров, проблем с синхронизацией и других вещей, которые драйвер клиента будет ожидать, когда он делает такие вещи, как помещает пакеты в буфер сетевой карты или помещает данные в блок на диске. .
Когда вы используете синтетический драйвер, вы пропускаете всю «возню с этим регистром (который в любом случае эмулируется гипервизором)» и сразу переходите к этапу «вот данные - поступайте с ними правильно».
Так что весь процесс намного эффективнее.
У меня нет для вас полного ответа, но есть некоторый опыт, который может помочь завершить обсуждение. Первоначально мы использовали эмулированные драйверы на наших машинах Red Hat, но администратор Linux жаловался на ужасную производительность сети. В конце концов мы получили синтетические драйверы, работающие через дополнения к виртуальным машинам, и это имело большое значение (у меня нет доказательств или подробностей, так что относитесь к этому с долей скепсиса).
По отдельности мы иногда создаем изображения виртуальных машин по сети, и когда мы это делаем, мы должны использовать эмулированную сетевую карту на компьютере с Windows, поскольку синтетическая сетевая карта не поддерживает загрузку PXE. Когда создание образа завершено, мы заменяем эмулируемую сетевую карту синтетической. Опять же, я говорю здесь о Windows (а не о Linux), но это еще одна разница.
В общем, я понимаю, что эмулируемые устройства эмулируют более старые, более устоявшиеся или более общие устройства, для которых практически каждая ОС или дистрибутив будут иметь встроенную поддержку. В этом плане они более универсальны. Синтетические устройства не эмулируют какие-либо другие устройства, распознаваемые вашей ОС или дистрибутивом, поэтому вам потребуются драйверы, предоставленные Microsoft, подобные тем, которые вы получаете при установке дополнений к виртуальной машине.