Тематические термины: KVM виртуализация, Linux, CentOS
Проверяем наличие поддержки со стороны процессора:
cat /proc/cpuinfo | egrep “(vmx|svm)”
Если команда ничего не вернет, на сервере отсутствует поддержка виртуализации или она отключена в настройках БИОС. Сам KVM поставить на такой сервер можно, но при попытке ввести команду управления гипервизором мы получим ошибку «WARNING KVM acceleration not available, using ‘qemu’». В таком случае необходимо перезагрузить сервер, войти в БИОС, найти поддержку технологии виртуализации (Intel VT или AMD-V) и включить ее.
Создадим каталоги, в которых будем хранить все, что касается виртуализации (предлагаемые по умолчанию не удобные):
mkdir -p /kvm/{images,iso}
* каталог /kvm/images для виртуальных дисков; /kvm/iso — для iso-образов.
Установка выполняется из репозитория следующей командой:
yum install qemu-kvm libvirt virt-install
* где qemu-kvm — сам гипервизор; libvirt — библиотека управления виртуализацией; virt-install — утилита для управления виртуальными машинами.
Разрешаем автозапуск:
systemctl enable libvirtd
Запускаем KVM:
systemctl start libvirtd
В данной инструкции рассмотрим использование сетевого моста.
Настраивая сетевой мост через удаленное подключение, внимательно проверяйте вводимые данные. В случае ошибки соединение будет прервано.
Устанавливаем пакет для работы с bridge:
yum install bridge-utils
Смотрим список сетевых интерфейсов и их настроек:
В моем примере были следующие данные:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever2: enp4s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:16:76:04:26:c6 brd ff:ff:ff:ff:ff:ff inet 192.168.1.24/24 brd 192.168.1.255 scope global enp4s0f0 valid_lft forever preferred_lft forever inet6 fe80::216:76ff:fe04:26c6/64 scope link valid_lft forever preferred_lft forever3: enp5s5: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000 link/ether 00:16:76:04:26:c7 brd ff:ff:ff:ff:ff:ff4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000 link/ether 52:54:00:cd:86:98 brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 valid_lft forever preferred_lft forever5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000 link/ether 52:54:00:cd:86:98 brd ff:ff:ff:ff:ff:ff
* из этого для нас важны enp4s0f0 — реальный сетевой интерфейс с настроенным IP-адресом 192.168.1.24, через который идет подключение сервера к локальной сети (из него мы будем делать мост); 00:16:76:04:26:c6 — mac-адрес реального ethernet адаптера; virbr0 — виртуальный сетевой адаптер.
Редактируем настройки реального адаптера:
vi /etc/sysconfig/network-scripts/ifcfg-enp4s0f0
Приводим его к виду:
ONBOOT=yesBRIDGE=br0TYPE=EthernetDEVICE=enp4s0f0BOOTPROTO=none
Создаем интерфейс для сетевого моста:
vi /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0TYPE=BridgeONBOOT=yesBOOTPROTO=staticIPADDR=192.168.1.24NETMASK=255.255.255.0GATEWAY=192.168.1.1DNS1=8.8.8.8DNS2=77.88.8.8
Перезапускаем сетевую службу:
systemctl restart network
Сетевые настройки должны измениться — в моем случае:
2: enp4s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP qlen 1000 link/ether 00:16:76:04:26:c6 brd ff:ff:ff:ff:ff:ff3: enp5s5: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000 link/ether 00:16:76:04:26:c7 brd ff:ff:ff:ff:ff:ff4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000 link/ether 52:54:00:cd:86:98 brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 valid_lft forever preferred_lft forever5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000 link/ether 52:54:00:cd:86:98 brd ff:ff:ff:ff:ff:ff6: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000 link/ether 00:16:76:04:26:c6 brd ff:ff:ff:ff:ff:ff inet 192.168.1.24/24 brd 192.168.1.255 scope global br0 valid_lft forever preferred_lft forever inet6 fe80::216:76ff:fe04:26c6/64 scope link valid_lft forever preferred_lft forever
Настаиваем перенаправления сетевого трафика:
vi /etc/sysctl.d/99-sysctl.conf
net.ipv4.ip_forward=1
Применяем настройки:
sysctl -p /etc/sysctl.d/99-sysctl.conf
Перезапускаем libvirtd:
systemctl restart libvirtd
Смотрим доступные варианты гостевых операционных систем:
osinfo-query os
Для создания первой виртуальной машины вводим следующую команду:
virt-install -n FirstTest \–autostart \–noautoconsole \–network=bridge:br0 \–ram 1024 –arch=x86_64 \–vcpus=1 –cpu host –check-cpu \–disk path=/kvm/images/FirstTest-disk1.img,size=16 \–cdrom /kvm/iso/CentOS-7-x86_64-Minimal-1611.iso \–graphics vnc,listen=0.0.0.0,password=my_password \–os-type linux –os-variant=rhel7 –boot cdrom,hd,menu=on
* где:
Дожидаемся создание виртуальной машины. И переходим к подключению по VNC.
Для установки операционной системы скачиваем VNC-клиент на компьютер администратора, например, TightVNC и устанавливаем его.
На сервере смотрим, на каком порту слушает VNC созданной машины:
virsh vncdisplay FirstTest
в моем случае было:
Это значит, что нужно к 5900 прибавить 0. Если результат команды будет :1 — 5900 + 1 = 5901 и так далее.
Открываем порт на брандмауэре:
firewall-cmd –permanent –add-port=5900-5905/tcp
firewall-cmd –reload
* в данном примере добавлено сразу 6 tcp-портов от 5900 до 5905.
Запускаем установленный TightVNC Viewer, в открывшемся окне вводим IP-адрес сервера KVM и порт, на котором слушает наша ВМ (в данном примере, 5900):
Нажимаем Connect. Программа запросит пароль — вводим тот, что указали при создании ВМ, (в данном примере, my_password). Мы подключимся к виртуальной машине, как будто, к ней подключен монитор или удаленная консоль KVM.
Устанавливаем операционную систему. Если это будет Windows, то проверяем корректность определения драйверов и, при наличии неустановленных устройств, выполняем установку драйверов KVM для гостевой Windows.
1. Получить список созданных машин:
virsh list –all
2. Включить / перезагрузить / выключить.
а) включить виртуальную машину можно командой:
virsh start FirstTest
* где FirstTest — имя созданной машины.
б) перезагрузить:
virsh reboot FirstTest
* посылает команду операционной системе на корректную перезагрузку.
в) выключить корректно:
virsh shutdown FirstTest
* посылает команду операционной системе на корректное выключение.
г) выключить принудительно:
virsh destroy FirstTest
* грубо выключает ВМ. Может привести к потере данных. Способ стоит применять при полном зависании виртуалки.
д) приостановить:
virsh suspend FirstTest
Для возобновления работы вводим команду:
virsh resume FirstTest
е) отправить команду всем гостевым операционным системам:
for i in $(virsh list –name –state-shutoff); do virsh start $i; done
for i in $(virsh list –name –state-running); do virsh shutdown $i; done
* первыя команда запустит все ВМ, вторая — отправит команду на выключение.
3. Разрешаем автостарт для созданной ВМ:
virsh autostart FirstTest
4. Удаление виртуальной машины:
Удаляем виртуальную машину:
virsh undefine FirstTest
Удаляем виртуальный жесткий диск:
\rm /kvm/images/FirstTest-disk1.img
* где /kvm/images — папка, где хранится диск; FirstTest-disk1.img — имя виртуальног диска для удаленной машины.
5. Редактирование конфигурации виртуальной машины:
Открыть редактор для изменения конфигурации:
virsh edit FirstTest
Также можно менять параметры из командной строки. Приведем несколько примеров для работы с виртуальной машиной FirstTest.
а) изменить количество процессоров:
virsh setvcpus FirstTest 2 –config –maximum
virsh setvcpus FirstTest 2 –config
б) изменить объем оперативной памяти:
virsh setmaxmem FirstTest 2G –config
virsh setmem FirstTest 2G –config
6. Увеличение диска
Получаем список дисков для виртуальной машины:
virsh domblklist FirstTest
Останавливаем виртуальную машину:
Увеличиваем размер диска:
qemu-img resize /kvm/images/FirstTest-disk1.img +100G
* данной командой мы расширим дисковое пространство виртуального диска /kvm/images/FirstTest-disk1.img на 100 Гигабайт.
Запускаем виртуальную машину:
Меняем размер блочного устройства:
virsh blockresize FirstTest /kvm/images/FirstTest-disk1.img 200G
Получаем информацию о виртуальном диске:
qemu-img info /kvm/images/FirstTest-disk1.img
7. Работа со снапшотами
а) Создать снимок виртуальной машины можно командой:
virsh snapshot-create-as –domain FirstTest –name FirstTest_snapshot_2020-03-21
* где FirstTest — название виртуальной машины; FirstTest_snapshot_2020-03-21 — название для снапшота.
б) Список снапшотов можно посмотреть командой:
virsh snapshot-list –domain FirstTest
* данной командой мы просмотрим список всех снапшотов для виртуальной машины FirstTest.
в) Для применения снапшота, сначала мы должны остановить виртуальную машину. Для этого можно либо выполнить выключение в операционной системе или ввести команду:
После вводим:
virsh snapshot-revert –domain FirstTest –snapshotname FirstTest_snapshot_2020-03-21 –running
* где FirstTest — имя виртуальной машины; FirstTest_snapshot_2020-03-21 — имя созданного снапшота.
г) Удалить снапшот можно так:
virsh snapshot-delete –domain FirstTest –snapshotname FirstTest_snapshot_2020-03-21
8. Клонирование виртуальных машин
Для примера, склонируем виртуальную машину FirstTest и создадим новую SecondTest.
Для начала, мы должны остановить виртуалку:
После можно клонировать:
virt-clone –original FirstTest –name SecondTest –file /kvm/images/SecondTest-disk1.img
* итого, мы склонируем виртуальную машину FirstTest. Новая машина будет иметь название SecondTest, а путь до диска будет /kvm/images/SecondTest-disk1.img.
Восстанавливаем работу FirstTest:
Существуют различные веб-интерфейсы для управления гипервизором KVM. В данной инструкции мы рассмотрим oVirt.
Для его установки вводим команды:
yum install http://resources.ovirt.org/pub/yum-repo/ovirt-release41.rpm
yum install ovirt-engine
После разворачиваем и настраиваем портал:
engine-setup
* после запуска команды система задаст ряд вопросов, на все, кроме ввода пароля, можно ответить по умолчанию (просто нажать Enter).
После окончания установки в браузере вводим https://kvm/ovirt-engine/sso/, где kvm — имя сервера. В открывшемся окне вводим логин admin и пароль, который создали при выполнении команды engine-setup. После успешного входа можно управлять виртуальными машинами через веб-интерфейс.
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies