Проверка поддержки аппаратной виртуализации linux

Работа с KVM в Debian или Ubuntu из командной строки

Оригинал: How to use KVM from the command line on Debian or Ubuntu
Автор: Dan Nanni
Дата публикации: 27 февраля 2014 года
Перевод: А. Кривошей
Дата перевода: декабрь 2014 г. Есть несколько способов управлять виртуальными машинами, запущенными в гипервизоре KVM, например с помощью популярного графического фронтенда virt-manager. Однако, если вы хотите использовать KVM на сервере, графические решения вряд ли будут хорошим выбором. В этом случае удобным инструментом будет virsh — утилита командной строки для управления гостевыми виртуальными машинами. Она работает со службой libvirtd, которая может управлять несколькими различными гипервизорами, включая KVM, Xen, QEMU, LXC и OpenVZ. Интерфейс командной строки virsh также полезен в случае, если вы хотите автоматизировать инициализацию и управление виртуальными машинами. Кроме того, способность virsh работать с различными гипервизорами обеспечивает единый интерфейс для управления виртуальными машинами различных типов. В этом руководстве я продемонстрирую вам, как запускать KVM из командной строки с использованием virsh в Debian или Ubuntu.

Этап 1: проверка аппаратной поддержки виртуализации

В качестве первого этапа проверьте, поддерживает ли ваш процессор аппаратную виртуализацию (то есть Intel VT или AMD-V), которая требуется для KVM. Это можно сделать с помощью команды:

egrep '(vmx|svm)' --color=always /proc/cpuinfo 
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave lahf_lm arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave lahf_lm arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid

Если в выводе нет флага vmx или svm, это значит, что процессор не поддерживает аппаратную виртуализацию, поэтому вы не сможете использовать KVM на этом хосте. После проверки самое время установить KVM.

Читайте также:  Linux gcc exit function

Этап 2: Установка KVM

Установите KVM и соответствующие пользовательские утилиты с помощью apt-get:

$ sudo apt-get install qemu-kvm libvirt-bin 

Во время инсталляции будет создана группа libvirtd, и ваш userID будет автоматически добавлен в группу. Это позволит вам управлять виртуальными машинами от имени обычного пользователя. Вы можете проверить это с помощью команды id, которая выводит ваш group ID.

Group-id.jpg

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

$ sudo adduser [youruserID] libvirt 

Перезагрузите обновленную информацию о группе, как показано ниже. Когда появится запрос, введите свой пользовательский пароль.

Теперь вы можете запускать virsh как обычный пользователь. В качестве теста попробуйте приведенную ниже команду, которая выведет список доступных виртуальных машин. Если вы не получите сообщение об ошибке прав доступа, значит все в порядке.

$ virsh --connect qemu:///system list 

Этап 3: Настройка сетевого моста

Один из способов получения доступа из виртуальной машины к внешним сетям — мост, встроенный в ваш хост Linux. Это называется сетевой мост. Ниже описано, как создать и настроить сетевой мост Linux br0 для мостового соединения с KVM. Сначала установим необходимый для создания сетевого моста пакет.

$ sudo apt-get install bridge-utils $ sudo brctl addbr br0 

Далее необходимо настроить сетевой мост в файле /etc/network/interfaces, чтобы он активировался при загрузке системы.
Для использования файла /etc/network/interfaces необходимо отключить Network Manager (если он у вас используется).
Как это сделать, описано здесь.
После отключения Network Manager настраиваем сетевой мост br0 в /etc/network/interfaces, как показано ниже.

#auto eth0 #iface eth0 inet dhcp auto br0 iface br0 inet dhcp bridge_ports eth0 bridge_stp off bridge_fd 0 bridge_maxwait 0

Здесь предполагается, что главным сетевым интерфейсом, который имеет доступ к внешним сетям, является eth0. Кроме того, предполагается, что eth0 получает IP-адреса посредством DHCP. Обратите внимание, что в /etc/network/interface нет настроек для eth0, так как он подключается к сетевому мосту br0. Перезагрузите сетевые службы и убедитесь, что сетевой мост настроен успешно. В этом случае br0 должен присвоить сетевой адрес интерфейса eth0, в свою очередь интерфейсу eth0 не должно быть присвоено сетевого адреса.

$ sudo /etc/init.d/networking restart $ ifconfig 

Br-utils.jpg

Этап 4: создание виртуальной машины из командной строки

В KVM настройки виртуальной машины хранятся в XML-файле домена. Поэтому сначала необходимо подготовить этот файл.
Если нет необходимого вам файла конфигурации, то его можно создать командой:

virt-install --name=guest_name --arch=x86_64 --vcpus=1 --ram=512 --os-type=linux --os-variant=rhel5 --hvm --connect=qemu:///system --network bridge:br0 --cdrom=/var/lib/libvirt/images/rhel5-x86_64.iso --disk path=/mnt/virtual_machines/guest_name.img,size=20 --accelerate --vnc --noautoconsole --keymap=es 
Explanation of the params: name: name of the guest. arch: architecture of the guest. vcpus: number of CPUs assigned to the guest. ram: MB of RAM assigned to the guest. os-type and os-variant: available options can be checked using man virt-install. hvm: use full virtualization. connect: connect to the hypervisor. network bridge: the bridge to use for the guest. cdrom: the ISO of the operating system to install. disk path=x,size=y: path and size of the image file for the guest. accelerate: make use of the KVM acceleration capabilities if available. vnc: export a virtual console over VNC to the guest. noautoconsole: Don’t automatically try to connect to the guest console. keymap: keyboard layout for the VNC console Use a VNC client to connect to the guest (port 5900 or 5901 if you already have a VNC server listening on port 5900) and install the operating system.

Ниже пример простого XML-файла для виртуальной машины. Вы можете использовать его, откорректировав в соответствии со своими потребностями.

 alice f5b8c05b-9c7a-3211-49b9-2bd635f7e2aa 1048576 1048576 1 hvm    destroy restart destroy /usr/bin/kvm  

Этот XML-файл определяет следующую виртуальную машину: 1 Гб оперативной памяти, один CPU и один жесткий диск.
Образ диска: /home/dev/images/alice.img.
Загрузка с CD: (/home/dev/iso/ubuntu-13.10-server-amd64.iso).
Сеть: сетевой мост br0.
Строка UUID между тегами может быть сгенерирована случайным образом.
Для этого используется утилита командной строки uuid.

$ sudo apt-get install uuid $ uuid 

Пример xml файла для Windows 2008

 win2k8 04dbbaa6-8759-465d-8a34-5c12b06270bb 3145728 3145728 1 hvm      core2duo      destroy restart restart    /usr/bin/kvm  

Доменный XML-файл можно также создать, сделав дамп информации о домене существующей виртуальной машины:

$ virsh --connect qemu:///system dumpxml alice > bob.xml 

Virsh0.jpg

Этап 5: запуск виртуальной машины из командной строки.

Перед запуском виртуальной машины необходимо создать образ диска для нее. Для этого можно воспользоваться командой qemu-img, входящей в пакет qemu-kvm.

$ qemu-img create -f qcow2 /home/dev/images/alice.img 5G 

Преимущество опции qcow2 в том, что создаваемый при ее использовании образ диска не резервирует сразу весь свой свой объем (5 Гб), а динамически увеличивается при наполнении в процессе работы виртуальной машины.
Если необходимо сделать сразу жестко заданный размер то команда будет такой:

qemu-img create -q /home/dev/images/alice.img 5G 

Теперь вы готовы к запуску виртуальной машины с использованием созданного ранее доменного XML-файла. Это делается с помощью приведенной ниже команды:

$ virsh --connect qemu:///system create alice.xml 
Domain alice created from alice.xml

Проверьте, что домен создан успешно.

$ virsh --connect qemu:///system list 
Id Name State ---------------------------------------------------- 3 alice running

Кроме того, проверьте, что виртуальный сетевой интерфейс для виртуальной машины (то есть vnet0) успешно добавлен в созданный ранее сетевой мост br0.

Читайте также:  Установить базу данных mysql linux

Ifconfig-br0.jpg

Этап 6. Удаленный доступ к виртуальной машине.

Для удаленного доступа к консоли виртуальной машины вы можете использовать любой VNC-клиент.
Сначала определите номер порта VNC для виртуальной машины:

$ sudo netstat -nap | grep kvm 

Net-kvm.jpg

В этом примере номер порта для виртуальной машины alice 5900.
Затем запустите VNC-клиент и подключитесь к VNC-серверу, работающему по адресу KVM-host-IP:5900.

Управление виртуальной машиной с помощью virsh

Ниже список наиболее часто употребляемых команд virsh. Для создания нового гостевого домена и запуска виртуальной машины:

$ virsh --connect qemu:///system create alice.xml 

Для остановки виртуальной машины и уничтожения гостевого домена:

$ virsh --connect qemu:///system destroy alice 

Для выключения виртуальной машины (без уничтожения домена):

$ virsh --connect qemu:///system shutdown alice 

Для приостановки виртуальной машины:

$ virsh --connect qemu:///system suspend alice 

Для возобновления работы виртуальной машины:

$ virsh --connect qemu:///system resume alice 

Для автозапуска виртуальной машины после загрузки хоста:

$ virsh --connect qemu:///system autostart alice 

Для получения информации о домене виртуальной машины:

$ virsh --connect qemu:///system dominfo alice 

Вы можете также управлять виртуальными машинами из сессии virsh. Для создания новой сессии virsh и входа в нее, просто введите:

$ virsh --connect qemu:///system 

Virsh-connect.jpg

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

Решение проблем

1. Я получил ошибку, когда попытался создать виртуальную машину:

error: internal error: no supported architecture for os type 'hvm'

Вы получите эту ошибку, если ваш процессор не поддерживает аппаратную виртуализацию (то есть Intel VT или AMD-V), которая требуется для работы KVM. Если же вы получили эту ошибку с процессором, поддерживающим Intel VT или AMD-V, возможные решения этой проблемы: Во-первых, проверьте, загружены ли требуемые модули ядра.

Если модуль kvm не загружен, вам необходимо загрузить его:

$ sudo modprobe kvm_intel (для процессоров Intel) $ sudo modprobe kvm_amd (для процессоров AMD) 

Второе решение — добавление аргумента «—connect qemu:///system» к команде virsh, как показано ниже. Этот аргумент может потребоваться, если вы используете более одного гипервизора (то есть VMware, VirtualBox) на сервере.

$ virsh --connect qemu:///system create alice.xml 

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

Читайте также:  Linux gcc exit function

error: internal error: cannot find character device

Эта ошибка возникает потому, что вы не определили устройство консоли в XML-файле виртуальной машины. Добавьте приведенные ниже строки в раздел «device» XML-файла.

Источник

Оцените статью
Adblock
detector