Создание виртуальных машин
Обратите внимание, что веб интерфейс Proxmox VE позволяет создавать виртуальные машины двух типов:
- VM это полностью виртуализированная машина, созданная из ISO образа, который необходимо загрузить в хранилище Proxmox VE;
- CT – паравиртуализированная машина на ядре Linux, шаблоны которой необходимо сначала загрузить и установить в хранилище Proxmox VE.
Параллельно можно поставить загрузку дистрибутива debian10 netinstall ISO со своего рабочего компьютера в хранилище home. Для этого выберите в WEB-интерфейсе хранилище home, тип хранения выберите ISO Images и нажмите кнопку Загрузить, в появившемся окне выберите файл образа ISO со своего компьютера и нажмите ОК.
Так же информацию можно загрузить с usb-хранилища, с CD-Диска (на тестовой машине он подключён), передать по сети с помощью FTP, Samba, http. Для этого можно использовать из консоли соответствующие утилиты wget, curl, ftp или файловый менеджер Midnight Commander:
Шаблоны и загрузки расположены по путям хранилищ local: /var/lib/vz или home: /home/pmx. Вы можете напрямую копировать в соответствующий раздел файлы. Логическая структура размещения информации на скриншоте:
Для создания виртуальных машин необходимо создать Пул ресурсов. Для этого кликните в дереве на вкладку Датацентр, справа выберите пункт Пулы, нажмите Создать, на тестовой машине задано имя пула home, по окончании нажмите ОК:
Создание виртуального контейнера CT
Сначала создайте CT виртуальную машину из скачанного шаблона CentOS 7. Для этого нажмите кнопку Создать CT, заполните поля и нажмите ОК.
На следующей вкладке выберите хранилище home и ранее закачанный шаблон CentOS 7.
Настройки корневого диска, процессора и памяти на тестовой машине оставим как предложено гипервизором
Обратите внимание на раздел сеть:
Итак, созданный нами ранее сетевой мост vmbr0 используется в виртуальных машинах Proxmox VE для создания виртуальных сетевых интерфейсов для них. Через vmbr0 интерфейс будет подключён к роутеру сети, к которому подключена сетевая карта, на которой работает vmbr0.
В результате наших действий начинает разворачиваться контейнер, содержащий CentOS 7 и настраиваться виртуальная машина.
Вернитесь в pve-test, найдите вновь созданный контейнер c ID 100 и названием centos7 и нажмите Запуск, а затем Консоль. Откроется окно браузера, в котором видно запущенный CentOS:
Укажите имя пользователя root и пароль, который ввели при создании контейнера CT и, если все сделано верно, можно управлять виртуальной машиной. Узнайте её IP-адрес, так как роутер, подключённый к тестовому хосту, должен был его выдать:
В результате получилось запустить полноценную виртуальную машину с Linux.
Создание виртуального контейнера VM
Для создания виртуальной машины VM с любой ОС нажмите кнопку Создать VM, укажите имя создаваемой VM, выберите пул ресурсов, нажмите Далее:
На втором окне предлагается выбрать загрузочный образ виртуального CD-диска, указать тип гостевой ОС:
Если все сделано правильно, то загруженный ISO образ должен быть доступен по клику по обведённому красным полю. Этот параметр может быть настроен позже из интерфейса управления виртуальной машиной VM.
Во вкладках Система, Жёсткий диск, Процессор, Память, Сеть оставлены все значения так, как предложил гипервизор. В последней вкладке Подтверждение кликем Готово и перейдите в настройки виртуальной машины ID 101 с именем litedeb, во вкладку Оборудование:
Если все нас устраивает и ничего менять не надо, нажмите кнопку Запуск и откройте Консоль. На тестовом хосте выяснилось, что лучше эксперимент проводить на дистрибутиве Debian 10 netinstall, и поменять тип жёсткого диска со SCSI на SATA, а также увеличить размер оперативной памяти виртуальной машины. И результат работы после нажатия кнопки Запуск и подключению к Консоли:
KVM: добавление сетевой карты для виртуальной машины
Попрьуем добавить дополнительный сетевой интерфейс для ВМ. Сначала проверим, какие сетевые интерфейсы созданы на хосте:
У меня на KVM сервере создана одна виртуальная машина, с одним сетевым интерфейсом. К br0 нам нужно прикрепить еще один виртуальный сетевой интерфейс. Выполните команды:
Проверьте, что у ВМ появился дополнительный сетевой интерфейс:
<interface type='bridge'> <mac address='52:54:00:7e:c1:9f'/> <source bridge='br0'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <interface type='bridge'> <mac address='52:54:00:2f:23:79'/> <source bridge='br0'/> <model type='rtl8139'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/> </interface>
Также вы можете изменить сетевые настройки виртуальной машины напрямую через XML файл: # virsh edit test-centos
После первого сетевого интерфейса добавьте следующие строки:
<interface type='bridge'> <source bridge='br0'/> </interface>
Сохраните файл и запустите ВМ. Остальную конфигурацию, KVM добавит сам (mac address и тд).
В данной статье мы затронули основные моменты, которые могут вам понадобиться при управлении виртуальными машинами KVM из консоли Linux сервера. В следующей статье мы рассмотрим управление виртуальными машинами через графический менеджер virt-manager
Загрузочная флешка для CentOS 8
Лично я давно не пользовался загрузочными флешками для чего-то кроме установки гипервизора. Стараюсь все сервера держать в виртуальных машинах для удобного бэкапа и миграции. Тем не менее, если вам понадобится загрузочная флешка с CentOS 8, вы без проблем ее сделаете. Думаю, это актуально для тех, кто ставит систему на рабочие компьютеры или ноутбуки. Правда в таком случае вам моя статья не подходит, так как она описывает в первую очередь нюансы установки и подготовки системы для работы на сервере. На рабочем ноутбуке я предпочитаю использовать не linux.
Сделать загрузочную флешку с CentOS 8 можно разными способами. Если у вас операционная система Windows, то рекомендую воспользоваться бесплатной программой Win32DiskImager. В случае с linux можно использовать Etcher. Хотя он и для windows есть, но мне показался тяжеловат. disk imager в этом плане удобнее, что не удивительно. Ведь Etcher написан на мерзком Electron, поэтому он тормозит и весит 80 Мб.
Тру админы для создания загрузочных флешек могут использовать DD примерно так:
# dd if=CentOS-8-x86_64-1905-dvd1.iso of=/dev/sdz
Предложенный способ лично не проверял, но не вижу причин, почему это может не работать.
Create Virtual Machine via GUI
If the Linux terminal seems too intimidating, use the virt-manager GUI to create a VM with KVM.
1. First, install virt-manager:
2. Start virt-manager from the console:
3. Open the File menu and select New Virtual Machine. Choose your installation media and proceed to the next step.
4. Specify the path to the ISO or CDROM with the OS you wish to install. The system recognizes the OS you selected.
5. Click Forward to proceed to the next step.
6. In the next step, allocate RAM and CPU resources. When you finish, proceed further.
7. Specify the size of the virtual hard disk and proceed to the next step.
8. In the last step, confirm your choices and press Finish to set up the virtual machine.
Conclusion
This article explained the process of setting up KVM on CentOS 8. It provided instructions for installing KVM, configuring a bridge interface, and setting up virtual machines using the GUI or Linux terminal.
Использование NUMA.
По умолчанию libvirt использует дефолтную политику гипервизора, которая в свою очередь подразумевает запуск виртуальной машины на любых свободных вычислительных ресурсах (процессорах и ядрах). Но бывают случаи, когда явное задание ресурсов процессора бывает рациональней, особенно для систем с архитектурой NUMA (Non-Uniform Memory Access). Рассмотрим пример конфига, когда нужно назначить виртуальной машины определенные ядра процессора. Но для начала просмотрим информацию о процессорных ресурсах:
# virsh nodeinfoCPU model: x86_64CPU(s): 16CPU frequency: 1600 MHzCPU socket(s): 2Core(s) per socket: 4Thread(s) per core: 2NUMA cell(s): 2Memory size: 16768108 KiB
Таким образом видим, что установлен два процессора с 4 ядрами и двумя потоками на каждом ядре. Из вывода так же видим, что имеется две NUMA-ноды. Дополнительные параметры CPU можно получить командой:
# virsh capabilities
Но назначение ресурсов CPU конкретной ноде не даст никакой пользы, если у этой NUMA-ноды недостаточно памяти. libvrit хранит информацию о доступной памяти на каждой NUMA-ноде. Получить информацию можно:
# virsh freecell --all0: 2203620 kB1: 3354784 kB
Таким образом видим, что для запуска ВМ с 3Гб оперативной памяти лучше использовать первую NUMA-ноду (cell 1). Просмотреть информацию можно так же через numactl. Устанавливаем:
# apt install numactl
или:
# yum install numactl
Смотрим:
# numactl --hardwareavailable: 2 nodes (0-1)node 0 cpus: 0 1 2 3 8 9 10 11node 0 size: 8183 MBnode 0 free: 7486 MBnode 1 cpus: 4 5 6 7 12 13 14 15node 1 size: 8192 MBnode 1 free: 7786 MBnode distances:node 0 1 0: 10 21 1: 21 10
Для примера создадим виртуальную машину, которой назначено по 2 ядра от каждого процессора:
# virt-install \--connect qemu:///system \--virt-type kvm \--name vm-1 \--ram=6144 \--disk path=vm-1.qcow2,size=15 \--os-variant ubuntuprecise \--vcpus=8,cpuset=0,1,12,13 \--cpu host-passthrough \--noautoconsole \-w bridge=br0,mac=52:54:01:b1:d3:2b \--cdrom $kvm_images_path/$isoname# virsh vcpupin vm-1 0 0# virsh vcpupin vm-1 1 1# virsh vcpupin vm-1 2 12# virsh vcpupin vm-1 3 13
Просмотреть результат CPU affintiy можно командой:
# virsh vcpuinfo vm-1
Подробней об использовании NUMA можно узнать на сайте Fedora и RedHat.
Расширение ресурсов виртуальной машины
С виртуальными машинами все примерно так же, как с гипервизором. При расширении ресурсов CPU и RAM необходима перезагрузка ВМ (то есть даунтайм). А с дисками все намного проще: LVM позволяет расширить объем диска на лету, без перезагрузки ВМ.
Расширить ресурсы ВМ можно командой . Перед изменением конфигурации делаем резервную копию ее конфигурационного файла.
1 | $virsh dumpxml<имяВМ>>>/var/lib/libvirt/images/<имяВМ>-20181126.xml |
Теперь можно производить расширение ресурсов.
1 | $virsh edit<имяВМ> |
Редактируем следующие параметры:
- — общий (максимальный) объем памяти ВМ (в килобайтах);
- — объем используемой памяти ВМ (в килобайтах);
- — количество ядер процессора.
После редактирования сохраняем файл конфигурации ВМ. И в самой ВМ завершаем работу:
1 | $sudo shutdown-hnow |
После выключения ВМ на гипервизоре включаем ВМ с помощью такой команды:
1 | $sudo virsh start<имяВМ> |
Все, ресурсы ЦП и память расширены, можно проверять.
Расширяем диски
Расширение объемов дисков на ВМ достаточно простая операция. Надо просто соблюдать определенную последовательность действий.
Сначала на гипервизоре проверяем, какой раздел будем расширять.
1 | $sudo lvs—unitsg/dev/mapper/vg_sata-vg_sata_pxe_opt |
Теперь расширяем том на нужное количество гигабайтов (это число строго ограничено объемом группы, но его тоже можно расширить).
1 | $sudo lvextend-L+5G/dev/vg_sata/vg_sata_pxe_opt |
Убеждаемся, что логический том расширен. Запоминаем значение .
1 | $sudo lvs—unitsk/dev/mapper/vg_sata-vg_sata_pxe_opt |
Увеличить размер блочного устройства можно из консоли virsh.
1 | $sudo virsh |
Смотрим список виртуальных машин.
1 | virsh# list |
Проверяем имеющиеся логические тома на виртуальной машине.
1 | virsh# domblklist pxe |
Расширяем выбранный том на нужный размер (вспоминаем значение ).
1 | virsh# blockresize pxe —path /dev/vg_sata/vg_sata_pxe_opt —size 26214400 |
Выходим из консоли:
1 | virsh# quit |
Переходим к настройкам на гостевой ОС. Запрашиваем информацию о состоянии расширяемого раздела:
1 | $sudo df-h/opt/ |
Запускаем утилиту parted, вводим информацию о разделе и указываем, какой раздел и насколько увеличить.
1 | $sudo parted/dev/vdb |
Чтобы расширить файловую систему на нужном разделе, пишем
1 | $sudo resize2fs/dev/vdb1 |
Проверяем состояние раздела, его объем должен стать больше.
1 | $sudo df-h/opt/ |
Мультикаст на MACVTAP-интерфейсах по-умолчанию выключен и его необходимо на них включить.
Здесь необходимо учесть, что KVM создает macvtap-интерфейсы только после старта машины! Поэтому нельзя просто так взять и сказать, например, crontab -e и положить туда что-то вроде
Решением будет создать скрипт с именем «qemu», включающий мультикаст на создающихся при старте машины macvtap-интерфейсах, и положить его в папку /etc/libvirt/hooks
Cначала выключим машину — из самого VRR
Или из Линупса:
Создаём скрипт:
Добавляем следующий текст:
Сохраняем и выходим:
Делаем скрипт исполняемым:
KVM при старте машины автоматически проверяет существование файла в директории и запускает его при старте виртуальных машин.
Включаем машину:
Смотрим, активировался ли мультикаст на macvtap-интерфейсах:
Здесь видно, что появились два macvtap-интерфейса:
macvtap0=ens33=em0 в VRR,
macvtap1 = ens34 = em1 в VRR
Проверяем show ospf neighbor:
Ура!
Установка Linux на VirtualBox
Для того чтобы установить Linux на VirtualBox нам понадобиться несколько вещей:
Образ диска с Linux — определитесь какой дистрибутив вы собираетесь устанавливать и загрузите его образ на официальном сайте, например, Ubuntu или Fedora
Также обратите внимание на архитектуру образа, если у вас 32 битная основная система, то вряд ли у вас получиться запустить 64 бит гостевую;
Установленная виртуальная машина — VirtualBox, это кроссплатформенная программа, которая может работать не только в Linux, но и в Windows и MacOS. Поэтому вы можете запускать Linux в любой операционной системе
Для большинства из них можно скачать установщик VirtualBox на официальном сайте программы;
Компьютер с поддержкой аппаратной виртуализации — конечно, вы можете запускать виртуальные машины и без поддержки аппаратной виртуализации, но они будут работать в разы медленнее. Большинство современных процессоров поддерживают AMD-V или Intel-VT-X. Посмотрите нельзя ли включить такую возможность в вашем BIOS.
Если у вас все это поддерживается мы можем перейти к созданию виртуальной машины. Запустите VirtualBox и нажмите кнопку создать:
В первом окне мастера введите название вашей новой виртуальной машины, выберите тип (Linux) и дистрибутив, например, Ubuntu:
Следующий шаг — нужно выбрать количество оперативной памяти для вашей машины, но умолчанию VirtualBox предлагает количество памяти в зависимости от используемой машины, но для современных дистрибутивов будет достаточно 2 Гб, это нужно для более плавной и удобной работы, хотя система будет работать и при 1024 Мб и даже меньшем объеме.
Дальше нам необходимо создать жесткий диск для установки системы, объем диска зависит от операционной системы, но поскольку вы можете создавать динамический диск, который будет изменять размер реального файла в файловой системе по мере наполнения, то можно указать 30 или даже 50 Гб чтобы было точно достаточно.
Сначала выберите «Создать новый виртуальный жесткий диск», затем выберите тип диска:
Наиболее часто для виртуальных машин используется диск типа VDI. Затем выберите размер диска и имя для его файла. Хотя и есть возможность использовать место по мере необходимости, лучше так не делать на HDD, лучше выделяйте все место сразу, это увеличит производительность до 10%:
Виртуальная машина почти готова, но нужно еще кое-что настроить. По умолчанию VirtualBox выделяет 16 мегабайт оперативной памяти для машин, но современным дистрибутивам этого мало, поэтому нажмите «Настройки», а затем на вкладке «Дисплей» установите значение видеопамяти в 128 мегабайт. Этого уже должно хватить. Кроме того, отметьте галочку 3D ускорения:
Еще нас будет интересовать раздел «Система», вкладка «Материнская плата», здесь нужно выбрать чипсет » ICH9″, Linux работает с ним лучше, также отметьте галочки часов в UTC.
На вкладке «Процессор» нужно отметить использовать «PAE/NX», и не выбирайте много процессоров, одного ядра будет достаточно. В разделе «Ускорение» отметить все галочки и выбрать ваш гипервизор, в Linux лучше всего использовать KVM:
Дальше запускайте виртуальную машину:
При первом запуске вам будет предложено выбрать установочный носитель, с которого будет проводиться установка, это может быть реальный CD привод или же просто образ в файловой системе:
Дальше будет запущена виртуальная машина и операционная система, которую вы выбрали и вам необходимо выполнить все действия для установки:
Мы не будем рассматривать установку Ubuntu, поскольку это уже подробно описано в одной из предыдущих статей.
Но после завершения установки есть еще несколько настроек. Во-первых — вам нужно установить дополнения гостевой ОС Ubuntu или для другого выбранного вами дистрибутива. Процесс везде одинаковый. Также, если вы используете Ubuntu, нужно включить облегченный режим Unity, чтобы все работало быстрее. Для этого выполните:
На всякий случай, команда для отключения этого режима:
Эти команды работают в Ubuntu 17.04, в более ранних версиях такой режим можно включить только через CompizConfig. Теперь установка Linux на VirtualBox полностью завешена и система готова к использованию.
Клонирование виртуальных машин и создание снапшотов.
Клонирование виртуальных машин
Для клонирования виртуальной машины в окне Virtual Machine Manager кликните правой кнопкой мыши на нужной машине и нажмите Клонировать.
Впишите название новой виртуальной машины и выберите клонируемое пространство данных. Нажмите клонировать
Создание снапшотов
Для создания снапшотов в главном окне Virtual Machine Manager выберите виртуальную машину и нажмите кнопку Открыть.
В открывшемся окне нажмите на значек с двумя мониторами. Откроется окно управления снимками. Нажмите + для создания снапшота.
Снапшоты можно создавать как при включенной, так и при выключенной виртуальной машине.
Шаг 3: Настройка виртуальной машины
Этот этап необязателен, но будет полезен для некоторых базовых настроек и общего ознакомления с тем, что можно изменить в VM. Для входа в настройки нужно нажать правой кнопкой мыши по виртуальной машине и выбрать пункт «Настроить».
Во вкладке «Система» — «Процессор» можно увеличить количество процессоров до 2. Это даст некоторый прирост к производительности CentOS.
Перейдя в «Дисплей», можете добавить некоторое количество МБ к видеопамяти и включить 3D-ускорение.
Остальные настройки можно выставить по своему усмотрению и возвращаться к ним в любой момент, когда машина не запущена.
Steps to Install KVM on CentOS
The steps listed in this tutorial work with CentOS 8 and CentOS 7.
Step 1: Check if Your System Supports Hardware Virtualization
To see if your system is capable of hardware virtualization (HV), run the following:
The output will look similar to this:
In the output, review the list of flags. If you find either (for Intel processors) or (for AMD), the system supports hardware virtualization.
Note: If you encounter issues with installing KVM on a system which supports HV, check your BIOS to see if HV is enabled. To enable HV, refer to the documentation for your host’s BIOS.
Step 2: Install KVM
Use the following commands to install KVM on CentOS:
Next, start and enable the libvirtd service:
Install tools required for KVM management:
To confirm that the KVM module is loaded, run:
The output will contain a list of loaded KVM modules:
Step 4: Configure Bridge Interface
A bridge interface is necessary for accessing VMs from outside of the hypervisor network. To create a bridge interface, first identify the network interfaces attached to your machine:
The output shows all available network interfaces:
Make note of the name of the ethernet interface (in this case, it is enp0s3). Delete the connection by typing the following command (replacing the UUID with your value):
The system will confirm the deletion of the connection:
Next, make sure you have the necessary info at hand:
- BRIDGE NAME – Name for your new bridge (e.g. “br1”)
- DEVICE NAME – Name of the network device which will serve as the bridge slave (e.g. “enp0s3”)
- IP ADDRESS/SUBNET – IP address and subnet for the connection (e.g. “192.168.122.1/24”)
- GATEWAY – Default gateway address (e.g. “192.168.122.1”)
- DNS1 and DNS2 – DNS addresses (e.g. “8.8.8.8” and “8.8.4.4”)
Now, using your own values, create a new bridge interface:
The output confirms the successful addition of the bridge connection:
Make the necessary modifications to the IP address, Gateway and DNS:
The commands with values filled in look like this:
Add a bridge slave:
Output of should now look like this:
Activate the bridge with the following command:
Настройка доступа к виртуальной машине из интернет
#!/bin/bash IFACE=eth0 LOCAL_IP1="192.168.123.176" NEW_IP="yyy.yyy.yyy.yyy" case "$1" in 'stop') iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE iptables -D FORWARD -d $LOCAL_IP1 -p tcp -j ACCEPT iptables -t nat -D PREROUTING -p tcp -d $NEW_IP -j DNAT --to-destination $LOCAL_IP1 ;; 'start') echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -t nat -A PREROUTING -p tcp -d $NEW_IP -j DNAT --to-destination $LOCAL_IP1 iptables -A FORWARD -d $LOCAL_IP1 -p tcp -j ACCEPT ;; 'restart') $0 stop && $0 start ;; *) echo "usage $0 start|stop|restart" ;; esac
root@ourserver# ./web.sh start
- Пишем небольшой скрипт web.sh, позволяющий открыть доступ к виртуальной машине из интернет
- Запускаем скрипт
- Для остановки используем
root@ourserver# ./web.sh stop
После проведенных действий мы предоставили доступ к виртуальной машине с установленным веб-сервером по публичному ip адресу yyy.yyy.yyy.yyy.
KVM: добавление диска в виртуальную машину
Сначала нужно создать дополнительный файл диска для виртуальной машины:
Вместо qcow2 вы можете указать нужный формат диска, так же нужно указать путь до файла. У меня хранилище для дисков /vz/disk/.
После этого, можно добавить устройство виртуального диска к самой ВМ:
Остановите и запустите ВМ, проверьте что получилось:
Domain test-centos is being shutdown
Domain test-centos started
<domain type=’kvm’ id=’14’><name>test-centos</name><uuid>5c7eabea-a180-4f74-af9f-c4c2d3b7f70f</uuid><memory unit=’KiB’>2097152</memory><currentMemory unit=’KiB’>2097152</currentMemory><vcpu placement=’static’>6</vcpu><resource><partition>/machine</partition></resource><os><type arch=’x86_64′ machine=’pc-i440fx-rhel7.0.0′>hvm</type><boot dev=’cdrom’/><boot dev=’hd’/><bootmenu enable=’yes’/></os>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<disk type=’file’ device=’disk’><driver name=’qemu’ type=’qcow2’/><source file=’/vz/disk/test.img’/><backingStore/><target dev=’vdb’ bus=’virtio’/><alias name=’virtio-disk1’/><address type=’pci’ domain=’0x0000′ bus=’0x00′ slot=’0x09′ function=’0x0’/></disk>
Как видим, диск добавлен. После данных манипуляций, на виртуальной машине нужно разметить этот диск под ваши нужды.
Налаштування мережі в KVM
Тепер створимо каталоги, в яких будуть зберігатися диски віртуальних машин і iso образи:
Щоб створені віртуальні машини мали доступ в інтернет, нам потрібно налаштувати мережу через bridge. Для цього буде потрібно пакет bridge-utils, перевірте чи встановлений він в Linux командою:
Якщо потрібно, встановіть його:
Після установки пакетів для KVM, в системі з’явився мережевий інтерфейс virbr0:
Щоб створити мережевий міст (bridge), Потрібно налаштувати файл конфігурації для мережевого інтерфейсу сервера:
— робимо бекап файлу
— відкриваємо для редагування
Видаліть всі вміст і замініть на наступне:
DEVICE = "enp1s0f0" ONBOOT = "yes" BRIDGE = br0
У вашому випадку, ім’я інтерфейсу може відрізнятися (дивіться через команду ip a).
Після чого створіть файл:
з вмістом:
DEVICE = "br0" TYPE = BRIDGE ONBOOT = yes BOOTPROTO = static IPADDR = "IP_адрес_сервера" NETMASK = "255.255.255.0" GATEWAY = "Основной_шлюз" DNS1 = "77.88.8.8" DNS2 = "8.8.4.4"
Де вкажіть свої дані: IP-адреса сервера і основний шлюз. Після редагування конфігураційних файлів мережевих інтерфейсів потрібно перезапустити есервіс:
Щоб перевірити стан bridge, використовуйте команду:
bridge name bridge id STP enabled interfaces br0 8000.ac1f6b945206 no enp1s0f0 virbr0 8000.5254003f23cf yes virbr0-nic
Останнім кроком потрібно налаштувати перенаправлення мережевого трафіку:
Тепер запустіть сервіс libvirtd:
На цьому базова настройка KVM закінчена, можна створити віртуальну машину.
KVM: добавление диска в виртуальную машину
В одной из наших статей, мы описывали процесс расширения и уменьшения дисков виртуальных машин в KVM. Но мы не описывали вариант по добавлению дополнительного диска.
Сначала нужно создать дополнительный файл диска для виртуальной машины:
Вместо qcow2 вы можете указать нужный формат диска, так же нужно указать путь до файла. У меня хранилище для дисков /vz/disk/.
После этого, можно добавить устройство виртуального диска к самой ВМ:
Остановите и запустите ВМ, проверьте что получилось:
Domain test-centos is being shutdown
Domain test-centos started
<domain type='kvm' id='14'> <name>test-centos</name> <uuid>5c7eabea-a180-4f74-af9f-c4c2d3b7f70f</uuid> <memory unit='KiB'>2097152</memory> <currentMemory unit='KiB'>2097152</currentMemory> <vcpu placement='static'>6</vcpu> <resource> <partition>/machine</partition> </resource> <os> <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type> <boot dev='cdrom'/> <boot dev='hd'/> <bootmenu enable='yes'/> </os> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/vz/disk/test.img'/> <backingStore/> <target dev='vdb' bus='virtio'/> <alias name='virtio-disk1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/> </disk>
Как видим, диск добавлен. После данных манипуляций, на виртуальной машине нужно разметить этот диск под ваши нужды.
Тюнинг сервера PVE
Внесем несколько изменений, которые сделают работу с Proxmox VE удобнее.
Отключение предупреждения об отсутствии подписки
Каждый раз при заходе в панель управления мы будем видеть такое предупреждение:
Оно говорит нам о том, что мы используем бесплатную версию программного продукта. Чтобы сообщение нас не беспокоило, выполним 2 действия:
- Отключим платный репозиторий для получения пакетов proxmox.
- Отредактируем файл js для отключения данного сообщения.
И так, в SSH открываем на редактирование репозиторий proxmox:
nano /etc/apt/sources.list.d/pve-enterprise.list
Приводим его к виду:
#deb https://enterprise.proxmox.com/debian/pve buster pve-enterprise
deb http://download.proxmox.com/debian/pve stretch pve-no-subscription
* мы закомментировали репозиторий pve-enterprise и добавили pve-no-subscription.
* при большом желании, можно удалить файл репозитория с именем pve-enterprise.list и создать новый — кому как будет удобнее.
После обновим список пакетов:
apt-get update
Последнее — редактируем файл /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js:
sed -i «s/getNoSubKeyHtml:/getNoSubKeyHtml_:/» /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
* данной командой мы находим getNoSubKeyHtml в файле /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js и меняем на getNoSubKeyHtml_.
Закрываем окно браузера с Proxmox, если оно было открыто и запускаем его снова. Входим в систему — сообщение не должно появиться.
Сертификаты
Сервер PVE устанавливается с самоподписанным сертификатом. Это означает, что при подключении к панели управления мы будем видеть предупреждение от системы безопасности. Чтобы браузер принимал сертификат, он должен соответствовать следующим требованиям:
- Быть выдан доверенным центром сертификации или зарегистрированным в вашей локальной сети, например, локальный AD CS.
- Быть для доменного имени, по которому мы заходим в панель управления.
- Иметь актуальные даты начала действия и окончания.
При этом, мы не должны заходить в панель управления по IP-адресу — в противном случае, независимо от сертификата, мы все-равно, получим предупреждение.
И так, сам сертификат можно купить, запросить бесплатно у Let’s Encrypt или создать с использованием локального центра сертификации, например, по данной инструкции. Получив сертификат, открываем панель управления PVE и переходим к серверу — Система — Сертификаты — кликаем по Загрузить пользовательский сертификат:
В открывшемся окне заполняем поля для закрытого и открытого ключей:
… и нажимаем Загрузить. Система предупредит, что загрузится с новым сертификатом — необходимо закрыть вкладку в браузере и открыть консоль управления снова. Если сертификат загружен правильный, мы не увидим предупреждения.
Web интерфейс (gui) для KVM
Выше я показал, как управлять виртуальными машинами через консоль. В целом, весь необходимый функционал доступен. Но если вам хочется управлять виртуальными машинами kvm через браузер, то можно поставить простую панель управления для этого. В качестве KVM Web Interface я предлагаю использовать VMDashboard. Это обычное веб приложение, написанное на php. В работе использует базу данных MySQL.
Устанавливаем необходимые компоненты сервера для работы Web Interface.
sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql php-xml php-libvirt-php python
Для того, чтобы работало подключение к консолям виртуальных машин через web интерфейс, необходимо раскомментировать один параметр в /etc/libvirt/qemu.conf.
sudo nano /etc/libvirt/qemu.conf
vnc_listen = "0.0.0.0"
Продолжаем настройку web панели для kvm. Добавляем пользователя www-data в группу libvirt:
sudo adduser www-data libvirt
Переходим в директорию www и загружаем исходники панели:
cd /var/www/html sudo wget https://github.com/VMDashboard/vmdashboard/archive/v19.01.03.tar.gz
Распаковываем их и готовим к запуску:
sudo tar -xzf v19.01.03.tar.gz sudo mv vmdashboard-19.01.03 vmdashboard sudo chown -R www-data:www-data /var/www/html/vmdashboard
Теперь нам нужно создать mysql базу для веб панели.
sudo mysql -u root
CREATE DATABASE vmdashboard; CREATE USER 'vmdashboard'@'localhost' IDENTIFIED BY 'parol'; GRANT ALL PRIVILEGES ON vmdashboard.* to 'vmdashboard'@'localhost'; FLUSH PRIVILEGES; EXIT;
Далее нужно перезагрузить kvm сервер:
sudo reboot
После перезагрузки идем в web интерфейс по адресу http://10.20.1.40/vmdashboard/ и настраиваем подключение к панели управления виртуальными машинами. Используем данные о созданной ранее базе данных и пользователе.
На этом установка и настройка веб панели управления для kvm закончена. Можно переходить в интерфейс и управлять виртуалками.
Заключение
В начале статьи я сказал, что не встретил готового решения по живому бэкапу kvm. (upd. Уже после публикации статьи мне подсказали готовое решение kvmBackup.) На самом деле это не совсем верно. Есть хорошая готовая сборка на основе kvm — proxmox. Я подробно рассматривал ее в отдельном материале — Установка и настройка proxmox. Но все же это решение конкретного коллектива разработчиков со своими возможностями и ошибками. В проксмокс реализован живой бэкап виртуальных машин из коробки. К сожалению, я не смог быстро найти техническую реализацию их решения. Возможно, все было бы еще проще. Но так тоже ничего получилось.
Онлайн курсы по Mikrotik
Если у вас есть желание научиться работать с роутерами микротик и стать специалистом в этой области, рекомендую пройти курсы по программе, основанной на информации из официального курса MikroTik Certified Network Associate. Помимо официальной программы, в курсах будут лабораторные работы, в которых вы на практике сможете проверить и закрепить полученные знания. Все подробности на сайте .
Стоимость обучения весьма демократична, хорошая возможность получить новые знания в актуальной на сегодняшний день предметной области. Особенности курсов:
- Знания, ориентированные на практику;
- Реальные ситуации и задачи;
- Лучшее из международных программ.
Важное дополнение в самом конце. Не забывайте проверять возможность восстановления систем из ваших резервных копий
Ведь конечная цель не сделать бэкап, а восстановиться из него!!!