Pull to refresh

Установка виртуальных машин KVM под ubuntu server

Virtualization *
Последнее время применение виртуализации при построении серверной инфраструктуры встречается все чаще. Гибкость, масштабируемость, экономия делают эту технологию очень перспективной. Сейчас на рынке существует достаточное количество решений, как проприетарных, так и open source, позволяющих развернуть виртуальные сервера. Один из таких вариантов я хочу рассмотреть в данной статье.

Поигравшись с ГУЙовыми платформами виртуализации от Microsoft, VMware и Sun, я решил попробовать сделать тоже самое через консоль. Установив давно понравившийся мне linux дистрибутив ubuntu, стал выбирать — на какой же реализации виртуальных машин (ВМ) остановиться. В википедии есть интересная табличка, хотя посмотрев оффициальный help к ubuntu я понял, что лучше начать с KVM.

Процедура установки хост-сервера в общем-то стандартная, но есть нюансы. Во время установки включил LVM (как я понял — гостевые ОС можно впоследстии размещать на LVM-томах, что придаст дополнительную гибкость), а в окне выбора доустанавлемого ПО отметил OpenSSH server и Virtual Machine host.image

Хост-серверу задан статический ip 172.16.4.24, что можно увидеть далее в приведенных конфигах.
После установки хост-сервера, подключаемся к нему по ssh (одноименной командой из linux или putty/kitty из windows).

Первым делом необходимо проверить, поддерживает ли железо сервера аппаратную виртуализацию командой
egrep '(vmx|svm)' /proc/cpuinfo
Если вывод команды не пустой, значит поддерживает.

Скачиваем в домашнюю папку iso-образ того дистрибутива операционной системы, которая в последствии будет гостевой. У меня это тот же самый ubuntu-9.04-server-amd64.iso

Устанавливаем необходимые пакеты:
sudo apt-get install kvm libvirt-bin python-virtinst bridge-utils

Добавляем пользователя, который будет рулить виртуалками (в простейшем случае это тот пользователь, которого мы завели во время установки системы, и под которым проделываем все описываемые действия):
sudo adduser $USER libvirtd

После этого лучше ребутнуться.

Проверяем, как установилась KVM, командой:
virsh -c qemu:///system list --all
В консоли должно появиться примерно следующее:
az@vsrvs:~$ virsh -c qemu:///system list --all
Connecting to uri: qemu:///system
Id Name State
----------------------------------

если все так, продолжаем.

Для того, чтобы виртуальные сервера работали в нашей реальной локальной сети на хост-машине создаем сетевой мост. Для этого надо подредактировать файл /etc/network/interfaces

Так он выглядел до модификации:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
       address 172.16.4.24
       netmask 255.255.255.192
       network 172.16.4.0
       broadcast 172.16.4.63
       gateway 172.16.4.1


Так после:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
        address 172.16.4.24
        netmask 255.255.255.192
        network 172.16.4.0
        broadcast 172.16.4.63
        gateway 172.16.4.1
        bridge_ports eth0
        bridge_fd 9
        bridge_hello 2
        bridge_maxage 12
        bridge_stp off


Далее переходим к инсталляции ВМ:
sudo virt-install -n vsrv1 -r 384 -f vsrv1.img -s 10 -c ubuntu-9.04-server-amd64.iso --accelerate --os-type=linux --os-variant=generic26 -v --vnc -w bridge:br0
где:
-n vsrv1 — имя ВМ;
-r 384 — выделяемый объем ОЗУ для нее;
-f vsrv1.img — файл, являющийся виртуальный жестким диском для гостевой ОС;
-s 10 — объем этого диска в гигабайтах;
-c ubuntu-9.04-server-amd64.iso — образ cd дистрибутива гостевой ОС, подключаемый как виртуальный cdrom;
--accelerate --os-type=linux --os-variant=generic26 -v — ускоряем, оптимизируем ВМ для конкретной гостевой ОС и задействуем аппаратные возможности виртуализации;
--vnc — запускаем для ВМ vnc-сервер;
-w bridge:br0 — указываем использовать сетевой мост.

Если после запуска этой команды не появилось никаких ошибок, а отобразилось нечто следующее:
Starting install…
Creating domain… 0 B 00:01
/usr/lib/python2.6/dist-packages/virtinst/Guest.py:1086: DeprecationWarning: integer argument expected, got float
for ignore in range(1, (5 / .25)): # 5 seconds, .25 second sleeps
Unable to connect to graphical console: virt-viewer not installed. Please install the 'virt-viewer' package.
Domain installation still in progress. You can reconnect to
the console to complete the installation process.


То все отлично, виртуальная машина запустилась, что можно проверить командой:
virsh -c qemu:///system list --all
Поэтому преступаем к установке гостевой ОС.

Для начала необходимо подключится к vnc-серверу, который отображает экран ВМ. Я делал это из WinXP, хотя, из практически любого linux дистрибутива, это делается аналогично.

Устанавливаем (если в самом начале не установили, а настраивали сервер локально) ssh-клиент, например, kitty (доработанный вариант putty). Запускаем, настраиваем:
  1. Во вкладке Session — Host Name (or IP address) адрес нашего хост-сервера (в моем случае 172.16.4.24).
  2. Во вкладке Windows-Translation — выбираем UTF-8.
  3. Во вкладке Connection-SSH-Tunnels — заполняем поля Source port 59000, Destination localhost:5900, нажимаем Add. Должна появится следующая запись:
    image
  4. Жмем Open и мы должны подключится по SSH к хост-серверу. Одновременно у нас произойдет перенаправление порта 5900 хост-сервера (порт vnc-сервера) на наш локальный 59000 порт.

Примечание. При запуске еще одной ВМ, порт vnc-сервера увеличится на 1, поэтому для того, чтобы увидеть ее экран необходимо сделать перенаправление порта 5901 хост-сервера на, например, порт 59001.

Устанавливаем vnc-клиент, например UltraVNC, запускаем UltraVNC Viewer и подключаемся к localhost:59000. Если все сделано правильно, то мы увидим экран нашей ВМ с запущенным инсталлятором гостевой ОС.

Устанавливаем гостевую ОС.

Так она начинает загружаться после установки:image

После установки и настройки гостевой ОС, ВМ можно клонировать командой
sudo virt-clone -o vsrv1 -n vsrv2 -f vsrv2.img --connect=qemu:///system

UPD: После клонирования для того, чтобы заработал сетевой интерфейс необходимо на клоне удалить файл /etc/udev/rules.d/70-persistent-net.rules ну и заодно изменить в /etc/hostname и в /etc/hosts имя сервера на новое.

TIP:
Команды для управления ВМ:
  • virsh -c qemu:///system help
    Встроенная помощь по командам
  • virsh -c qemu:///system list --all
    Посмотреть статус установленных ВМ
  • virsh -c qemu:///system start vsrv1
    Запусить ВМ vsrv1
  • virsh -c qemu:///system shutdown vsrv1
    Послать команду завершения работы ВМ
  • virsh -c qemu:///system destroy vsrv1
    Принудительно завершить работу ВМ
  • virsh -c qemu:///system undefine vsrv1
    Удалить ВМ



Использованные материалы:
  1. man-ы представленных программ
  2. https://help.ubuntu.com/9.04/serverguide/C/virtualization.html
  3. http://www.howtoforge.com/virtualization-with-kvm-on-ubuntu-9.04
Tags: виртуализацияvirtualizationubuntukvm
Hubs: Virtualization
Total votes 10: ↑9 and ↓1 +8
Comments 23
Comments Comments 23

Popular right now