Виртуализация · 5 min read · Dec 23, 2025
Виртуализация с KVM на сервере OpenSUSE 12.2
Виртуализация с KVM на сервере OpenSUSE 12.2
Версия 1.0
Автор: Фалко Тимме
Следите за мной в Twitter
Это руководство объясняет, как установить и использовать KVM для создания и запуска виртуальных машин на сервере OpenSUSE 12.2. Я покажу, как создавать виртуальные машины на основе образов, а также виртуальные машины, которые используют логический том (LVM). KVM — это сокращение от Kernel-based Virtual Machine и использует аппаратную виртуализацию, т.е. вам нужен процессор, который поддерживает аппаратную виртуализацию, например, Intel VT или AMD-V.
Я не даю никаких гарантий, что это будет работать для вас!
1 Предварительная заметка
Я использую сервер OpenSUSE 12.2 с именем хоста server1.example.com и IP-адресом 192.168.0.100 в качестве моего хоста KVM.
Нам также нужна настольная система, на которой мы установим virt-manager, чтобы мы могли подключаться к графической консоли виртуальных машин, которые мы устанавливаем. Я использую настольный компьютер OpenSUSE 12.2.
2 Установка KVM
Хост KVM OpenSUSE 12.2:
Сначала проверьте, поддерживает ли ваш процессор аппаратную виртуализацию — если это так, команда
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 и virtinst (инструмент для создания виртуальных машин), мы выполняем
zypper install kvm libvirt libvirt-python qemu virt-managerК сожалению, libvirt-python конфликтует с пакетом patterns-openSUSE-minimal_base-conflicts. Поэтому мы должны выбрать удаление этого пакета:
Проблема: libvirt-python-0.9.11.4-1.2.1.x86_64 требует python = 2.7, но это требование не может быть выполнено
неудаляемые провайдеры: python-2.7.3-3.6.1.x86_64[openSUSE-12.2-1.6]
python-2.7.3-3.6.1.i586[repo-oss]
python-2.7.3-3.6.1.x86_64[repo-oss]
Решение 1: Будут выполнены следующие действия:
не устанавливать libvirt-python-0.9.11.4-1.2.1.x86_64
не устанавливать virt-manager-0.9.4-1.6.1.x86_64
Решение 2: Будут выполнены следующие действия:
не устанавливать virt-manager-0.9.4-1.6.1.x86_64
не устанавливать libvirt-python-0.9.11.4-1.2.1.x86_64
Решение 3: деинсталляция patterns-openSUSE-minimal_base-conflicts-12.2-5.5.1.x86_64
Решение 4: сломать libvirt-python-0.9.11.4-1.2.1.x86_64, игнорируя некоторые из его зависимостей
Выберите из вышеуказанных решений по номеру или отмените [1/2/3/4/c] (c): <– 3
Затем создайте системные ссылки для запуска 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…
zypper install 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_HELLOTIME='2' BRIDGE_MAXAGE='20' BRIDGE_PATHCOSTS='19' BRIDGE_PORTPRIORITIES= BRIDGE_PRIORITY= BRIDGE_STP='on' |
(Если вы получите сообщение “У вас нет установленного действительного пакета vim. Пожалуйста, установите либо “vim”, “vim-enhanced” или “gvim”.”, пожалуйста, выполните
zypper install 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:92 errors:0 dropped:0 overruns:0 frame:0
TX packets:38 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:12716 (12.4 Kb) TX bytes:5961 (5.8 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:131711 errors:0 dropped:0 overruns:0 frame:0
TX packets:80954 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:185764801 (177.1 Mb) TX bytes:6374023 (6.0 Mb)
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:12 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:860 (860.0 b) TX bytes:860 (860.0 b)
server1:~ #
3 Установка virt-manager на вашем настольном компьютере OpenSUSE 12.1
Настольный компьютер OpenSUSE 12.2:
Нам нужно средство для подключения к графической консоли наших гостей — мы можем использовать для этого virt-manager. Я предполагаю, что вы используете настольный компьютер OpenSUSE 12.2.
Станьте root…
su… и выполните…
zypper install virt-manager libvirt… чтобы установить virt-manager.
(Если вы используете настольный компьютер Ubuntu 11.10, вы можете установить virt-manager следующим образом:
sudo apt-get install virt-manager)
4 Создание гостя Debian Squeeze (на основе образа)
Хост KVM OpenSUSE 12.2:
Теперь давайте вернемся к нашему хосту KVM OpenSUSE 12.2.
Посмотрите на
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.2, и 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
Начало установки…
Выделение ‘vm10.img’ | 12 GB 00:00
Создание домена… | 0 B 00:00
Установка домена все еще продолжается. Вы можете повторно подключиться к
консоли, чтобы завершить процесс установки.
server1:~ #
Get new posts in your inbox
No spam. Unsubscribe anytime.