- Установка и настройка KVM в CentOS
- Проверка аппаратной поддержки виртуализации
- Настройка FQDN для локального хоста
- Отключение SELinux
- Установка KVM, QEMU и пользовательских утилит
- Настройка сетевого моста для подключения виртуальных машин к сети
- Установка VirtManager
- 1. Запуск VirtManager на локальной системе
- 2. Удаленный запуск VirtManager
- Поиск и устранение неполадок при установке KVM и VirtManager
- Настройка KVM на CentOS 7
- Подготовительные работы
- Bridge или nat?
- Устанавливаем KVM
- Создаем первую виртуальную машину
- Подключаемся к виртуальной машине по VNC
- Включение/выключение виртуальных машин
- Автостарт виртуальных машин
- Контроль сетевой активности виртуальной машины KVM
- Подключение и отключение привода cdrom
- Установка и настройка KVM на CentOS 7
- Подготовка сервера
- Установка и запуск
- Настройка сети
- Создание виртуальной машины
- Подключение к виртуальной машине
- Базовые команды управления ВМ
- Управление дисками
- Добавление диска
- Управление через веб-интерфейс
- Обновление базы операционный систем
Установка и настройка KVM в CentOS
KVM — это гипервизор уровня ядра системы, который быстро набрал популярность на рынке серверов Linux. Red Hat официально отказалась от Xen в пользу KVM, начиная с релиза RHEL 6. С получением официальной поддержки, установка KVM в системах на базе RedHat должна значительно упроститься.
В этом руководстве я опишу установку и настройку KVM и VirtManager в CentOS. Для установки не требуется графический интерфейс, по факту действия, описанные ниже тестировались на CentOS 6.4 server.
Проверка аппаратной поддержки виртуализации
KVM требует наличия поддержки аппаратной виртуализации (VT от Intel или AMD-V), которая представляет собой расширения набора инструкций процессора. Проверьте, поддерживает ли ваш хост аппаратную виртуализацию, с помощью команды:
Если флаги процессора содержат «vmx» or «svm», значит аппаратная виртуализация поддерживается.
Настройка FQDN для локального хоста
Настройте FQDN (полностью определенное имя домена — fully qualified domain name) для локального хоста, иначе при запуске демона libvirtd вы увидите предупреждение: «getaddrinfo failed for ‘myhost’: Name or service not known».
Для настройки FQDN отредактируйте следующий конфигурационный файл:
Отключение SELinux
Перед установкой KVM обратите внимание на то, что некоторые установки SELinux могут влиять на поведение KVM и libvirt. В этом руководстве я решил в демонстрационных целях отключить SELinux. Если вы не хотите этого делать, обратитесь к документации по логическим значениям KVM SELinux.
Отключение SELinux в CentOS:
Перезагрузите компьютер, чтобы изменения вступили в силу.
Установка KVM, QEMU и пользовательских утилит
Перед установкой импортируйте GPG-ключи для программных пакетов:
Установите KVM и virtinst (утилита для создания виртуальных машин):
Запустите демон и libvirtd и добавьте его в автозагрузку:
Убедитесь, что KVM установлен успешно. Вы не должны увидеть никаких сообщений об ошибках:
Настройка сетевого моста для подключения виртуальных машин к сети
Сама по себе установка KVM не дает возможности виртуальным машинам сообщаться друг с другом или получать доступ к внешним сетям. Сеть необходимо настроить отдельно. В этом примере я покажу, как настроить сетевой мост.
Установите пакет, необходимый для создания и управления сетевыми мостами:
Отключите службу Network Manager, и переключитесь на менеджер сети по умолчанию, как показано ниже.
Для настройки нового моста вы должны выбрать активный сетевой интерфейс (например eth0) и сделать его сетевым мостом. В зависимости от того, каким образом назначается сетевой адрес — по DHCP или статически, имеется два способа настройки нового моста.
Настройка моста br0 с DHCP:
Настройка моста br0 со статическим IP-адресом:
Обратите внимание, что в настройках подключаемого сетевого интерфейса (eth0) нет поля «BOOTPROTO», но добавлено поле «BRIDGE».
После того, как будут сгенерированы конфигурационные файлы, активируйте изменения:
Вы должны увидеть сетевой мост br0 с правильным IP-адресом, как показано ниже.
Установка VirtManager
Последний этап — установка графического интерфейса под названием VirtManager для управления виртуальными машинами с помощью libvirt.
Установка VirtManager производится с помощью команды:
1. Запуск VirtManager на локальной системе
Если вы используете CentOS в качестве рабочей системы на десктопе, то можете просто запустить VirtManager с помощью команды:
2. Удаленный запуск VirtManager
Если вы используете CentOS в качестве сервера без графического интерфейса, необходимо выполнить определенные подготовительные действия для запуска VirtManager.
Включите форвардинг X11 на SSH-сервер:
Создайте приведенный ниже исполняемый скрипт «обертку» для virt-manager.
Затем подключитесь к своему серверу с другой машины (десктопа) и запустите этот скрипт для удаленного запуска VirtManager.
Поиск и устранение неполадок при установке KVM и VirtManager
1. Если при попытке удаленного запуска VirtManager вы увидели приведенное ниже сообщение об ошибке, убедитесь, что вы использовали скрипт — «обертку» (vm), как было описано выше.
2. Если вы видите следующее сообщение об ошибке D-Bus:
Запустите приведенную ниже команду и перезагрузите хост.
3. Если при работе VirtManager возникают проблемы с шрифтами, установите приведенный ниже шрифт и перезапустите программу.
Источник
Настройка KVM на CentOS 7
Настройку KVM будем проводить на CentOS 7, minimal, x64. Выбор KVM при использовании CentOS был для меня достаточно очевиден — он поддерживается и продвигается Red Hat.
Итак, в локальной сети 192.168.88.0/24 есть хост (CentOS 7, имя SERVER.LOCAL и IP 192.168.88.2, сетевой адаптер enp1s0). На этом хосте мы хотим запустить несколько виртуальных машин, доступных из локальной сети. Технология виртуализации: KVM.
Подготовительные работы
Для начала вообще проверим, наш хост поддерживает виртуализацию или нет:
# egrep ‘(vmx|svm)’ /proc/cpuinfo
Если ок (еще бы нет. ), готовим сеть для роутинга трафика между виртуальными машинами и внешней сетью:
Ок. Дальше выберем тип виртуальной сети.
Bridge или nat?
Есть два варианта работы виртуальных машин в сети:
1) Виртуальные машины будут за nat, недоступные из внешней сети.
Создаваемые виртуальные машины по-умолчанию будут принадлежать внутренней виртуальной сети хоста (по-умолчанию 192.168.122.0/24) и будут иметь доступ во внешнюю сеть хоста (т.е. в сеть 192.168.88.0/24), а если маршрутизация на хосте настроена, то и в интернет тоже. Из локальной сети виртуальные машины будут недоступны до тех пор, пока вы не настроите проброс портов (forwarding) на хосте из сети хоста в виртуальную сеть.
+ Этот способ проще, т.к. не потребует создания дополнительного сетевого интерфейса — bridge.
+ Если внешний IP один, то может быть невозможным иной сценарий, как только пробрасывать порты.
+ Возможно, вам вообще необходимо создать закрытую сеть для виртуальных машин и вам уж точно не нужно публиковать их в сети хоста. Кто знает? Хозяин — барин!
2) Bridge — виртуальные машины будут видны в сети так же, как и обычные компьютеры, без всяких там nat и forwarding.
В этом случае виртуальные машины будут получать IP по DHCP от вашего обычного сервера, будут видны в сетевом окружении другими компьютерами и прочее.
+ Клиенты в сети не увидят разницу между виртуальным сервером и реальным.
— В случае с внешним IP для каждой виртуальной машины нужен будет свой IP, а это не всегда возможно.
— Надо немного потрудиться и подготовить сеть хоста для создания бриджа (bridge), на котором и будет висеть сеть виртуальных машин.
После установки kvm у вас уже будет готовая внутренняя сеть (вариант 1), вполне себе работоспособная, позволяющая гостевым виртуалкам выходить в интернет. Для простоты предлагаю использовать эту сеть, почувствовать, что к чему и потом, при желании, создать bridge для реализации второго варианта.
Устанавливаем KVM
Собственно, мы дорвались до установки виртуализации KVM, эмулятора QEMU и сопутствующих инструментов.
Устанавливаем необходимые пакеты:
# yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install
# systemctl enable libvirtd && systemctl start libvirtd
Хранить образы виртуальных машин мы будем в новой папке /vms
Добавляем соответствующий контекст для нашей папки, чтобы SELinux не возмущалась:
# semanage fcontext —add -t virt_image_t ‘/vms(/.*)?’
# restorecon -R -v /vms
и проверяем, применились ли они:
# ls -aZ /vms
drwxr-xr-x. root root unconfined_u:object_r:virt_image_t:s0 .
dr-xr-xr-x. root root system_u:object_r:root_t:s0 ..
Ок, скачиваем из сети образ iso для той ОС, которая будет установлена на вирт. машине, например, тот же CentOS 7 minimal для будущего веб-сервера? Или Tails? Кто знает 🙂
Создаем первую виртуальную машину
После вышеперечисленных действий для виртуальных машин на хосте создан сетевой интерфейс virbr0 с IP 192.168.122.1:
Также создана виртуальная сеть default:
Сеть можно редактировать:
Пока давайте не будем ничего менять и создадим виртуальную машину, подключенную с сети default:
—graphics vnc,password=vm1password
Здесь мы указываем пароль и возможность подключиться к терминалу виртуальной машины с через VNC. Пароль может засветиться в логах, так что не пишите сюда что-то важное.
—network network=default — подключаем нашу виртуальную машину к виртуальной сети с именем default (с ней мы уже знакомы).
М.б. —network bridge:br0, например, если бы мы создали bridge с именем br0 для варианта номер 2.
Указанная выше команда может быть введена сразу, одной строкой, тут уж как удобнее:
virt-install —network network=default —name vm1 —ram=2048 —vcpus=1 —disk path=/vms/vm1.img,size=30,format=qcow2 —graphics vnc,password=vm1password —cdrom /vms-iso/CentOS-7-x86_64-Minimal-1503-01.iso —boot cdrom,hd,menu=on
После выполнения команды можете увидеть сообщение:
WARNING Unable to connect to graphical console: virt-viewer not installed. Please install the ‘virt-viewer’ package.
WARNING No console to launch for the guest, defaulting to —wait -1
Нам и не надо, ведь у нас все равно хост виртуальных машин не имеет оконного менеджера. У меня так, во всяком случае.
Мужественно ждем. Процесс займет какое-то время.
После завершения команды посмотрим список виртуальных машин:
Вирт. машины можно запускать ( virsh start vm1 ), приостанавливать ( virsh suspend vm1 ), возобновлять ( virsh resume vm1 ), выключать ( virsh shutdown vm1 ) и много чего еще с ними делать. Итак, машина vm1 запущена (проверить можно командой virsh domstate vm1 ). Как к ней подключиться?
Подключаемся к виртуальной машине по VNC
На предыдущем этапе вы создали виртуальную машину, указали ей CDROM с операционной системой, а дальше что? Как вы планируете установить и настроить ОС? Да, есть варианты. Можно подготовить инфраструктуру и заливать готовые образы и др. Но мы с вами учимся и у нас нет ничего, кроме недавно скачанного с интернета файла образа диска iso. На самом деле все не сложно. Мы указали на предыдущем шаге параметр «—graphics vnc,password=vm1password». Он означает, что мы можем подключиться к терминалу (читай — экрану) виртуальной машины через VNC, например, программой TightVNC, указав IP хоста виртуальных машин и порт для подключения.
Нашей виртуальной машине был назначен порт VNC, подключившись к которому мы увидим «экран» виртуальной машины. Узнать, какой порт назначен конкретной vm1, можно командой:
# virsh vncdisplay vm1
127.0.0.1:0
Это означает, что порт VNC 5900+0=5900. Если бы результат был «127.0.0.1:1», порт VNC был бы 5901. И т.д.
Подключаться к порту 5900 надо к хосту виртуальных машин. Это на нем открыт этот порт, а не на виртуальной машине vm1.
По умолчанию, хост виртуальных машин (у нас это CentOS 7 minimal) не должен позволять подключение к любому порту кроме ssh (22/tcp). Не советую вам открывать доступ к портам VNC из-вне. Это небезопасно. Для того, чтобы получить доступ к экрану виртуальной машины с рабочей станции Windows, с которой я все настраиваю, я сделал туннелирование порта в Putty: 5900 -> 127.0.0.1:5900.
После успешного логина по ssh, можно запустить TightVNC и указать порт 127.0.0.1::5900 (обратите внимание на двойное двоеточие).
Если после перезагрузки машины потребуется снова подключить к ней образ iso, это можно сделать командой:
# virsh attach-disk vm1 /vms-iso/CentOS-7-x86_64-Minimal-1503-01.iso hdb —type cdrom —mode readonly
где hdb — имя блочного устройства CDROM. Это имя можно узнать просмотрев конфиг вирт. машины ( virsh edit vm1 ).
Управлять виртуальными машинами с хоста можно консольным набором virsh. С некоторыми командами вы уже познакомились. Наберите в консоли:
и вы увидите, сколько всего можно сделать.
Включение/выключение виртуальных машин
Если вы создадите виртуальную машину и попытаетесь ее выключить, то несмотря на рапорт о выполнении, машина может не выключиться:
Здесь дело в поддержке acpi со стороны виртуальной машины. Не во всех случаях вирт. машина обработает сигнал о выключении или перегагрузки (virsh shutdown/restart vm1). В этой ситуации могут быть следующие варианты:
Выдергивание кабеля питания:
Вы прекрасно понимаете, к чему это может привести. Хотя на начальном этапе, пока ОС не установлена, появление ошибок
Приостановка работы вирт. машины:
virsh suspend vm1
Не всегда бывает необходимо выключать или перезагружать машину извне. Для обслуживания может быть достаточно приостановки. Не факт, но все же.
Включение поддержки acpi в виртуальной машине.
Тут могут быть разные рецепты, например так (выполнить в вирт. машине, а не на хосте):
yum install acpid
chkconfig acpid on
service acpid start
Автостарт виртуальных машин
Для того, чтобы при перезапуске хоста виртуальная машина vm1 запускалась автоматически:
# virsh autostart vm1
Domain vm1 marked as autostarted
Выключить автостарт для vm1:
# virsh autostart vm1 —disable Domain vm1 unmarked as autostarted
Контроль сетевой активности виртуальной машины KVM
Может быть полезным оценивать сетевую активность виртуальной машины — например, сколько трафика она потребила. Также это может помочь при отладке сети или поиске утечек трафика. Например:
Тут все понятно, кроме откуда взять название адаптера vnet0. Можно в дампе конфигурации вирт. машины (virsh dumpxml vm1) найти секцию network и в ней параметр dev:
Подключение и отключение привода cdrom
Подключить к vm3 iso-образ в качестве cdrom:
# virsh attach-disk vm3 /data/vms-iso/CentOS-7-x86_64-Minimal-1511.iso hda —type cdrom —mode readonly
Disk attached successfully
Здесь надо быть внимательным, т.к. после пути до iso-файла на хосте идет указание имени устройства cdrom у виртуальной машины vm3. Если вы не уверены, какое имя устройства надо указать (hda, hdb или др.), сверьтесь с конфигурацией виртуальной машины:
Отключить iso-образ (не удалить устройство из гостя, а просто «извлечь cd-диск из привода»):
# virsh attach-disk vm5 «» hda —type cdrom —mode readonly
А еще созданные виртуальные машины можно клонировать. Удачи!
Источник
Установка и настройка KVM на CentOS 7
Подготовка сервера
Проверяем наличие поддержки со стороны процессора:
cat /proc/cpuinfo | egrep «(vmx|svm)»
Если команда ничего не вернет, на сервере отсутствует поддержка виртуализации или она отключена в настройках БИОС. Сам KVM поставить на такой сервер можно, но при попытке ввести команду управления гипервизором мы получим ошибку «WARNING KVM acceleration not available, using ‘qemu’». В таком случае необходимо перезагрузить сервер, войти в БИОС, найти поддержку технологии виртуализации (Intel VT или AMD-V) и включить ее.
Создадим каталоги, в которых будем хранить все, что касается виртуализации (предлагаемые по умолчанию не удобные):
* каталог /kvm/images для виртуальных дисков; /kvm/iso — для iso-образов.
Установка и запуск
Установка выполняется из репозитория следующей командой:
yum install qemu-kvm libvirt virt-install
* где qemu-kvm — сам гипервизор; libvirt — библиотека управления виртуализацией; virt-install — утилита для управления виртуальными машинами.
systemctl enable libvirtd
systemctl start libvirtd
Настройка сети
В данной инструкции рассмотрим использование сетевого моста.
Настраивая сетевой мост через удаленное подключение, внимательно проверяйте вводимые данные. В случае ошибки соединение будет прервано.
Устанавливаем пакет для работы с bridge:
yum install bridge-utils
Смотрим список сетевых интерфейсов и их настроек:
В моем примере были следующие данные:
1: lo: 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 forever
2: enp4s0f0:
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 forever
3: enp5s5: mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 00:16:76:04:26:c7 brd ff:ff:ff:ff:ff:ff
4: virbr0: 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 forever
5: virbr0-nic:
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 — виртуальный сетевой адаптер.
Редактируем настройки реального адаптера:
Приводим его к виду:
ONBOOT=yes
BRIDGE=br0
TYPE=Ethernet
DEVICE=enp4s0f0
BOOTPROTO=none
Создаем интерфейс для сетевого моста:
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.24
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=77.88.8.8
Перезапускаем сетевую службу:
systemctl restart network
Сетевые настройки должны измениться — в моем случае:
2: enp4s0f0:
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:ff
3: enp5s5: mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 00:16:76:04:26:c7 brd ff:ff:ff:ff:ff:ff
4: virbr0: 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 forever
5: virbr0-nic:
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
6: br0:
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
Настаиваем перенаправления сетевого трафика:
sysctl -p /etc/sysctl.d/99-sysctl.conf
systemctl restart libvirtd
Создание виртуальной машины
Смотрим доступные варианты гостевых операционных систем:
Для создания первой виртуальной машины вводим следующую команду:
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
- FirstTest — имя создаваемой машины;
- autostart — виртуальная машина будет автоматически запускаться вместе с сервером KVM;
- noautoconsole — после создания не подключается автоматически к консоли виртуальной машины;
- network — тип сети (в нашем примере сетевой мост);
- ram — объем оперативной памяти, который будет выделен;
- vcpus — количество виртуальных процессоров;
- disk — виртуальный диск: path — путь до диска; size — его объем;
- cdrom — виртуальный привод с образом системы;
- graphics — параметры подключения к виртуальной машины с помощью графической консоли (в данном примере используем vnc); listen — на какой адресе принимает запросы vnc (в нашем примере на всех); password — пароль для подключения при помощи vnc;
- os-variant — гостевая операционная система (весь список мы получали командой osinfo-query os, в данном примере устанавливаем Reв Hat 7 / CentOS 7).
Дожидаемся создание виртуальной машины. И переходим к подключению по VNC.
Подключение к виртуальной машине
Для установки операционной системы скачиваем VNC-клиент на компьютер администратора, например, TightVNC и устанавливаем его.
На сервере смотрим, на каком порту слушает VNC созданной машины:
virsh vncdisplay FirstTest
в моем случае было:
Это значит, что нужно к 5900 прибавить 0. Если результат команды будет :1 — 5900 + 1 = 5901 и так далее.
Открываем порт на брандмауэре:
firewall-cmd —permanent —add-port=5900-5905/tcp
* в данном примере добавлено сразу 6 tcp-портов от 5900 до 5905.
Запускаем установленный TightVNC Viewer, в открывшемся окне вводим IP-адрес сервера KVM и порт, на котором слушает наша ВМ (в данном примере, 5900):
Нажимаем Connect. Программа запросит пароль — вводим тот, что указали при создании ВМ, (в данном примере, my_password). Мы подключимся к виртуальной машине, как будто, к ней подключен монитор или удаленная консоль KVM.
Устанавливаем операционную систему. Если это будет Windows, то проверяем корректность определения драйверов и, при наличии неустановленных устройств, выполняем установку драйверов KVM для гостевой Windows.
Базовые команды управления ВМ
1. Получить список созданных машин:
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
Удаляем виртуальный жесткий диск:
* где /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
Останавливаем виртуальную машину:
virsh shutdown FirstTest
Увеличиваем размер диска:
qemu-img resize /kvm/images/FirstTest-disk1.img +100G
* данной командой мы расширим дисковое пространство виртуального диска /kvm/images/FirstTest-disk1.img на 100 Гигабайт.
Запускаем виртуальную машину:
virsh start FirstTest
Меняем размер блочного устройства:
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 shutdown 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.
Для начала, мы должны остановить виртуалку:
virsh suspend FirstTest
После можно клонировать:
virt-clone —original FirstTest —name SecondTest —file /kvm/images/SecondTest-disk1.img
* итого, мы склонируем виртуальную машину FirstTest. Новая машина будет иметь название SecondTest, а путь до диска будет /kvm/images/SecondTest-disk1.img.
Восстанавливаем работу FirstTest:
virsh resume FirstTest
Управление дисками
Отдельно рассмотрим процесс работы с виртуальными дисками.
Добавление диска
Создаем файл для нового диска:
qemu-img create -f raw /kvm/images/FirstTest-disk2.img 4G
* в данном примере мы создадим файл формата raw по полному пути /kvm/images/FirstTest-disk2.img размером 4 Гб.
Теперь подключим данный диск к виртуальной машине:
virsh attach-disk VMname /kvm/images/FirstTest-disk2.img vdb —cache none
* в данном примере мы подключили его к машине VMname в качестве диска vdb.
Готово. Подключаемся к виртуальной машине и проверяем, что у нас появился новый диск. Например, в Linux можно посмотреть командой:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 252:0 0 24G 0 disk
— vda1 252:1 0 24G 0 part
— ubuntu—vg-root 253:0 0 23G 0 lvm /
— ubuntu—vg-swap_1 253:1 0 980M 0 lvm [SWAP]
vdb 252:16 0 4G 0 disk
Управление через веб-интерфейс
Существуют различные веб-интерфейсы для управления гипервизором KVM. В данной инструкции мы рассмотрим oVirt.
Для его установки вводим команды:
yum install http://resources.ovirt.org/pub/yum-repo/ovirt-release41.rpm
yum install ovirt-engine
После разворачиваем и настраиваем портал:
* после запуска команды система задаст ряд вопросов, на все, кроме ввода пароля, можно ответить по умолчанию (просто нажать Enter).
После окончания установки в браузере вводим https://kvm/ovirt-engine/sso/, где kvm — имя сервера. В открывшемся окне вводим логин admin и пароль, который создали при выполнении команды engine-setup. После успешного входа можно управлять виртуальными машинами через веб-интерфейс.
Обновление базы операционный систем
Ранее мы использовали команду:
. для получения вариантов возможных операционных систем. Со временем данные список устаревает и его необходимо обновлять. Для этого переходим на страницу releases.pagure.org/libosinfo и копируем ссылку на самую последнюю базу:
Используя скопированную ссылку, загружаем базу на сервер:
* в моем примере это версия 20210621.
Источник