Libvirt (Qemu+KVM+Virt-manager)
Libvirt - набор инструментов для управления виртуализацией. В данной статье будет описано его использование.
Ставим пакет:
# apt-get install libvirt libvirt-kvm
Добавляем пользователя в группу:
# gpasswd -a user vmusers
Запуск службы
# systemctl enable libvirtd # systemctl start libvirtd
Делаем пользователю доступ в SSH (для удаленного управления)
На сервере переключаемся в режим суперпользователя:
su-
И правим следующий файл:
# cd /etc/openssh # mcedit sshd_config
Добавляем:
Match User petr #имя вашего пользователя на сервере X11Forwarding no AllowTcpForwarding no PermitTTY no ForceCommand internal-sftp ChrootDirectory /home/files #корневой каталог при доступе через SSH
После настройки на сервере SSH для доступа к файлам, на клиенте заработает и SSH для libvirt-manager для подключения к libvirt.
Кроме того разрешаем в брандмауэре: Alterator Web-Брадмауэр-Внешние сети-Дополнительные порты TCP/UDP-Добавляем порт 5900
Графическое управление
Чтобы сделать некое подобие "Диспетчера Hyper-V" (Графическую консоль для управления виртуальными машинами) устанавливаем следующий пакет:
# apt-get install virt-manager
Открываем Virt-Manager. Файл>Добавить соединение>
- Локальная машина
- Гипервизор QEMU/KVM (подключаться автоматически).
- Удаленный сервер
- QEMU/KVM-Connect to remove host over SSH
- вводим имя пользователя
- вводим IP
- ставим галочку подключаться автоматически
- QEMU/KVM-Connect to remove host over SSH
Создание виртуальной машины
- Нажимаем на кнопку "Создать виртуальную машину"
- Выбираем метод установки - локальный/ISO
- Выбираем ISO/CD и тип ОС (с помощью автодополнения)
- Выбираем количество ОЗУ и процессоров
- Создаем виртуальный жесткий диск
- Вводим название и выбираем сеть
BIOS или UEFI
До первого запуска откройте настройки виртуальной машины, во вкладке Обзор> Свойства гипервизора у вас будет возможность сменить тип прошивки - BIOS или UEFI. До первого запуска![1]
Некоторые настройки
Выберите машину, нажмите на лампу...
Настройка дисплея через SSH
- Дисплей:
- тип:VNC
- listen type:address
- адрес:IP
- порт:авто
- пароль:пользователя в группе
Настройка жесткого диска
...Диск-1> Дополнительные параметры>Шина диска
Тип диска:
- IDE - рекомендуется для Windows XP и младше
- SATA - для 7 и старше
- VirtIO для Linux [2]
Параметры загрузки
- Включить меню загрузки> ставите очередность.
Иначе вы просто не загрузитесь с CD/ISO.
- запускать при старте системы
Подключение ISO
...Выберите IDE CDROM> Browse.
В окне "Выберите том хранилища" нажмите на плюс (добавить пул), выберите тип dir-каталог в файловой системе и укажите папку с iso-образами.
Выберите образ из пула и нажмите на кнопку "Выбор тома".
Сеть
NAT
NAT — это механизм в сетях TCP/IP, позволяющий преобразовывать IP-адреса одной сети, в адрес другой сети.
Т.е. у вас в локальной сети сеть 192.168.0.x., а у виртуальных машин будет 192.168.1.x. И NAT позволит вам общатся между сетью 0.x и 1.x.
По-умолчанию в virt-manager уже есть NAT-интерфейс, но если вы его случайно удалили или хотите создать новый, то это делается так:
- откройте Правка>Свойства подключения>Виртуальные сети>+
- введите название сети
- режим: NAT
- Forward to: любое физическое устройство
Можете так же настроить адресацию IPv4 и DHCP-сервер (они настраиваются автоматически).
И в настройках виртуальной машины выберите данный интерфейс.
Мост
Чтобы напрямую общаться между реальной сетью и виртуальными машинами напрямую нужно создать сетевой мост.
Данный способ является наиболее правильным.
Создание моста
Создаем мост:
# ip link add br0 type bridge # ip link set br0 up
Удостоверяемся, что мост создан:
# ip link show type bridge
Включаем интерфейс, который будет добавлен в мост:
# ip link set eth0 up
Добавляем сетевой интерфейс в мост:
# ip link set eth0 master br0
Настраиваем IP-адрес моста
# ip address add dev br0 192.168.0.90/24
Проверяем:
# ip addr show br0
Удаление моста
Вывод из моста:
# ip link set eth0 nomaster
Отключение интерфейса:
# ip link set eth0 down
Удаление моста:
# ip link delete br0 type bridge
[i]
Проброс портов
Из переписки:
Настроил тут проброс порта в QEMU-виртуалку. Казалось бы, в чём проблема-то?
cmd|qemu -netdev user,id=user0,hostfwd=tcp::2222-:22 -device e1000,netdev=user0" …
как-то так (можно вместо e1000 паравиртуальный драйвер, это побыстрее будет).
Но. Я это сделал через libvirt! И оказалось, что штатными средствами (не только тыкая в менюшки virt-manager, но и, кажется, вообще прямой настройкой сети) нельзя. Не знаю, почему. Может быть, можно, но я не нашёл как. А я искал. То, что в libvirt называется NAT, в действительности садится на tun/tap, лезет в iptables и т. д. Наверное, для совместимости с другими платформами виртуализации, не знаю.
Короче.
- В настройках virt-manager разрешаем «Редактирование XML»
- Удаляем все сетевые устройства.
- Добавляем в конец общего XML-я виртуалки (например, во вкладке «Обзор»), перед закрывающим </domain>, такие строки:
<qemu:commandline> <qemu:arg value="-netdev"/> <qemu:arg value="user,id=user0,hostfwd=tcp::2222-:22"/> <qemu:arg value="-device"/> <qemu:arg value="e1000,netdev=user0"/> </qemu:commandline>
Если неймспейс qemu не загружен, то такие:
<commandline xmlns="http://libvirt.org/schemas/domain/qemu/1.0"> <arg value="-netdev"/> <arg value="user,id=user0,hostfwd=tcp::2222-:22"/> <arg value="-device"/> <arg value="e1000,netdev=user0"/> </commandline>
И qemu преспокойненько само всё как надо делает. Фишка — не забыть про xmlns
иначе просто не заработает, а вам ничего не скажет)
Графики
Откройте "Правка> Параметры", вкладка "Статистика", отметьте галочками, какие графики вы хотите сделать доступными.
Вкл./выкл. график вы можете через "Вид> График".
Снимки машины
Снимок машины можно создать только если виртуальный жесткий диск у вас в формате *.qcow2.
Файлы Virt
(Для резервного копирования-восстановления)
Файлы Libvirt хранятся в следующих директориях:
- /var/lib/libvirt
- /etc/libvirt