Настройка виртуализации при помощи KVM
KVM (Kernel-based Virtual Machine) — это программное решение, обеспечивающее виртуализацию в среде Linux с поддержкой аппаратной виртуализации. Домашняя страница проекта Kernel Based Virtual Machine.
RHEL/CentOS исключил из дистрибутива Гипервизор Xen и стал использовать KVM.
Шаг 1 - Проверка сервера на поддержку технологии KVM
Для работы KVM необходима поддержка виртуализации вашим процессором. Это означает, что требуются расширения процессора Intel-VT(Virtualization Technology) либо AMD SVM (Secure Virtual Machine). Чтобы убедиться, поддерживает ли процессор одно из них, выполните команду:
# egrep '(vmx|svm)' /proc/cpuinfo
Результат больше 0 подразумевает, что виртуализация поддерживается.
KVM позволяет виртуальным машинам использовать немодифицированные образы дисков QEMU, vmware и других, содержащие операционные системы. Каждая виртуальная машина имеет своё собственное виртуальное аппаратное обеспечение: сетевые карты, диск, видеокарту и т.д.
Для проверки своего процессора можно использовать набор утилит cpu-checker, для установки введите в Debian, Ubuntu команду:
sudo apt install cpu-checker
И запустите утилиту kvm-ok
sudo kvm-ok
INFO: Your CPU does not support KVM extensions
KVM acceleration can NOT be used
Как вы видите, мой процессор не поддерживает виртуализацию KVM. Где же я нашел такой процессор в 2022 году, спросите вы? Все очень просто команду kvm-ok я запустил на виртуальном сервере (VPS), а не на выделенном сервере (dedicated) как требует технология виртуализации KVM. Ели вы уверены, что используете настоящий физический сервер и видите подобную ошибку - проверьте настройки BIOS, возможно эта опция выключена там.
Шаг 2 - Установка гипервизора
Подтвердив, что наша система может поддерживать виртуализацию KVM, установка гипервизора производится следующей командой:
sudo apt install -y qemu qemu-kvm libvirt-daemon libvirt-clients bridge-utils virt-manager
После того, как установка будет завершена вам необходимо добавить своего пользователя в группу libvirt:
sudo gpasswd -a $USER libvirt
Шаг 3 - Проверка демона libvirt-daemon
Проверка, что демон виртуализации – libvirt-daemon – работает:
sudo systemctl status libvirtd
Вы можете включить его автоматический запуск при загрузке, прописав:
sudo systemctl enable libvirtd
Проверка, загружены ли модули KVM:
lsmod | grep -i kvm
Шаг 4 - Создание виртуальной машины
Узнаем параметр для сети. При установке KVM, было создано несколько сетевых бриджей, посмотрим их командой:
ip link
Затем перейдем в папку libvirt и скачаем, при помощи утилиты wget, образ операционной системы, например для Ubuntu 20 Server можно так:
cd /var/lib/libvirt/boot/ sudo wget -O /var/lib/libvirt/boot/ubuntu20.iso https://releases.ubuntu.com/20.04/ubuntu-20.04.3-live-server-amd64.iso
Перед установкой, нужно узнать корректное наименование операционной системы для KVM, для нужно установить дополнительный пакет libosinfo-bin и запустим её:
sudo apt install libosinfo-bin osinfo-query os | grep Ubuntu
Пример команды для создания виртуальной машины с использованием образа Ubuntu 20 ISO:
sudo virt-install --name=ubuntu-vm --os-variant=ubuntu20.04 --vcpu=1 --ram=2048 --graphics vnc --cdrom=/var/lib/libvirt/boot/ubuntu20.iso --network bridge:virbr0,model=virtio --disk path=/var/lib/libvirt/images/ubuntu-vm.qcow2,size=10,bus=virtio,format=qcow2
Пояснение опций запуска установки виртуального сервера:
- –name указывает имя виртуальной машины ubuntu-vm.
- –os-option указывает семейство ОС или производную от VM.
- –vcpu указывает на ядра процессора, в данном случае 1 ядро.
- –ram указывает на объем ОЗУ, равный 2048 МБ.
- Флаг–cdrom указывает на абсолютный путь ISO-образа или смонтированное устройство с диском.
- –network указывает адаптер, который будет использоваться виртуальной машиной
- –disk path указывает путь, где хранится образ виртуальной машины, его размер, тип шины и формат самого образа.
Сразу после выполнения команды будет долгая установка системы, выбор дополнительных опций, создание пользователя системы, затем виртуальная машина сразу загрузится и будет доступна к авторизации и работе.
Шаг 5 - Запуск, останов, администрирование виртуальной машины
- Логи работы виртуальных машин под KVM хранятся здесь: /var/log/libvirt/qemu
- Конфигурация виртуальных машин хранится в xml файлах в каталоге /etc/libvirt/qemu/<имя.xml>
После установки посмотрим наличие нашей виртуальной машины командой
sudo virsh list
Также вы можете узнать параметры подключения по VNC к виртуальной машине с помощью команды:
sudo virsh vncdisplay
Для запуска виртуальной машины можно использовать команду:
sudo virsh start имя_машины
Для остановки:
sudo virsh shutdown имя_машины
Для перевода в режим сна:
sudo virsh suspend имя_машины
Для перезагрузки:
sudo virsh reboot имя_машины
Сброс:
sudo virsh reset имя_машины
Для отключения виртуальной машины:
sudo virsh destroy имя_машины
Учитывайте, что после этой команды образ виртуальной машины в папке /var/lib/libvirt/images/ останется и будет занимать место, если вы уже отключили виртуальную машину, то данный образ в папке можно удалить вручную.
Использование 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
- Как удалить virbr0
ip link virsh net-destroy default
Попытка перезапустить на PQ виртуальный сервер:
- Перечитываем конфиг VPS
virsh define /etc/libvirt/qemu/vm408166.xml
- Запускаем
virsh start vm408166
- Проверяем
# virsh list | grep vm408166 254 vm408166 работает
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: "
📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Китайский VPN Shadowsocks простая установка и настройка
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах