Как запустить Windows на сервере Linux KVM

Допустим вам необходимо произвести запуск нескольких виртуальных машин, работающих под Windows используя один из серверов Линукс. Для этого потребуется social media marketing один из последних дистрибутивов Linux, встроенная служба виртуализации KVM, непосредственно Windows 2003 и ряд действий.

Выбираем систему

Windows 2003 выбрана не случайно(я пользуюсь сборками от monkrus), из всех систем семейства Windows она под Линуксом работает наиболее оптимально. Речь идет, о Windows 2003 сервис-пак 2 (32 бита). Попытки запустить другие системы, используя Linux KVM, показали однозначные результаты. Например, Windows XP работала крайне неустойчиво. Возникали ошибки по части загрузки процессора (100% уходило на процесс csrss.exe, BSOD,  также наблюдались разрывы RDP-сессий). Достичь стабильной работы можно и если это удалось сделать, лучше всего сразу отключить автоматическое обновление ОС. Windows 7 показала неплохие показатели работоспособности, недостатком стали высокие требования – для запуска требуется не менее 3 Гб ОЗУ (что не все могут себе позволить). Windows 2003, в свою очередь, работает стабильно (поддерживает работу с virtio), совместима с XP и требует около 800 Мб ОЗУ. Предельный лимит памяти составил 4 Гб (не учитывая PAE), чего вполне хватает для удобной работы.

Перечень параметров, которые используются для запуска

Общая команда:

#!/bin/sh VM_ID=»10″ MACBASE=»00:16:3e:ff:ff» HDA=»vm_$.img» HDB=»temp.img» HDC=»w2k3_r2_ent_rus_x86/ru_win_srv_2003_r2_enterprise_with_sp2_vl_cd1_X13-46484.iso» HDD=»virtio-win-0.1-52.iso» sudo kvm \ -enable-kvm \ -boot «menu=on,order=d» \ -m 1024M \ -balloon virtio \ -name «kvm_$» \ -drive «file=$HDA,index=0,media=disk,cache=writeback» \ -drive «file=$HDB,index=1,media=disk,cache=writeback,if=virtio» \ -drive «file=$HDC,index=2,media=cdrom,cache=writeback,readonly» \ -drive «file=$HDD,index=3,media=cdrom,cache=writeback,readonly» \ -net «nic,model=virtio,macaddr=$:$» \ -net «tap,ifname=tap$,script=no,downscript=no» \ -vnc «0.0.0.0:$»

Чтобы создать внутри новой виртуальной машины сетевую карту для Windows, используем параметр «»-net nic,model=virtio». После запуска откроется мастер настройки, с помощью которого можно установить драйвер. Аналогичный параметр «-net tap,…» создает в самом Linux-е специальный интерфейс для сетевой связи, который будет использоваться в Windows.

Можно использовать параметр «-vnc …» (целесообразно применять на сервере, на котором отсутствует GUI). Базовые настройки KVM  открывают окно с помощью SDL. Переключение между окнами выполняется комбинацией Кнтрл+Шифт+Альт+1 (или +2).

Важно правильно назначить все диски новой системы.

  • Параметр HDC – Образ в формате ISO, в котором находится Windows. С этого образа будет выполняться первая загрузка ОС внутри машины (для этого задаем «-boot order=d»).
  • HDD – образ ISO, который содержит драйвера virtio. Можно скачать в Интернете.
  • HDA – образ без данных, который необходим только для того, чтобы система запросила драйвер для неизвестного устройства. По требованию устанавливаем драйвера virtio, и спокойно переключаемся с диска virtio на IDE (и наоборот). HDA создается с помощью «kvm-img create -f qcow2 temp.img 1G».

Из команды запуска, в последствии (когда будет установлена система и все драйвера) необходимо убрать параметры «-boot» и «-drive» (за исключением первой строки), а также добавить «if=virtio».

Некоторые настройки Windows

Система установлена, теперь необходимо ее правильно настроить. Прежде всего, открываем Панель управления – Система, отключаем Автоматическое обновление и с ним же Отчет об ошибках. Далее следует уменьшить дамп памяти (по умолчанию он максимальный), чтобы избежать зависания системы. Вкладка «Дополнительно» — пункт «Загрузка и восстановление» — выбираем «Параметры», раздел «Отказ системы», «Запись отладки» — указываем Малый дамп памяти (не более 64 кб). Также для улучшения производительности можно подкорректировать настройки TCP/IP. После этих настроек можно устанавливать драйвера virt-stor (для диска), и virt-net (для карты). В диспетчере оборудования образуются соответствующие записи. Также можно (и нужно) изменить механизм выделения памяти хост-системы для виртуальной машины. Используем для этого компоненты MOM и VMM. Общее название механизма — Memory ballooning. Используемое устройство — devmgmt.msc отобразится в Windows под именем PCI standard RAM controller (тип неизвестен). Открываем свойства, вкладку «Драйвер», указываем обновление и прописываем путь к файлу balloon.inf (находится на VirtIO CD).