Устанавливаем SUSE Linux Enterprise Server 10 SP3 под Hyper-V

Недавно вышла вторая версия компонентов интеграции Hyper-V для Linux систем. Подробно о том, что улучшилось и изменилось можно прочитать в блоге https://blogs.technet.com/vm/archive/2009/07/22/hyper-v-linux.aspx

Я же хотел поговорить о том как их устанавливать и применять для повышения скорости работы SUSE Linux Enterprise Server 10 SP3 под Hyper-V. Для начала краткое введение в предмет нашего сегодняшнего разговора.

SLES как и openSUSE под Hyper-V можно было успешно запускать уже несколько лет назад. Говоря точнее, делать это можно было еще с момента ранних бета версий Hyper-V R1 встроенного в Windows Server 2008 и Microsoft Hyper-V Server 2008.

Но к сожалению из-за отсутствия компонентов интеграции (Integration components - аналог VMadditions)  гостевые системы Linux были лишены поддержки синтетических виртуальных устройств. Им были доступны только эмулируемые устройства. Это ограничивало быстродействие таких гостевых систем и не позволяло им использовать всю мощь Hyper-V и физического оборудования. Эмулируемые устройства по умолчанию работают медленнее, чем синтетические. Это означает, что гостевым системам Linux был доступен лишь эмулируемый сетевой адаптер (Legacy Network Adapter). Такой адаптер не позволяет добиться скорости обмена данными виртуальной машины с сетью более чем 100 Мбит, даже если физический адаптер работает на скорости 1 Гбит. Это ограничение можно было обойти, подключив к виртуальной машине несколько адаптеров и объединив их в единый канал с помощью механизма bonding. Как это сделать описано тут https://en.opensuse.org/Bonding. Второе ограничение было связано с тем, что жесткие диски виртуальной машины тоже были реализованы через эмулируемое устройство. В целом такой уровень производительности был приемлем для многих. Большинство из клиентов выбравших Hyper-V как систему виртуализации для своих унаследованных Linux ОС вполне довольны тем как гостевые ОС работают даже без синтетических драйверов.  Но мы хотели улучшить ситуацию, повысив утилизацию оборудования и улучшив быстродействие и добавив удобство при использовании Linux под Hyper-V.

Поэтому появилась первая версия интеграционных компонентов - Linux Integration Components for Windows Server 2008 Hyper-V. Она улучшила некоторые проблемные участки, но все еще была не совершенна. Для работы эта версия требовала наличие ядра с компонентами Xen. Гостевые Linux системы стали работать быстрее, но процесс установки компонентов был не так уж прост. Подробно останавливаться на этом этапе я не буду. Инструкций детально описывающих как устанавливать эту версию интеграционных компонентов в сети полно. Можете воспользоваться, например этой https://www.virtualizationteam.com/microsoft/hyper-v/install-suse-linux-enterprise-10-sp1-component-integration-for-linux-on-hyper-v.html.  С выходом второй версии компонентов интеграции эти инструкции становятся все менее полезными. Всем, кто использует первую версию компонентов интеграции, рекомендуется обновиться до второй версии. Как обновляться написано в документе Linux Integration Components Read Me.pdf

Итак, мы добрались до момента, когда вторая версия компонентов интеграции уже вышла. Она принесла с собой следующие новые возможности:

  • Шина VMBus позволяющая реализовать высокоскоростной обмен данных между гостевой и родительской системой;
  • Синтетический контроллер дисков с поддержкой быстрой загрузки (FastPath);
  • Синтетический сетевой адаптер. В зависимости от мощности ЦПУ скорость передачи данных между гостевыми и родительской системами может достигать 10 Гбит.

Чтобы воспользоваться всеми этими дарами прогресса, нужно всего лишь установить вторую версию компонентов интеграции. Начнем с установки гостевой ОС.

Установка SUSE Linux Enterprise Server 10 SP3 под Hyper-V

Наша задача для начала установить SUSE Linux Enterprise Server 10 SP3 под Hyper-V R2 в Windows Server 2008 R2. А затем уже установить в гостевую ОС компоненты интеграции

Я буду описывать установку 32-х битного варианта  SUSE Linux Enterprise Server 10 SP3. Для 64-х битного варианта действия, которые необходимо выполнить будут абсолютно такими же.

Процесс довольно прост. Создаем виртуальную машину и определяем её характеристики:

SLES_Hyper-V_1 SLES_Hyper-V_2 SLES_Hyper-V_3
SLES_Hyper-V_4 SLES_Hyper-V_5  

По умолчанию Hyper-V создает виртуальную машину с синтетическим сетевым адаптером. Как я уже писал, без компонентов интеграции он работать не будет, поэтому удаляем его и добавляем эмулируемый адаптер под названием Legacy Network.

SLES_Hyper-V_6 SLES_Hyper-V_7 SLES_Hyper-V_8

Вот теперь можно приступать к установке SLES. Никаких хитрых режимов работы инсталлятора выбирать не нужно, все работает в конфигурации по умолчанию. Среди устанавливаемых компонентов и приложений рекомендуется выбрать компилятор gcc и исходные тексты ядра kernel-source, если собираетесь использовать компоненты интеграции. Впрочем, сделать это можно и после завершения установки системы.

SLES_Hyper-V_9 SLES_Hyper-V_10

Как только установка завершится настраиваем DNS имя, разрешение экрана. Я выставил разрешение  1024х768, иначе на моем 15-ти дюймовом мониторе окно виртуальной машины не будет помещаться в экран. Для смены разрешения нажимаем несколько раз CTRL-ALT-BREAK и продолжаем установку в удобном разрешении.

SLES_Hyper-V_11 SLES_Hyper-V_12

Если, вы производите установку на удаленном сервере Hyper-V, подключившись к нему через RDP, то без компонентов интеграции мышь в окне виртуальной машины у вас работать не будет. Поэтому все опции придется переключать с помощью клавиатуры. Исправить это можно двумя способами. Установить в гостевую ОС компоненты интеграции, и затем драйвер синтетического устройства мыши или работать локально на сервере Hyper-V. Я обычно выбираю второй вариант. Все новые ОС я устанавливаю на довольно дешевый ноутбук, работающий под управлением Windows Server 2008 R2 с Hyper-V. На нем я локально создаю виртуальную машину, устанавливаю все нужны компоненты интеграции и затем уже экспортирую виртуальную машину. Получившийся набор файлов виртуальной машины я переношу на основной сервер Hyper-V и запускаю там. В этот момент мышь внутри окна виртуальной уже работает даже через RDP.

После окончания установки загружаем SLES в первый раз, настраиваем и тестируем сетевой интерфейс eth0. У меня в сети используется DCHP, вы же можете использовать и статическую настройку IP адреса. Оба способа работают надежно. Если необходимо можете обновить гостевую ОС.

SLES_Hyper-V_15 SLES_Hyper-V_16
SLES_Hyper-V_17 SLES_10_5

Базовые функции гостевой ОС работают нормально, и если вам больше не охота заниматься настройкой, то можно остановиться здесь.  SLES будет работать вполне нормально в качестве гостевой системы.

Установка компонентов интеграции Hyper-V

Мы же пойдем дальше и установим в гостевую систему компоненты интеграции Hyper-V, дабы получить доступ к более производительным виртуальным устройствам.

Скачать компоненты можно здесь - Linux Integration Components for Windows Server 2008 Hyper-V R2. Обратите внимание что эта версия компонентов подходит для обоих версий Hyper-V и поддерживает следующие системы виртуализации:

  • Windows Server 2008 с Hyper-V RTM с обновлением KB950050
  • Microsoft Hyper-V Server 2008
  • Windows Server 2008 R2 Hyper-V RTM
  • Microsoft Hyper-V Server 2008 R2 RTM

Итак приступим.

Выключаем гостевую ОС и добавляем в виртуальную машину синтетическое сетевое подключение, а Legacy Adapter удаляем.

Скачиваем компоненты интеграции для Hyper-V если вы этого еще не сделали и запускаем их. В результате получаем файл образа виртуального DVD под названием LinuxIC v2.iso. Подключаем его к гостевой системе через свойства виртуальной машины либо через меню Media.

SLES_Hyper-V_Integration_components SLES_Hyper-V_19

У меня в системе включено автоматическое монтирование DVD, поэтому диск с исходными текстами компонентов интеграции был подключен к /media/CDROM. Я надеюсь, как монтировать DVD в Linux вы знаете. Создаем директорию, где будем компилировать модули ядра. Копируем туда исходные коды и начинаем сборку и установку.

# mkdir /opt/Linux_ic

# cp /media/CDROM/* /opt/Linux_ic –R

# /opt/Linux_ic/setup.pl drivers

Если все прошло удачно, то увидим что модули netvsc, storvsc, blkvsc, vmbus, scsi_mod загрузились. Проверить это можно с помощью команды lsmod.

# /sbin/lsmod | grep vsc

Результат должен быть примерно такой:

SLES_Hyper-V_Integration_components_2

Перезагружаем гостевую систему. И настраиваем сетевой интерфейс seth0.

SLES_10_6

Как видите, ничего сложного в этом нет. Теперь неплохо было бы установить драйвер синтетического устройства мыши, чтобы было удобнее управлять гостевой ОС через подключение vmconnect или RDP.

На данный момент драйвера мыши не включены в поставку компонентов интеграции и разрабатываются компанией Citrix в рамках отдельного проекта Satori. Скачиваем с сайта файл inputvsc.iso и подключаем его как виртуальный DVD к гостевой системе.

# mkdir /opt/inputvsc

# cp /media/CDROM/* /opt/inputvsc –R

# /opt/inputvsc/setup.pl inputdriver

Если все прошло удачно, то увидим что в системе появились модули inputvsc и hid. Проверяем как обычно с помощью lsmod

# /sbin/lsmod | grep vsc

SLES_10_7

После этого виртуальное устройство синтетической мыши сразу же начнет работать и вам больше не потребуется нажимать CTRL+ALT+LEFT чтобы освободить мышь из окна гостевой ОС. Плюс к этому мышь будет нормально работать через RDP подключение. Теперь SLES полностью готов к работе под управлением Hyper-V. Дабы не проходить это процедуру каждый раз заново рекомендуется экспортировать полученную виртуальную машину и использовать ее при развертывании новых гостевых ОС на основе SLES. Сделать это можно вручную или с помощью SCVMM.

Надеюсь, данная статья поможет вам. В ближайшее время я опишу выполнение подобной процедуры для RHEL и его клонов. С радостью услышу ваши предложения по тем ОС которые вы бы хотели протестировать под Hyper-V.