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

Виртуализация с KVM на сервере Fedora 17

Виртуализация с KVM на сервере Fedora 17

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

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

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

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

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

У меня был отключен SELinux на моей системе Fedora 17. Я не тестировал с включенным SELinux; это может сработать, но если нет, лучше отключить SELinux:

vi /etc/selinux/config

Установите SELINUX=disabled…

| # Этот файл управляет состоянием SELinux в системе. # SELINUX= может принимать одно из этих трех значений: # enforcing - Политика безопасности SELinux применяется. # permissive - SELinux выводит предупреждения вместо применения. # disabled - Политика SELinux не загружена. SELINUX=disabled # SELINUXTYPE= может принимать одно из этих двух значений: # targeted - Защищены целевые процессы, # mls - Защита многоуровневой безопасности. SELINUXTYPE=targeted |

… и перезагрузите:

reboot

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

2 Установка KVM

Хост KVM Fedora 17:

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

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

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

[root@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 pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy misalignsse  
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 pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy misalignsse  
[root@server1 ~]#

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

Теперь мы импортируем GPG-ключи для программного обеспечения:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

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

yum install kvm libvirt python-virtinst qemu-kvm

Создайте системные ссылки для демона libvirt и запустите его:

systemctl enable libvirtd.service  
systemctl start libvirtd.service

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

virsh -c qemu:///system list

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

[root@server1 ~]# virsh -c qemu:///system list  
 Id Name                 State  
----------------------------------  
  
[root@server1 ~]#

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

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

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

yum install bridge-utils

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

Я отключаю NetworkManager Fedora и включаю “нормальную” сеть. NetworkManager хорош для настольных ПК, где сетевые подключения могут изменяться (например, LAN против WLAN), но на сервере вы обычно не меняете сетевые подключения:

systemctl disable NetworkManager.service  
systemctl enable network.service  
systemctl restart network.service  
systemctl stop NetworkManager.service

Проверьте ваш /etc/resolv.conf, если он перечисляет все DNS-серверы, которые вы ранее настроили:

cat /etc/resolv.conf

Если DNS-серверы отсутствуют, выполните

system-config-network

и добавьте отсутствующие DNS-серверы снова.

Далее узнайте ваш основной сетевой интерфейс, выполнив

ifconfig

В моем случае он называется em1 - это важно, чтобы убедиться, что вы редактируете правильный файл конфигурации сети - в моем случае /etc/sysconfig/network-scripts/ifcfg-em1.

Чтобы настроить мост, создайте файл /etc/sysconfig/network-scripts/ifcfg-br0 (пожалуйста, используйте значения DNS1 (плюс любые другие настройки DNS, если есть), GATEWAY, IPADDR, NETMASK и SEARCH из файла /etc/sysconfig/network-scripts/ifcfg-em1):

vi /etc/sysconfig/network-scripts/ifcfg-br0

| DEVICE=br0 TYPE=Bridge BOOTPROTO=static DNS1=8.8.8.8 GATEWAY=192.168.0.1 IPADDR=192.168.0.100 NETMASK=255.255.255.0 ONBOOT=yes DNS2=8.8.4.4 SEARCH="example.com" |

Измените /etc/sysconfig/network-scripts/ifcfg-em1 следующим образом (закомментируйте BOOTPROTO, DNS1 (и все другие DNS-серверы, если есть), GATEWAY, IPADDR, NETMASK и SEARCH, установите NM_CONTROLLED в no и добавьте BRIDGE=br0):

vi /etc/sysconfig/network-scripts/ifcfg-em1

| UUID="e8a818cc-0e23-47b8-88f3-013567828572" NM_CONTROLLED=no #BOOTPROTO=none HWADDR=00:1e:90:f3:f0:02 ONBOOT=yes #IPADDR=192.168.0.100 #NETMASK=255.255.255.0 #DNS2=8.8.4.4 TYPE=Ethernet #GATEWAY=192.168.0.1 #DNS1=8.8.8.8 IPV6INIT=no USERCTL=no PREFIX=24 BRIDGE=br0 |

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

reboot

После перезагрузки выполните

ifconfig

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

[root@server1 ~]# ifconfig  
br0: flags=4163  mtu 1500  
        inet 192.168.0.100  netmask 255.255.255.0  broadcast 192.168.0.255  
        inet6 fe80::21e:90ff:fef3:f002  prefixlen 64  scopeid 0x20  
        ether 00:1e:90:f3:f0:02  txqueuelen 0  (Ethernet)  
        RX packets 70  bytes 7511 (7.3 KiB)  
        RX errors 0  dropped 0  overruns 0  frame 0  
        TX packets 76  bytes 10847 (10.5 KiB)  
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  
  
em1: flags=4163  mtu 1500  
        ether 00:1e:90:f3:f0:02  txqueuelen 1000  (Ethernet)  
        RX packets 117  bytes 15163 (14.8 KiB)  
        RX errors 0  dropped 0  overruns 0  frame 0  
        TX packets 92  bytes 12899 (12.5 KiB)  
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  
  
lo: flags=73  mtu 16436  
        inet 127.0.0.1  netmask 255.0.0.0  
        inet6 ::1  prefixlen 128  scopeid 0x10  
        loop  txqueuelen 0  (Local Loopback)  
        RX packets 0  bytes 0 (0.0 B)  
        RX errors 0  dropped 0  overruns 0  frame 0  
        TX packets 0  bytes 0 (0.0 B)  
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  
  
virbr0: flags=4099  mtu 1500  
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255  
        ether ce:18:6f:2a:7f:0b  txqueuelen 0  (Ethernet)  
        RX packets 0  bytes 0 (0.0 B)  
        RX errors 0  dropped 0  overruns 0  frame 0  
        TX packets 0  bytes 0 (0.0 B)  
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  
  
[root@server1 ~]#

3 Установка virt-viewer или virt-manager на ваш настольный компьютер Fedora 17

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

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

Станьте root…

su

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

yum install virt-manager libvirt qemu-system-x86 openssh-askpass

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

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

sudo apt-get install virt-manager

)

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

Хост KVM Fedora 17:

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

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

man virt-install

чтобы узнать, как использовать virt-install.

Мы создадим наши виртуальные машины на основе образов в каталоге /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 с вашего настольного компьютера Fedora, и virt-manager будет искать ISO-образы в каталоге /var/lib/libvirt/images/)…

dd if=/dev/cdrom of=/var/lib/libvirt/images/debian-6.0.5-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.5-amd64-netinst.iso --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm

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

[root@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.5-amd64-netinst.iso --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm  


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.  
[root@server1 ~]#
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.