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-сервер (они настраиваются автоматически).
И в настройках виртуальной машины выберите данный интерфейс.
Мост
Чтобы напрямую общаться между реальной сетью и виртуальными машинами напрямую нужно создать сетевой мост.
Данный способ является наиболее правильным. Проще всего его сделать через alterator-net-bridge.
Например, br0, затем в настройках ВМ указать именно его.
//Как? Расписать...
Если простым языком, то задачу можно разделить на две:
1) создать бридж (тут нужно выбрать как - etcnet, systemd-networkd, NetworkManager или Alterator) и назначить именно ему (а не физическому интерфейсу, к которому он привязан) IP-адрес
2) уже в libvrt создать сеть с forward mode="bridge", а к ней подключать виртуальные машины с IP-адрес из той же сети
Проброс портов
Из переписки:
Настроил тут проброс порта в 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