Виртуализация · 5 min read · Nov 04, 2025
Виртуализация с KVM на сервере CentOS 6.2
Виртуализация с KVM на сервере CentOS 6.2
Версия 1.0
Автор: Фалко Тимме
Следите за мной в Twitter
Этот гид объясняет, как установить и использовать KVM для создания и запуска виртуальных машин на сервере CentOS 6.2. Я покажу, как создать виртуальные машины на основе образов, а также виртуальные машины, которые используют логический том (LVM). KVM — это сокращение от Kernel-based Virtual Machine и использует аппаратную виртуализацию, т.е. вам нужен процессор, который поддерживает аппаратную виртуализацию, например, Intel VT или AMD-V.
Я не даю никаких гарантий, что это сработает для вас!
1 Предварительная заметка
Я использую сервер CentOS 6.2 с именем хоста server1.example.com и IP-адресом 192.168.0.100 здесь в качестве моего хоста KVM.
У меня был отключен SELinux на моей системе CentOS 6.2. Я не тестировал с включенным 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 16 здесь.
2 Установка KVM
Хост KVM CentOS 6.2:
Сначала проверьте, поддерживает ли ваш процессор аппаратную виртуализацию — если это так, команда
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:
/etc/init.d/libvirtd startЧтобы проверить, успешно ли установлен KVM, выполните
virsh -c qemu:///system listОн должен отобразить что-то вроде этого:
[root@server1 ~]# virsh -c qemu:///system list
Id Name State
----------------------------------
[root@server1 ~]#Если вместо этого отображается ошибка, значит, что-то пошло не так.
Далее нам нужно настроить сетевой мост на нашем сервере, чтобы наши виртуальные машины могли быть доступны с других хостов так, как если бы они были физическими системами в сети.
Для этого мы устанавливаем пакет bridge-utils…
yum install bridge-utils… и настраиваем мост. Создайте файл /etc/sysconfig/network-scripts/ifcfg-br0 (пожалуйста, используйте значения IPADDR, PREFIX, GATEWAY, DNS1 и DNS2 из файла /etc/sysconfig/network-scripts/ifcfg-eth0); убедитесь, что вы используете TYPE=Bridge, а не TYPE=Ethernet:
vi /etc/sysconfig/network-scripts/ifcfg-br0| DEVICE="br0" NM_CONTROLLED="yes" ONBOOT=yes TYPE=Bridge BOOTPROTO=none IPADDR=192.168.0.100 PREFIX=24 GATEWAY=192.168.0.1 DNS1=8.8.8.8 DNS2=8.8.4.4 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System br0" |
Измените /etc/sysconfig/network-scripts/ifcfg-eth0 следующим образом (закомментируйте BOOTPROTO, IPADDR, PREFIX, GATEWAY, DNS1 и DNS2 и добавьте BRIDGE=br0):
vi /etc/sysconfig/network-scripts/ifcfg-eth0| DEVICE="eth0" NM_CONTROLLED="yes" ONBOOT=yes HWADDR=00:1E:90:F3:F0:02 TYPE=Ethernet #BOOTPROTO=none #IPADDR=192.168.0.100 #PREFIX=24 #GATEWAY=192.168.0.1 #DNS1=8.8.8.8 #DNS2=8.8.4.4 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth0" UUID=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 BRIDGE=br0 |
Перезапустите сеть…
/etc/init.d/network restart… и выполните
ifconfigТеперь он должен показать сетевой мост (br0):
[root@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:103 errors:0 dropped:0 overruns:0 frame:0
TX packets:79 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:7434 (7.2 KiB) TX bytes:21398 (20.8 KiB)
eth0 Link encap:Ethernet HWaddr 00:1E:90:F3:F0:02
inet6 addr: fe80::21e:90ff:fef3:f002/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:19511 errors:0 dropped:0 overruns:0 frame:0
TX packets:11592 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:25980124 (24.7 MiB) TX bytes:1104371 (1.0 MiB)
Interrupt:28 Base address:0x6000
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:7 errors:0 dropped:0 overruns:0 frame:0
TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3608 (3.5 KiB) TX bytes:3608 (3.5 KiB)
virbr0 Link encap:Ethernet HWaddr 6A:12:69:18:2B:05
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
[root@server1 ~]#3 Установка virt-viewer или virt-manager на вашем настольном компьютере Fedora 16
Настольный компьютер Fedora 16:
Нам нужно средство для подключения к графической консоли наших гостей — мы можем использовать для этого virt-manager. Я предполагаю, что вы используете настольный компьютер Fedora 16.
Станьте root…
su… и выполните…
yum install virt-manager libvirt qemu-system-x86 openssh-askpass… для установки virt-manager.
(Если вы используете настольный компьютер Ubuntu 11.10, вы можете установить virt-manager следующим образом:
sudo apt-get install virt-manager)
4 Создание гостя Debian Squeeze (на основе образа) из командной строки
Хост KVM CentOS 6.2:
Теперь давайте вернемся к нашему хосту KVM CentOS 6.2.
Посмотрите на
man virt-installчтобы узнать, как использовать virt-install.
Мы создадим наши виртуальные машины на основе образов в каталоге /var/lib/libvirt/images/, который был создан автоматически, когда мы установили KVM в главе два.
Чтобы создать гостя Debian Squeeze (в режиме моста) с именем vm10, 512 МБ ОЗУ, двумя виртуальными процессорами и образом диска /var/lib/libvirt/images/vm10.img (размером 12 ГБ), вставьте CD-диск установки Debian Squeeze в 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 (пожалуйста, создайте его в каталоге /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.2.1-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.2.1-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.2.1-amd64-netinst.iso --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm
Начало установки...
Выделение 'vm10.img' | 12 GB 00:00
Создание домена... | 0 B 00:00
Установка домена все еще в процессе. Вы можете переподключиться к
консоли, чтобы завершить процесс установки.
[root@server1 ~]#Get new posts in your inbox
No spam. Unsubscribe anytime.