Виртуализации при помощи KVM
Homepage: Kernel Based Virtual Machine
Для работы KVM необходима поддержка виртуализации вашим процессором. Это означает, что требуются расширения процессора Intel-VT(Virtualization Technology) либо AMD SVM (Secure Virtual Machine). Чтобы убедиться, поддерживает ли процессор одно из них, выполните команду:
# egrep '(vmx|svm)' /proc/cpuinfo
KVM позволяет виртуальным машинам использовать немодифицированные образы дисков QEMU, VMware и других, содержащие операционные системы. Каждая виртуальная машина имеет своё собственное виртуальное аппаратное обеспечение: сетевые карты, диск, видеокарту и т. д.
KVM разное
- Логи работы виртуальных машин под KVM хранятся здесь: /var/log/libvirt/qemu
- Конфигурация виртуальных машин хранится в xml файлах в каталоге /etc/libvirt/qemu/<имя.xml>
Использование virsh
- Virt-manager (Virtual Machine Manager) - приложение для управления виртуальными машинами
- Подключение к удаленному хост- серверу:
# virsh --connect qemu+ssh://darkfire@xxx.xxx.xxx.xxx/system WARNING: gnome-keyring:: couldn't connect to: /tmp/keyring-otUBG2/pkcs11: Нет такого файла или каталога darkfire@195.26.95.238's password: Добро пожаловать в virsh — интерактивный терминал виртуализации. Введите «help» для получения справки по командам «quit» для выхода virsh #
- Выведем список всех доступных виртуальных машин с помощью virsh:
$ virsh 'list --all'
- Автоматический запуск/останов виртуальных машин, при включении хостового сервера
# virsh autostart TestServer Domain TestServer marked as autostarted # virsh autostart --disable TestServer Domain TestServer unmarked as autostarted
- How to remove/delete virbr0?
ip link virsh net-destroy default
Backup KVM
- При сохранении виртуальных машин KVM обязательно нужно сохранить XML файл с настройками. Обычно это файл находится /etc/libvirt/qemu, но проще и правильней выполнить команду virsh:
# virsh dumpxml имя_машины > имя_машины.xml
- Останавливаем нужную виртуальную машину
virsh shutdown имя_машины
Имена всех машин и их состояния можно вывести так
virsh list --all
- Сжимаем файл имя_машины.img при помощи Lzop.
- Запускаем виртуальную машину
virsh start имя_машины
- Копируем файл имя_машины.img.lzo любым удобным образом на сервер бекапов.
libvirt и iptables
- IPtables / firewall usage in libvirt - правила iptables определены в исходном коде libvirt
Чтобы расширить правила Правила iptables, подгружаемые libvirt, можно создать файл с нужными правилами и прописать путь к этом файлу в rc.local. Файлы запускаемые при помощи rc.local запускаются в последнюю очередь, после инициализации всех служб. Так как способ запуска при помощи rc.local считается устаревшим, проверьте чтобы этот способ запуска не был отключен в вашем дистрибутиве, например при помощи sysv-rc-conf.
# nano /etc/rc.local #!/bin/sh -e /etc/network/iptables_rules exit 0
# nano /etc/network/iptables_rules #!/bin/sh IPT="/sbin/iptables" IFACE_LOC="lo" $IPT -I INPUT 1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT $IPT -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT $IPT -I INPUT 2 -i $IFACE_LOC -j ACCEPT #log $IPT -A INPUT -m limit --limit 3/m --limit-burst 5 -j ULOG --ulog-prefix "IN_xxx: "