KVM на CentOS
Установка и настройка KVM на CentOS, а так же создание виртуальных машин.
Для начала следует проверить поддержку виртуализации аппаратно:
# egrep '(vmx|svm)' --color=always /proc/cpuinfo
Если нет никакого вывода, значит процессор не поддерживает виртуализацию, если же вывод есть, переходим к установке:
# yum install kvm kmod-kvm qemu libvirt python-virtinst qemu-kvm
Далее необходимо выключить selinux, для этого редактируем файл /etc/selinux/config, изменив параметр:
SELINUX=disabled
перезагружаемся
# reboot
Проверяем:
# virsh list
список должен быть пуст.
Для того что-бы,можно было виртуальные машины выпускать в реальную сеть, не ограничиваясь работой из-под NAT, необходимо установить пакет для работы с сетевыми мостами:
# yum install bridge-utils
Далее, для простоты, будем брать в расчет, что виртуальные машины в сети получают адреса по DHCP, в противном случае, всего лишь, сетевые настройки придется прописывать вручную, а это, я думаю, каждый знает как.
И так, реконфигурируем сетевой интерфейс и создаем сетевой мост
редактируем /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.1.10
NETMASK=255.255.255.0
ONBOOT=yes
редактируем /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
BRIDGE=br0
рестартуем сеть:
# /etc/init.d/network restart
в результате, по ifconfig получаем примерно следующее (сократил для наглядности):
br0 Link encap:Ethernet HWaddr F4:BB:46:99:66:55
inet addr:192.168.1.10 Bcast:192.168.1.255 Mask:255.255.255.0
eth0 Link encap:Ethernet HWaddr F4:BB:46:99:66:55
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
virbr0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
Следующим этапом будет непосредственно установка виртуальных машин, но для начала, необходимо уточнить некоторые моменты.
1. Куда будем ставить виртуальные машины, на файл-имидж или на LVM раздел.
2. Как будем подключаться для установки к виртуальным машинам.
По первому вопросу, мой выбор — LVM. Беру в расчет что LVM уже есть и настроен, так же есть необходимое место. Создаем необходимый логический том размером 20G в группе томов vol:
# lvcreate -L 20G -n centos1 vol
И так, ставить будем на раздел /dev/vol/centos1
По второму вопросу, есть несколько вариантов, в том числе подключение через консоль, но мы рассмотрим 2 из них. Первый с помошью программы virt-manager, и второй, подключившись напрямую по VNC.
Если мы хотим непосредственно подключатся по VNC к устанавливаемой машине, необходимо подредактировать файл /etc/libvirt/qemu.conf , задав следующие параметры:
vnc_listen = "0.0.0.0" # раскомментировать
vnc_password = "Your_Pass" # раскомментировать и поставить свой пароль
после этого перезапустить виртуальную среду:
# /etc/init.d/libvirtd restart
Или же мы можем использовать virt-manager, тогда никакие изменения вносить не надо, но тогда на машине, к которой будем подключаться (реальной), должен быть открыт root-доступ по ssh.
Запускаем virt-manager на рабочей машине, добавляем новое соединение и соединяемся введя пароль root.
Далее, нам необходим iso образ CentOS, скачиваем CentOS-6.0-x86_64-minimal.iso с сайта centos.org.
Теперь даем команду на создание новой виртуальной машины
# virt-install --connect qemu:///system -n centos1 -r 512 --vcpus=1 -f /dev/vol/centos1 -c ~/CentOS-6.0-x86_64-minimal.iso --vnc --noautoconsole --os-type linux --os-variant generic26 --accelerate --hvm --network=bridge:br0
Если мы не хотим выпускать машину в реальную сеть, а хотим что-бы она работала из-под NAT, тогда вместо —-network=bridge:br0 пишем —network=network:default
А если мы хотим поставить машину не на LVM, а на файл-имидж, то меняем -f /dev/vol/centos1 на -f /путь/к_файлу и добавляем -s 20 .
После этого в virt-manager мы видем что появилась новая вируальная машина, кликнув на ней, подключаемся к ней, где начинаем установку вируальной машины. Ставим совершенно как обычную машину.
Теперь, если в консоли дать:
# virsh list
то получим:
ID Имя Статус
----------------------------------
1 centos1 работает
Управлять работой виртуальных машин можно как с помошью virt-manager, так и из консоли с помошью virsh, например, на машине где крутятся виртуалки:
# virsh start centos1 # запустить виртуальную машину
# virsh reboot centos1 # рестартануть
# virsh shutdown centos1 # выключить
список всех команд можно посмотреть по:
virsh help
более подробно по каждой команде:
virsh help команда
Вот и все. Теперь можете ставить другие вируальные машины подобным же образом.
Настройки машин лежат в /etc/libvirt/qemu/ в формате xml, если Вы меняете настройки вручную в этом файле, то после изменений необходимо сделать:
# virsh define /etc/libvirt/qemu/имя_машины.xml
Еще хочу заметить, что при установке Debian 6 как виртуальной машины на раздел LVM, у меня не захотел ставиться grub, однако запросто поставился lilo, давненько я его не видел 🙂
И еще немного про доступ к разделам виртуальной машины с основной машины, в этом нам поможет замечательная утилита kpartx.
Для того чтобы посмотреть разделы:
# kpartx -l /dev/mapper/vol-centos1
vol-centos1p1 : 0 40550400 /dev/mapper/vol-centos1 2048
vol-centos1p2 : 0 1390592 /dev/mapper/vol-centos1 40552448
Создать ссылки на разделы:
# kpartx -a /dev/mapper/vol-centos1
# ls -l /dev/mapper/vol*
brw-rw---- 1 root disk 253, 2 Сен 4 09:11 vol-centos1
brw-rw---- 1 root disk 253, 3 Сен 4 12:58 vol-centos1p1
brw-rw---- 1 root disk 253, 4 Сен 4 12:58 vol-centos1p2
Мы получили разделы vol-centos1p1 и vol-centos1p2 с которыми можно работать напрямую или же смонтировав их, например:
# mount /dev/mapper/vol-centos1p1 /mnt/virtual
И наконец, чтоб удалить ссылки на разделы:
# kpartx -d /dev/mapper/vol-centos1
Удачи в настройках.
© shadow_alone
Знаешь Андреич — я ставил квмку год наза, и вот как раз бридж то он и не поднимал, точнее фактически бридж интерфейс бодро светился, а вот до вирт машинки достучаться не получалось? у тебя такое было?
У меня такого никогда не было, поднимал много раз. Да и не должно такого быть, если все правильно делаешь…. бридж полюбе должен работать и KVM тут не при чем.