Как настроить гипервизор KVM на Ubuntu Server?
Шаг 1. Проверьте поддержку аппаратной виртуализации
Виртуализатор KVM из нашего примера является средством аппаратной виртуализации, то есть использует для виртуализации специальную процессорную архитектуру. Соответственно, на некоторых процессорах, где этой архитектуры нет, его запуск невозможен.
Чтобы проверить, поддерживает ли ваше оборудование аппаратную виртуализацию, введите в терминал соответствующую команду:
egrep ‘(vmx|svm)’ /proc/cpuinfo
Если результат вывода не пуст, как на картинке ниже, то, скорее всего, с поддержкой аппаратной виртуализации всё в порядке.
![](https://trueconf.ru/blog/wp-content/uploads/2018/01/image3.png)
Шаг 2. Установите KVM
Для начала обновите систему и пакеты
$ sudo apt-get update && sudo apt-get upgrade –y
Теперь установите нужные пакеты
$ sudo apt-get install ubuntu-virt-server python-vm-builder kvm-ipxe –y
Нужно проверить, что текущая запись состоит в группе libvirtd:
$ cat /etc/group | grep libvirtd
Вот пример типичного вывода этой команды если в группе содержатся группа 111 и пользователь andrey:
libvirtd:!:111:andrey
Если текущего пользователя в группе нет, то его можно добавить отдельной командой:
$ sudo adduser id -un
libvirtd
Adding user ‘andrey’ to group ‘libvirtd’ …
Adding user andrey to group libvirtd
Done.
Далее обязательно нужно заново войти в систему и после этого можно проверить запуск KVM:
$ sudo virsh -c qemu:///system list
ID Имя Статус
———————————
KVM запустится, но вывод будет пустым, поскольку виртуальная машина ещё не создана — это будет сделано на следующих шагах.
Шаг 3. Создайте сетевой мост
Далее нужно создать сетевой мост. Для этого может понадобиться отредактировать файл /etc/network/interfaces.
В этой файле есть строка, задающая основной сетевой интерфейс. Она находится после строки-комментария «# The primary network interface». Если сетевым интерфейсом назначен eth0 (в строке написано «auto eth0»), то его нужно заменить на br0, а в конец файла добавить четыре новых строки:
bridge_ports eth0
bridge_stp off
bridge_maxwait 0
bridge_fd 0
На картинке ниже представлен пример такого редактирования, только вместо изменения строки «auto eth0» мы её закомментировали (добавили знак решётки в начале, сделав игнорируемой) и добавили после неё новую аналогичную (с дополнительным комментарием перед ней).
![](https://trueconf.ru/blog/wp-content/uploads/2018/01/image5.png)
После этого нужно перезапустить сеть, а лучше даже всю операционную систему:
$ sudo /etc/init.d/networking restart
$ sudo shutdown –r now
Шаг 4. Настройте сетевой шлюз
Для настройки шлюза нужно отредактировать ещё один файл, mc/etc/sysctl.conf. В нём нужно найти и раскомментировать следующую строку:
net.ipv4.ip_forward=1
После этого следует ввести команду для применения изменений и ещё раз перезапустить ОС:
$ sudo sysctl -f
$ sudo shutdown –r now
Шаг 5. Создайте виртуальную машину
Для создания виртуальной машины нужно выполнить ряд команд:
$ apt-cache search virt-install
virtinst — Programs to create and clone virtual machines
$ apt-cache search virt-viewer
virt-viewer — Displaying the graphical console of a virtual machine
$ sudo apt-get install virtinst virt-viewer –y
$ sudo virt-install -n UServer -r 1024 -f /var/lib/libvirt/images/server.img -s 10 -c /var/lib/libvirt/images/ubuntu-12.04.4.iso —accelerate —os-type=linux —os-variant=generic26 —graphics vnc,listen=0.0.0.0 -w bridge:br0 –v
Последняя из этих команд содержит большое количество параметров, назначение которых следующее:
- -n Userver — имя виртуальной машины;
- -r 1024 — выделяемый объем ОЗУ для нее;
- -f server.img — файл, являющийся виртуальным жёстким диском для гостевой ОС;
- -s 10 — объем этого диска в гигабайтах;
- -c ubuntu-12.04.4.iso — образ дистрибутива гостевой ОС, подключаемый как виртуальный cdrom;
- —accelerate —os-type=linux —os-variant=generic26 -v — дополнительные параметры для оптимизации виртуальной машины и задействования аппаратных возможностей виртуализации;
- —graphics vnc,listen=0.0.0.0 — запуск vnc-сервера для виртуальной машины без привязки к какому-либо сетевому интерфейсу;
- -w bridge:br0 — используемый сетевой мост.
При успешном создании виртуальной машины в консоль будет выведен примерно следующий текст:
Начинается установка…
Создание файла хранилища server.im | 10 GB 00:00
Создание домена… | 0 B 00:00
Не удалось открыть дисплей:
Run ‘virt-viewer —help’ to see a full list of available command line options
Domain installation still in progress. You can reconnect to the console to complete the installation process.
Теперь можно проверить список запущенных виртуальных машин:
$ sudo virsh -c qemu:///system list
ID Имя Статус
———————————-
4 UServer работает
Теперь установим в систему необходимые пакеты:
$ sudo apt-get install xtightvncviewer
и проверим TCP-соединения:
tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 15 54/qemu-system-x8
Шаг 6. Подключитесь к KVM и установите сервер
Теперь можно будет подключиться к KVM из любого места в сети. Скачайте UltraVNC Viewer:
![](https://trueconf.ru/blog/wp-content/uploads/2018/01/image6-1.png)
и установите с помощью него Windows Server 2008:
$ sudo virt-install -n UServer4 -r 1024 -f /var/lib/libvirt/images/server4.img -s 15 -c /var/lib/libvirt/images/win2008.iso —accelerate —os-type=windows —os-variant=win2k8 —graphics vnc,listen=0.0.0.0 -w bridge:br0 -v
![](https://trueconf.ru/blog/wp-content/uploads/2018/01/image1-1.png)
В будущем виртуальную машину можно запускать из терминала одной командой:
$ virsh start UServer4
Здесь UServer4 — это имя виртуальной машины.