Виртуализация · 5 min read · Jan 20, 2026

Виртуализация с KVM на сервере OpenSUSE 12.1

Виртуализация с KVM на сервере OpenSUSE 12.1

Версия 1.0
Автор: Фалко Тимме
Следите за мной в Twitter

Этот гид объясняет, как установить и использовать KVM для создания и запуска виртуальных машин на сервере OpenSUSE 12.1. Я покажу, как создать виртуальные машины на основе образов, а также виртуальные машины, которые используют логический том (LVM). KVM — это сокращение от Kernel-based Virtual Machine и использует аппаратную виртуализацию, т.е. вам нужен процессор, который поддерживает аппаратную виртуализацию, например, Intel VT или AMD-V.

Я не даю никаких гарантий, что это сработает для вас!

1 Предварительная заметка

Я использую сервер OpenSUSE 12.1 с именем хоста server1.example.com и IP-адресом 192.168.0.100 в качестве моего хоста KVM.

Нам также нужна настольная система, на которой мы установим virt-manager, чтобы мы могли подключиться к графической консоли виртуальных машин, которые мы установим. Я использую настольный компьютер OpenSUSE 12.1.

2 Установка KVM

Хост KVM OpenSUSE 12.1:

Сначала проверьте, поддерживает ли ваш процессор аппаратную виртуализацию — если это так, команда

egrep '(vmx|svm)' --color=always /proc/cpuinfo

должна отобразить что-то, например, вот так:

server1:~ # 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 mmx fxsr sse sse2 ht syscall  
 nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow rep_good extd_apicid pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch lbrv  
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall  
 nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow rep_good extd_apicid pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch lbrv  
server1:~ #

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

Одной из зависимостей, которая устанавливается при установке KVM, является Python 2.7, но Python 2.7 конфликтует с пакетом patterns-openSUSE-minimal_base-conflicts. Поэтому сначала мы должны удалить этот пакет. Для этого запустите YaST:

yast2

В YaST перейдите в Программное обеспечение > Управление программным обеспечением:

Введите patterns-openSUSE-minimal_base-conflicts в поле поиска и нажмите ENTER. Пакет должен быть указан как установленный ( i) в главном окне. Отметьте пакет и нажмите клавишу ENTER, пока перед пакетом не появится знак минус ( -) (минус означает удаление), затем нажмите [Принять]:

После этого выйдите из YaST.

Чтобы установить KVM и virtinst (инструмент для создания виртуальных машин), мы выполняем

yast2 -i kvm libvirt libvirt-python qemu virt-manager

Затем создайте системные ссылки для запуска libvirtd…

systemctl enable libvirtd.service

… и запустите демон libvirt:

systemctl start libvirtd.service

Чтобы проверить, успешно ли установлен KVM, выполните

virsh -c qemu:///system list

Он должен отобразить что-то вроде этого:

server1:~ # virsh -c qemu:///system list  
WARNING: no socket to connect to  
 Id Name                 State  
----------------------------------  
  
server1:~ #

Если вместо этого отображается ошибка, значит, что-то пошло не так.

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

Для этого мы устанавливаем пакет bridge-utils…

yast2 -i bridge-utils

… и настраиваем мост.

Чтобы настроить мост, создайте файл /etc/sysconfig/network/ifcfg-br0 следующим образом (убедитесь, что вы используете настройку IPADDR из файла /etc/sysconfig/network/ifcfg-eth0):

vi /etc/sysconfig/network/ifcfg-br0

| STARTMODE='auto' BOOTPROTO='static' IPADDR='192.168.0.100/24' MTU='' NETMASK='' NETWORK='' BROADCAST='' USERCONTROL=no NAME='Bridge 0' NM_CONTROLLED=no BRIDGE='yes' BRIDGE_PORTS='eth0' BRIDGE_AGEINGTIME='300' BRIDGE_FORWARDDELAY='0' BRIDGE_MAXAGE='20' BRIDGE_PATHCOSTS='19' BRIDGE_PORTPRIORITIES= BRIDGE_PRIORITY= BRIDGE_STP='on' |

(Если вы получите сообщение Вы не имеете установленного действительного бинарного пакета vim. Пожалуйста, установите либо “vim”, “vim-enhanced” или “gvim”., выполните

yast2 -i vim

чтобы установить vi и попробовать снова.)

Измените /etc/sysconfig/network/ifcfg-eth0 следующим образом (установите IPADDR на 0.0.0.0 и измените STARTMODE на hotplug):

vi /etc/sysconfig/network/ifcfg-eth0

| BOOTPROTO='static' BROADCAST='' ETHTOOL_OPTIONS='' IPADDR='0.0.0.0' MTU='' NAME='MCP77 Ethernet' NETMASK='' NETWORK='' REMOTE_IPADDR='' STARTMODE='hotplug' USERCONTROL='no' |

Затем перезапустите сеть:

systemctl restart network.service

После этого выполните

ifconfig

Теперь он должен показать сетевой мост ( br0):

server1:~ # ifconfig  
br0       Link encap:Ethernet  HWaddr 00:1E:90:F3:F0:02  
          inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0  
          inet6 addr: fe80::21e:90ff:fef3:f002/64 Scope:Link  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1  
          RX packets:39 errors:0 dropped:0 overruns:0 frame:0  
          TX packets:18 errors:0 dropped:0 overruns:0 carrier:0  
          collisions:0 txqueuelen:0  
          RX bytes:4921 (4.8 Kb)  TX bytes:1708 (1.6 Kb)  
  
eth0      Link encap:Ethernet  HWaddr 00:1E:90:F3:F0:02  
          inet6 addr: fe80::21e:90ff:fef3:f002/64 Scope:Link  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1  
          RX packets:821 errors:0 dropped:0 overruns:0 frame:0  
          TX packets:636 errors:0 dropped:0 overruns:0 carrier:0  
          collisions:0 txqueuelen:1000  
          RX bytes:313341 (305.9 Kb)  TX bytes:108982 (106.4 Kb)  
          Interrupt:41 Base address:0x8000  
  
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0  
          inet6 addr: ::1/128 Scope:Host  
          UP LOOPBACK RUNNING  MTU:16436  Metric:1  
          RX packets:20 errors:0 dropped:0 overruns:0 frame:0  
          TX packets:20 errors:0 dropped:0 overruns:0 carrier:0  
          collisions:0 txqueuelen:0  
          RX bytes:2720 (2.6 Kb)  TX bytes:2720 (2.6 Kb)  
  
server1:~ #

3 Установка virt-manager на вашем настольном компьютере OpenSUSE 12.1

Настольный компьютер OpenSUSE 12.1:

Нам нужно средство для подключения к графической консоли наших гостей — для этого мы можем использовать virt-manager. Я предполагаю, что вы используете настольный компьютер OpenSUSE 12.1.

Станьте root…

su

… и выполните…

yast2 -i virt-manager libvirt

… чтобы установить virt-manager.

(Если вы используете настольный компьютер Ubuntu 11.10, вы можете установить virt-manager следующим образом:

sudo apt-get install virt-manager

)

4 Создание гостя Debian Squeeze (на основе образа)

Хост KVM OpenSUSE 12.1:

Теперь давайте вернемся к нашему хосту KVM OpenSUSE 12.1.

Посмотрите на

virt-install --help

чтобы узнать, как его использовать.

Мы создадим наши виртуальные машины на основе образов в каталоге /var/lib/libvirt/images/, который был создан автоматически, когда мы установили KVM в главе два.

Чтобы создать гостя Debian Squeeze (в режиме моста) с именем vm10, 512 МБ ОЗУ, двумя виртуальными процессорами и образом диска /var/lib/libvirt/images/vm10.img (размером 12 ГБ), вставьте CD-диск Debian Squeeze Netinstall в CD-привод и выполните

virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/vm10.img,size=12 -c /dev/cdrom --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm

Конечно, вы также можете создать ISO-образ CD-диска Debian Squeeze Netinstall (пожалуйста, создайте его в каталоге /var/lib/libvirt/images/, потому что позже я покажу, как создавать виртуальные машины через virt-manager с вашего настольного компьютера OpenSUSE 12.1, и virt-manager будет искать ISO-образы в каталоге /var/lib/libvirt/images/)…

dd if=/dev/cdrom of=/var/lib/libvirt/images/debian-6.0.0-amd64-netinst.iso

… и использовать ISO-образ в команде virt-install:

virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/vm10.img,size=12 -c /var/lib/libvirt/images/debian-6.0.0-amd64-netinst.iso --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm

Вывод будет следующим:

server1:~ # virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/vm10.img,size=12 -c /var/lib/libvirt/images/debian-6.0.0-amd64-netinst.iso --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm  
WARNING: no socket to connect to  

Starting install...  
Allocating 'vm10.img'       |  12 GB     00:00  
Creating domain...          |    0 B     00:00  
Domain installation still in progress. You can reconnect to  
the console to complete the installation process.  
server1:~ #
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.