Установка windows server через kvm

Обновлено: 02.07.2024

Перевод системы в режим восстановления

Выбираем RescueMode Linux 64

Нажимаем кнопку Activate Rescue System и сохраняем пароль

Перезапускаем систему выбрав пункт Execute an automatic hardware reset

Установка KVM

Подключаемся к системе через SSH клиент

Я подключаюсь через PuTTY Заходим в систему под пользователем root и паролем, выданном при активации RescueMode. Далее все выполняем в сессии SSH

Загрузка дистрибутива

Необходимо загрузить ISO образ дистрибутива на наш сервер. Это можно сделать при помощи команды WGET, если у вас есть прямой URL или подключить WEBDav, например, ЯндексДиск и выполнить загрузку ISO с него. В моем случае это SW_DVD9_Win_Server_STD_CORE_2016_64Bit_English_-4_DC_STD_MLF_X21-70526.iso

Загрузка KVM

Данный шаг необходим для запуска системы виртуализации KVM и инсталляции ОС из нашего образа на выбранный диск. Список дисков, установленных на ваш сервер, вы уведите при входе. Обычно это /dev/sda

Данной командой мы загружаем архив vkvm-latest.tar.gz и распаковываем его в директорию /tmp

Запуск установки Windows

- net nic - net user , hostfwd = tcp : : 3389 - : 3389 - m 10000M \ - localtime - enable - kvm - cpu core2duo , + nx - smp 2 - usbdevice tablet - k en - us \ - cdrom / tmp / SW_DVD9_Win_Server_STD_CORE_2016_64Bit_English_ - 4_DC_STD_MLF_X21 - 70526.iso \ Данной командой мы указываем куда устанавливать нашу ОС -hda /dev/sda, от куда -cdrom /tmp/SW_DVD9_Win_Server_STD_CORE_2016_64Bit_English_-4_DC_STD_MLF_X21-70526.iso и запускаем VNC сервер на порту 5901 -vnc :1

Подключение через VNC

Загружаем на свой компьютер VNC Viewer и выполняем подключение к серверу Hetzner


Установка операционной системы

После проделанных действий, вы попадается в стандартный инсталлятор Windows. Перед началом установки, необходимо выполнить следующие действия

Нажимаем CTRL + F10
В командной строке выполняем следующее

И продолжаем установку.

После того как операционная система установлена, необходимо на нее передать драйвера для сетевой карты, если у вас не определился сетевой интерфейс. Для этих целей я заказывал Lara, хотя можно было попробовать передать через VNC. Немного торопился, поэтому не проверял передачу через VNC

После установки, гасим Windows и выполняем перезагрузку системы, которая до сих пор находится в режиме Rescue

Данным способом можно установить любую ОС, в том числе и бесплатный гипервизор ESXI от VMWare

(5 оценок, среднее: 5,00 из 5)

Запуск командной строки при установке запускается по SHIFT+F10 а не по Ctrl+F10

Команда запуска:
/root/dev/sdb/tmp/qemu-system-x86_64 \
-net nic -net user,hostfwd=tcp::3389-:3389 -m 10000M \
-localtime -enable-kvm -cpu core2duo,+nx -smp 2 -usbdevice tablet -k en-us \
-cdrom /root/dev/sdb/tmp/SW_DVD9_Windows_Svr_Std_and_DataCtr_2012_R2_64Bit_Russian_-4_MLF_X19-82917.ISO \
-hdb /root/dev/sdb -vnc :1 -boot d

При выполнении команды ls /root/dev/sdb/tmp
Ответ:
kvm-ok qemu-system-x86_64 share SW_DVD9_Windows_Svr_Std_and_DataCtr_2012_R2_64Bit_Russian_-4_MLF_X19-82917.ISO


Технология предоставляет полную виртуализацию на аппаратном уровне. Поэтому, в отличие от популярных LXC и OpenVZ, KVM может запускать в принципе любую ОС, не только Linux (Windows, FreeBSD. ), и Linux, отличающийся от конфигурации основной системы. Если нужна виртуальная машина, не совпадающая параметрами с основным хостом, то выбора особо нет. Включение в ядро было большим прорывом. Теперь поддержка виртуализации в ОС не требовала установки гипервизора (как Xen) и могла быть реализована в любом дистрибутиве, включая настольный. Из коробки доступен VNC, дающий возможность управлять виртуальным сервером с момента загрузки (то есть когда еще не работает SSH), как будто из локальной консоли. Проект активно сотрудничает с другим подобным решением QEMU, задействованы некоторые утилиты и общий формат файла образа Qcow2.

Минусы, конечно, тоже есть. Куда же без них. Главный — процессор должен иметь аппаратную поддержку виртуализации Intel VT-x или AMD-V. Проверить их наличие можно вручную или при помощи утилит:

Также о поддержке технологий говорят флаги в CPU:

В зависимости от производителя процессора будет загружен свой модуль ядра (kvm-amd.ko либо kvm-intel.ko).

Проверяем поддержку KVM

Проверяем поддержку KVM

Накладные расходы чуть выше, чем при использовании LXC и OpenVZ. Причин тому две.

KVM-контейнер запускает свою копию ядра и окружения, и под них требуется память. LXC и OpenVZ же используют ядро и системные вызовы сервера. Поэтому при одинаковых характеристиках на хостинге у них совершенно разные возможности. При создании KVM-контейнера под него сразу резервируются все ресурсы согласно установкам. Это хорошо видно в htop. Стоит добавить ОЗУ в KVM, как сразу на это значение увеличивается объем занятой памяти. Выйти за лимиты VM не может, они устанавливаются жестко. В этом даже и плюс, можно сразу рассчитать будущую нагрузку на своем сервере, а ресурсы никто не позаимствует.

И VM работают относительно стабильно в плане производительности. В то время как при OpenVZ-виртуализации ресурсы выделяются динамически по мере надобности и каждый виртуальный сервер использует ровно столько ресурсов, сколько ему сейчас нужно. Незанятые ресурсы остаются свободными. Поэтому он и популярен у хостеров, ведь можно всегда напихать чуть больше VM, и именно поэтому виртуальные машины, созданные с запасом, могут работать то быстрее, то медленнее. Иногда оптимизация VM под OpenVZ — настоящая мука: непонятно, почему сервер стал работать по-другому — из-за новых настроек или внешних факторов.

Администрировать KVM сложнее, так как прозрачный доступ к файлам, процессам, консолям и сети контейнеров отсутствует, это приходится настраивать самостоятельно. Перестройка параметров VM в KVM (CPU, RAM, HDD) не очень удобна и требует дополнительных действий, включающих перезагрузку ОС. В том же OpenVZ это можно сделать на лету. Сам проект не предлагает удобных графических инструментов для управления виртуальными машинами, только утилиту virsh, реализующую все необходимые функции. Но, поискав в Сети, можно найти несколько интерфейсов, хотя для индивидуального использования одной или нескольких VM их обычно ставить нет смысла. К тому же много open source проектов, активно развивавшихся во время большого интереса к виртуальным машинам, сегодня стали коммерческими, хотя некоторые по-прежнему предлагают обрезанную free-версию. В репозитории пакетов есть virt-manager, предлагающий графический интерфейс для управления KVM и другими типами VM, поддерживающими virtlib, как установленных локально, так и удаленно через SSH.

В качестве веб-интерфейсов можно порекомендовать старенький, но еще рабочий WebVirtMgr, бесплатный UVMM UCS Core Edition, openQRM Free Community Edition и другие. Кроме того, существуют специальные дистрибутивы вроде Proxmox VE, в котором все необходимые инструменты для создания и управления VM на базе KVM и LXC уже есть (правда, он подходит для bare metal установки, а не на удаленный VDS).

Установка KVM

Плюсы KVM в том, что она работает из коробки и что процессоры серверов хостеров однозначно поддерживают эту технологию. Поэтому вполне реально при наличии свободных ресурсов подгрузить в VDS еще одну виртуальную машину (или несколько). Конечно, под фактически двойной виртуализацией они будут работать не так быстро, как на железе, но если большая нагрузка не планируется, то этого вполне должно хватить. Более того, у некоторых хостингов есть rescue-инструменты, дающие возможность подмонтировать другую файловую систему (в hetzner это rescue/LARA ), подменить имеющуюся и даже установить свою ОС. При некотором умении можно по тарифам Linux абсолютно легально использовать Windows.

Наша задача — установить под KVM Win и настроить доступ. KVM работает со всеми версиями Win, включая и последние. Но Win капризней к ресурсам, поэтому тариф следует подбирать с учетом минимальных системных требований и накладных расходов на ОС и виртуализацию. На Digital Ocean, например, Win2012R2 при 4 Гбайт ОЗУ сильно тормозит, а если выделить 6+ Гбайт, то уже вполне нормальный отклик. В различных дистрибутивах и даже версиях процесс немного отличается, но в основном это касается названий пакетов. Мы будем использовать Ubuntu 16.06. Ставим пакеты.

Проверяем поддержку KVM.

Если такой ответ получен, значит, все нормально. Список поддерживаемых ОС и их правильное название можно получить при помощи osinfo-query .

Список поддерживаемых ОС и их названия

Список поддерживаемых ОС и их названия

Конфигурационные файлы libvirt находятся в каталоге /etc/libvirt , журналы, в которых нужно искать ответы на проблемы, размещаются в /var/log/libvirt . В /var/lib/libvirt несколько каталогов: в boot система, если не указан путь, будет искать образ для установки гостевой системы, а в images размещать жесткие диски.

Управление виртуальными машинами из консоли производится при помощи утилиты virsh . Параметров много, их все можно узнать, введя:

Вначале просто стоит пройтись и познакомиться, чтобы понять суть. Список ОС пока пуст:

Проверяем, что сеть настроена. По умолчанию используется default (подробнее дальше по тексту).

Если в ответ получаем, что невозможно подключиться, проверяем права доступа на сокет и каталоги выше (в основном в этом проблема).

И перезагружаем модули:

Далее два варианта. Можно самостоятельно установить операционную систему или взять уже готовый образ с установленной ОС. Первый шаг в общем отличается тем, что нужно подготовить диск, запустить VM и установить ОС стандартным способом. Создадим диск размером 25 Гбайт.

Если в будущем нужно изменить размер диска, то используется команда resize:

Некоторые параметры очевидны, поэтому кратко:

  • name — имя, по которому можно обращаться к VM;
  • ram и vcpus — количество памяти и vCPU, выделяемых VM;
  • disk — имя диска, формат и драйвер;
  • cdrom — виртуальный CD-ROM, здесь указан ISO-образ, с которого будет загружаться система;
  • network — сетевое подключение, тип и модель (можно использовать virtio, но бывают проблемы, потом можно сменить);
  • os-type и os-variant — тип ОС.

Параметр --vnc имеет смысл только на сервере без GUI, при наличии интерфейса KVM сразу откроет окно через SDL. Также можно подключиться локально при помощи virsh:

Удаленно также можно зайти с использованием любого VNC-клиента, при необходимости используя port forwarding (см. ниже).

Коннектимся к Windows, запущенной под KVM

Коннектимся к Windows, запущенной под KVM

После установки ОС можно приступать к работе. Второй вариант позволяет использовать уже готовый диск с установленной ОС. Его можно скопировать с готовой системы, сконвертировать при помощи qemu-img convert, которая поддерживает форматы дисков практически всех систем виртуализации. Или взять с сайта проекта Cloudbase.

Запуск почти не отличается от предыдущего, убираем, если не нужен, cdrom и добавляем --import .

В дальнейшем можно управлять поведением VM при помощи virsh start|reboot|shutdown|suspend|resume|destroy|undefine|edit|autostart|info и так далее.

Настройки VM хранятся в отдельных XML-файлах в каталоге /etc/libvirt/qemu , имя соответствует параметру --name . Можно их просмотреть, отредактировать при необходимости, скопировать при помощи virsh. Например, нужно изменить настройки сетевого адаптера.

Скопируем настройки в файл.

Теперь в любом текстовом редакторе правим параметры второй машины, указываем новый виртуальный диск и можем запускать второй экземпляр. Для клонирования есть и другой вариант.

Настройки виртуальной машины

Настройки виртуальной машины

Сеть в KVM

Настройка сети — самый важный момент при работе с KVM. По умолчанию используется Usermode или default, когда базовая система работает как маршрутизатор между внешней и гостевой сетью. Гостевая ОС может получать доступ к внешним сетевым сервисам, но не видна из сети. IP выбирается автоматически при помощи DHCP из диапазона 192.168.122.0/24 , интерфейс основной ОС всегда имеет IP 192.168.122.1 . Для доступа к сервисам нужно самостоятельно настроить маршрутизацию. После установки libvirtd должен создать ряд NAT-правил iptables .

Правила iptables после установки KVM

Правила iptables после установки KVM

Второй вариант — Bridged, когда интерфейс гостевой ОС привязывается к физическому интерфейсу и VM доступна извне без допнастроек. Этот вариант чуть сложнее в настройках, так как из-за перестроек можно потерять SSH-подключение. Поэтому при отсутствии локальной консоли (Java/веб-аплета у провайдера) пользоваться им нужно только после тщательного тестирования, и мы его рассматривать не будем.

В первом варианте удобнее настроить KVM так, чтобы она назначала гостевой системе один и тот же IP-адрес. Это можно сделать прямо в конфигурационном файле /etc/libvirt/qemu/networks/default.xml или вызвав

Далее добавляем параметр host в секции dhcp :

Редактируем сетевые настройки для виртуального хоста

Редактируем сетевые настройки для виртуального хоста

И так для каждого узла. После чего перезапускаем сеть.

Теперь можем указать маршрут к сервису в основной системе:

По умолчанию VNC в хостовой машине слушает только локальный порт. Поэтому при подключении с помощью VNC-клиента нужно обязательно пробрасывать порты.

Изменить эту ситуацию можно несколькими способами: добавив параметр --vnc,listen=0.0.0.0 и при необходимости указав другой порт --vncport 5901 .

Аналогичные настройки есть в сетевых установках хоста.

Чтобы не менять установки для каждой VM, проще изменить это поведение глобально:

Заключение

Ну вот, собственно, мы имеем Windows, запущенную внутри Linux. Конечно, рассматривать KVM для локальной установки, где сильны позиции у VirtualBox и VMware Workstation, не стоит, но при наличии свободных ресурсов на VDS можно быстро развернуть еще одну машину. Скорость, конечно, будет невелика, но для небольших тестов вполне достаточная.

В зависимости от конфигурации сервера, в панели управления могут быть доступны шаблоны автоматической установки операционной системы:

  • Debian;
  • Ubuntu;
  • CentOS;
  • Proxmox;
  • Opensuse;
  • VMware ESXi;
  • Windows Server;
  • Oracle Linux;
  • AlmaLinux.

Переустановить ОС можно в любое время.

Справка

  • Proxmox представляет собой дистрибутив Linux, основанный на Debian, с помощью которого можно быстро развернуть инфраструктуру виртуальных машин и управлять ей через веб-интерфейс. Имеется возможность создавать высокодоступные кластеры с помощью Proxmox VE НА Manager. Для образа автоустановки Proxmox используется открытый вариант Proxmox VE (без поддержки), который устанавливает поверх Debian дополнительные пакеты. Если нужна официальная поддержка от Proxmox, то потребуется смена репозитория по подписке.
  • VMware ESXi — гипервизор, де-факто уже являющийся стандартом в мире виртуализации. В качестве гостевых могут использоваться практически любые ОС: Linux, Windows, FreeBSD, Solaris и другие. Размер дистрибутива VMware ESXi составляет всего 348 МБ, из которых большую часть составляют драйверы для различных операционных систем (VMware Tools). Через нашу панель управления можно установить только бесплатно распространяемый гипервизор. Чтобы развернуть полноценный кластер из виртуальных машин, потребуется установить дополнительные платные компоненты. Вам нужно будет приобрести их отдельно через партнёров VMware.

Автоматическая установка ОС

На странице сервера в панели управления перейдите в раздел Операционная система и нажмите кнопку Изменить конфигурацию ОС.

Выберите один из шаблонов ОС:

  • Для Linux-based систем по умолчанию выставлены оптимальный уровень RAID и разметка диска. Если нужны специальные параметры ― разметьте диск самостоятельно, когда настраиваете шаблон автоматической установки;
  • Если выберите Windows Server, мы бесплатно установим ознакомительную версию. Лицензию нужно будет приобрести отдельно в разделе Услуги. Разметить диск можно инструментами Windows после установки ОС.

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

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

Установка ОС через KVM-консоль

В KVM-консоли имеется возможность использования iso-образов для установки с нуля любого образа операционной системы:

Установка будет идти с выбранного образа. Произвольную разбивку диска при необходимости можно сделать во время установки.

Установка ОС через Selectel Boot Menu

Через Selectel Boot меню можно получить доступ к загрузчикам наиболее распространенных серверных операционных систем, а также к программам для диагностики и восстановления системы.

Загрузитесь в Selectel Boot Menu:

Все указанные в меню Install Operating System дистрибутивы представляют собой net-install версии, и при их установке загружаются только ядро и initrd. Все остальные файлы можно загрузить из локальных или публичных репозиториев. Поэтому в начале установки вам будет предложено указать репозиторий, с которого будет осуществляться загрузка. Чтобы загрузка осуществлялась быстрее и удобнее, вы можете воспользоваться нашим репозиторием.

Далее установка системы осуществляется точно так же, как и при установке с диска. Некоторые ОС (рядом с ними в списке имеется пометка Semi-Auto) могут быть установлены в полуавтоматическом режиме. При выборе этого варианта установщик запрашивает наиболее важные параметры (например, настройки сети, настройки RAID/LVM и др.).

В разделе Tools and Utilities можно найти ряд полезных утилит для установки и восстановления системы.

Сегодня постараюсь описать все трудности в пути установки операционной системы (ОС) семейства Windows (а конкретнее Windows Server 2008 R2) на виртуальную машину KVM (используется qemu-kvm) в ОС Linux (а именно Debian 7)


Сложностей с установкой kvm возникнуть не должно

Далее необходимо скопировать установочный образ операционной системы куда-нибудь на диск. К примеру можно скопировать в

sudo dd if=/dev/cdrom of=Window_Server_2008_R2.iso

Самое необходимое: скачайте драйвера virtio, без них установка будет очень-очень долгой.

Затем создадим папку для файлов виртуального жёсткого диска

qemu-img create -f qcow2 WIN2K8R2.qcow2 25G

К сожалению, мне пришлось подключаться к удалённому рабочему столу, потому что по ssh установить Windows не удавалось, система требовала графический интерфейс.

Для запуска qemu под юзером производим следующие шаги:

Редактируем /etc/libvirt/qemu.conf, чтобы виртуальные машины работали у нас от непривилегированного пользователя:

user = "username"
group = "libvirt"

Поскольку у нас будут использоваться tun-устройства, нужно выставить capability CAP_NET_ADMIN, сделать это можно как для отдельного исполняемого файла, так и для пользователя в целом, или настроить чтобы libvirt не сбрасывал нужные права для qemu/kvm.

Выставляем для отдельного файла:

sudo setcap cap_net_admin=ei /usr/bin/kvm

Или выставляем для пользователя в целом в файле /etc/security/capability.conf:

Или выставляем соответствующую настройку в /etc/libvirt/qemu.conf:

Добавим пользователя в группу libvirt и kvm:

Установка Windows Server проста до безобразия, если знать когда подсунуть файлы драйверов для жёсткого диска.

Приведу краткий перечень действий, необходимых для корректной установки:

Единственная трудность случилась в конце установки, когда нужно придумать пароль для учётной записи администратора. Через RDP почему то не печатались иностранные символы, пришлось воспользоваться экранной клавиатурой.

Теперь осталось пробросить эту машину во внешку и подключится к ней по RDP, минуя RDP хостовой системы. Это пока не решено.

Читайте также: