Установка и настройка гипервизора kvm на centos — подробная инструкция

Что такое kvm на vds

Установка и настройка виртуального сервера

В консольном варианте установки, настройки и управлением системой, незаменимым инструментом является утилита virsh (надстройка над библиотекой libvirt). У неё большое количество опций и параметров, подробное описание можно получить так:

Man virsh

или вызвать стандартный «help»:

Virsh help

Я всегда придерживаюсь следующих правил при работе с виртуальными серверами:

  1. Храню iso образы ОС в каталоге /var/lib/libvirt/boot
  2. Храню образы виртуальных машин в каталоге /var/lib/libvirt/images
  3. Явно задаю каждой новой виртуальной машине свой статичный IP адрес через DHCP сервер гипервизора.

Приступим к установке первой виртуалки (64-битной серверной убунте 16.04 LTS):

Cd /var/lib/libvirt/boot
sudo wget http://releases.ubuntu.com/16.04/ubuntu-16.04.1-desktop-amd64.iso

Скачав образ запускаем установку:

Sudo virt-install \
—virt-type=kvm \
—name ubuntu1604\
—ram 1024 \
—vcpus=1 \
—os-variant=ubuntu16.04 \
—hvm \
—cdrom=/var/lib/libvirt/boot/ubuntu-16.04.1-server-amd64.iso \
—network network=default,model=virtio \
—graphics vnc \
—disk path=/var/lib/libvirt/images/ubuntu1604.img,size=20,bus=virtio

Переводя все эти параметры на «человеческий язык», то получается, что мы создаём виртуальную машину с ОС Ubuntu 16.04, 1024 МБ ОЗУ, 1 процессором, стандартной сетевой картой (виртуальная машина будет ходить в интернет как-будто из-за NAT), 20 ГБ HDD.

Стоит обратить внимание на параметр —os-variant
, он указывает гипервизору под какую именно ОС следует адаптировать настройки.Список доступных вариантов ОС можно получить, выполнив команду:

Osinfo-query os

Если такой утилиты нет в вашей системе, то устанавливаем:

Sudo apt-get install libosinfo-bin

После запуска установки, в консоли появится вот такая надпись:

Domain installation still in progress. You can reconnect to the console to complete the installation process.

Это нормальная ситуация, продолжать установку мы будем через VNC.Смотрим на каком порту он был поднят у нашей виртуалки (в соседнем терминале, например):

Virsh dumpxml ubuntu1604

Порт 5900, на локальном адресе 127.0.0.1. Чтобы подключиться к VNC, необходимо использовать Port Forwarding через ssh. Перед тем как это сделать, убедитесь, что tcp forwarding разрешён у демона ssh. Для этого идём в настройки sshd:

Cat /etc/ssh/sshd_config | grep AllowTcpForwarding

Если ничего не нашлось или вы видите:

AllowTcpForwarding no

То правим конфиг на

AllowTcpForwarding yes

и перезагружаем sshd.

Базовые команды управления ВМ

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 -f /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 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

7. Кло­ни­ро­ва­ние вир­ту­аль­ных машин

Для при­ме­ра, скло­ни­ру­ем вир­ту­аль­ную маши­ну 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

Настраиваем время

Узнать, какое время на сервере можно с помощью команды date:

Чтобы сменить часовой пояс, необходимо выбрать подходящий файл часовой зоны в /usr/share/zoneinfo. В случае, если у вас часовой пояс Москвы, выполните следующее:

# mv /etc/localtime /etc/localtime.bak
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Разово синхронизируем время:

Если ntpdate не работает, посмотрите материал, может это ваш случай. Запустим демон синхронизации и запишем его запуск в автозагрузку:

# systemctl start ntpd
# systemctl enable ntpd
ln -s «/usr/lib/systemd/system/ntpd.service» «/etc/systemd/system/multi-user.target.wants/ntpd.service»

Теперь наши часы будут автоматически синхронизироваться с сервером времени.

Более подробно об этой теме написано отдельно в моем материале — установка, настройка и синхронизация времени в CentOS.

Cloning Virtual Machine

Introduction of virt-clone parameters

  • View the version.
  • — h,—help to view help information.
  • — connect=URI to the URI of the virtual machine manager libvirt.
  • — o The original virtual machine name, the original virtual machine name, must be closed or paused.
  • — n New Virtual Machine name — name New Virtual Machine name.
  • —auto-clone automatically generates clone names and storage paths from the original virtual machine configuration.
  • — u NEW_UUID, —uuid=NEW_UUID clones the new UUID of the virtual machine. The default value is a randomly generated UUID.
  • — M NEW_MAC,—mac=NEW_MAC sets a new Mac address, which is generated randomly by default.
  • — f NEW_DISKFILE, —file=NEW_DISKFILE uses the new disk mirror file address for the new client.
  • force-copy=TARGET Forced Replication Device.
  • nonsparse does not use sparse files to copy disk images.

Create KVM Virtual Machine using virt-manager

The following methods are available with virt-manager for Guest OS installation:

  • Local installation media (ISO Image or CD-ROM)
  • Network installation (HTTP, FTP, or NFS)
  • Network boot (PXE)
  • Importing existing disk images

Create new Virtual Machine

From Virtual Machine Manager, click on File → New Virtual Machine to Create to open the wizard to create KVM Virtual Machine using virt-manager

The wizard breaks down the virtual machine creation process into five steps:

  • Choosing the installation method.
  • Configuring the installation media.
  • Memory and CPU configuration.
  • Virtual machine storage configuration.
  • Naming the Guest OS and networking configuration.

Select Installation Media

Select Local install media (ISO Image or CDROM) and click on the Forward button.

Clicking on the Forward button will take you to Step 2 where you have to specify the ISO image location.

Select your ISO which you plan to use to create KVM Virtual Machine using

automatically detects the operating system based on the install media. It uses the OS information database provided by .
At the time of writing this article, CentOS 8 was not part of Virtual Manager
Un-check the option to «automatically detect from the installation media/source» if the Virtual Manager fails to get the source information and choose Generic (default)

On the next screen, specify the memory and CPU that you want allocate for the virtual machine:

Define Storage for VM

  • The wizard shows the maximum amount of CPUs and memory you can allocate. Configure these settings and click Forward to configure storage for the virtual machine:
  • Make sure you assign sufficient space for your virtual machine.
  • By default, it creates a virtual disk at the  location, which is the default pool.
  • If there are any other custom storage pools defined on the system, select create custom storage and either directly enter the path of the disk or click on the Manage button, which will open the Locate or create storage volume dialog box where you can select an existing volume or create a new one from the defined storage pool, if any available.

Assign Guest VM Name and Configure Network

  • The next and final step is naming the guest and networking configuration.
  • The default machine name is based on the selected OS. But since I am using generic Default, the name is not populated automatically. I will change it to vm_1.
  • You can change it to whatever name you want to give but note that only underscores (_), periods (.), and hyphens (-) are supported:

Advertisement

If you wish to further configure the virtual machine’s hardware first, check the Customize configuration before install box first before clicking Finish. Or you can click on the bulb icon (as shown below) to open the configuration wizard for respective VM

Below is a sample screenshot of VM Setting’s section

Create VM Snapshot in Virtual manager

  • You can also create snapshots in Virtual Manager.
  • Select the VM for which you wish to create snapshot
  • Click on Snapshot icon. Follow the below screenshot
  • Click on + sign to take snapshot of the current state of the VM

Lastly I hope the steps from the article to create KVM Virtual Machine using Virtual Manager on Linux was helpful. So, let me know your suggestions and feedback using the comment section.

References:Create KVM Virtual Machine using Virtual Manager

Установка и настройка гипервизора

Я покажу, как настраивать гипервизор, на примере Debian Linux 9.6.0 — Х64-86. Ты можешь использовать любой дистрибутив Linux, который тебе по душе.

Когда ты определишься с выбором железа и его наконец-то привезут, придет время ставить гипервизор. При установке ОС все делаем, как обычно, за исключением разметки дисков. Неопытные администраторы часто выбирают опцию «Автоматически разбить все дисковое пространство без использования LVM». Тогда все данные будут записаны на один том, что нехорошо по нескольким причинам. Во-первых, если жесткий диск выйдет из строя, ты потеряешь все данные. Во-вторых, изменение файловой системы доставит массу хлопот.

В общем, чтобы избежать лишних телодвижений и потери времени, рекомендую использовать разметку диска с LVM.

Logical Volume Manager

Менеджер логических томов (LVM) — это подсистема, доступная в Linux и OS/2, построенная поверх Device Mapper. Ее задача — представление разных областей с одного жесткого диска или областей с нескольких жестких дисков в виде одного логического тома. LVM создает из физических томов (PV — Phisical Volumes) логическую группу томов (VG — Volumes Group). Она, в свою очередь, состоит из логических томов (LV — Logical Volume).

Сейчас во всех дистрибутивах Linux с ядром 2.6 и выше есть поддержка LVM2. Для использования LVM2 на ОС с ядром 2.4 надо устанавливать патч.

После того как система обнаружила жесткие накопители, запустится менеджер разбивки жестких дисков. Выбираем пункт Guided — use entire disk and set up LVM.

Теперь выбираем диск, на который будет установлена наша группа томов.

Система предложит варианты разметки носителя. Выбираем «Записать все файлы на один раздел» и идем дальше.

После сохранения изменений мы получим одну логическую группу и два тома в ней. Первый — это корневой раздел, а второй — это файл подкачки. Тут многие зададут вопрос: а почему не выбрать разметку вручную и не создать LVM самому?

Я отвечу просто: при создании логической группы VG загрузочный раздел boot не пишется в VG, а создается отдельным разделом с файловой системой ext2. Если этого не учесть, то загрузочный том окажется в логической группе. Это обречет тебя на мучения и страдания при восстановлении загрузочного тома. Именно поэтому загрузочный раздел отправляется на том без LVM.

Переходим к конфигурации логической группы для гипервизора. Выбираем пункт «Конфигурация менеджера логических томов».

Система оповестит о том, что все изменения будут записаны на диск. Соглашаемся.

Создадим новую группу — к примеру, назовем ее vg_sata .

Какой диск выбрать в kvm — lvm, raw (img) или qcow2

В kvm есть несколько типов дисков, которые вы можете использовать в своей работе. Они имеют принципиальные отличия как по своей работе, так и по способам бэкапа. Выбирать тот или иной тип нужно в зависимости от ваших задач. Рассмотрим эти типы подробнее.

LVM. Тут все понятно. Использование lvm томов в виде дисков виртуальных машин. Такой диск будет блочным устройством и должен работать быстрее всех остальных типов, так как нет лишней прослойки в виде файловой системы.

Плюсы:

  • Снэпшоты средствами самого lvm, с них легко снять бэкап без остановки виртуальной машины.
  • Максимальное быстродействие.
  • Легко изменить размер диска.

Минусы:

  • Более сложное управление по сравнению с дисками в виде отдельных файлов.
  • Менее гибкое управление пространством диска. Если весь диск разбить на lvm разделы для виртуалок, то места на нем не останется, даже если вируталки будут пустые.
  • Более сложный перенос на другой сервер.

RAW. Это обычный формат сырых данных. Среди дисков в виде файлов это будет самый простой и быстрый вариант. Все данные пишутся как есть без дополнительных обработок и служебной информации. Формат является универсальным для большинства популярных гипервизоров.

Плюсы:

  • Максимальная простота и производительность среди образов в виде файла.
  • Универсальный формат с поддержкой в большинстве гипервизоров.
  • Легкость переноса виртуальной машины на другой сервер. Достаточно просто скопировать файл.

Минусы:

  • Не поддерживает снепшоты ни в каком виде.
  • Занимает сразу все выделенное пространство на диске, даже если внутри виртуальной машины место будет свободно. Из-за отсутствия фрагментации в некоторых случаях это может оказаться плюсом.

QCOW2. Родной формат для гипервизора QEMU. Расшифровывается как QEMU Copy-on-write. Этот формат позволяет создавать динамические диски для виртуальных машин, а так же поддерживает снепшоты. Теоретически, скорость работы должна хоть и не сильно, но уступать RAW. Как обстоит дело на практике, я не знаю, не замерял и подробно эту информацию не проверял.

Плюсы:

  • Поддержка снепшотов и динамических дисков. Как следствие — более удобное управление дисковым пространством.
  • Легкость переноса виртуальной машины на другой сервер. Достаточно просто скопировать файл.

Минусы:

Более низкая производительность, по сравнению с другими типами образов.

У каждого типа есть свои преимущества и недостатки. Lvm проще всего бэкапить, но им сложнее всего управлять. Для того, кто хорошо знаком с lvm это не проблема, если сталкиваешься первый раз, то возникает много вопросов. У raw нет снепшотов, лично для меня это большой минус, я этот формат вообще не рассматриваю. Если нет максимальной нагрузки на дисковую подсистему, то QCOW2 мне кажется наиболее приемлемым вариантом. Собственно, ниже и пойдет рассказ, как совместить удобство управления QCOW2 и простоту бэкапов и снэпшотов lvm. Я покажу, как сделать живой бэкап виртуальной машины kvm в формате qcow2 без остановки виртуальной машины.

Настройка пользовательского сеанса KVM

Создание подключения к сеансу

Запустим Менеджер виртуальных машин (virt-manager) из меню используемой графической среды.

Главное окно Virt Manager

В главном окне менеджера виртуальных машин, нажмём правой кнопкой мыши по QEMU/KVM, затем в контекстном меню выберем вариант Отключиться и Удалить. Подтвердим удаление.

В меню Файл выберем Добавить соединение.

Создание пользовательского сеанса KVM

В поле Гипервизор выберем пункт QEMU/KVM сеанс пользователя, затем установим флажок в чекбокс Подключаться автоматически и нажмём Подключиться. Новый пункт появится в списке.

По умолчанию предлагается использовать каталог ~/.local/share/libvirt/images для хранения дисковых образов виртуальных машин, однако для удобства мы создадим новые.

Это опциональное действие. Можно использовать пул default для любых целей.

В главном окне менеджера выделим пункт QEMU/KVM сеанс пользователя, затем в меню Правка выберем пункт Свойства подключения и переключимся на вкладку Пространство данных.

Настройки пула пользовательского сеанса

Создадим два каталога: images для дисковых образов виртуальных машин и iso для ISO образов, из которых будет производиться установка операционных систем:

mkdir -p ~/virt/{images,iso}

В левой панели окна менеджера пространств данных нажмём кнопку Добавить пул (с символом плюс).

Добавление пользовательского пула

В поле Название для пула с дисковыми образами укажем images, Тип — каталог в файловой системе, а Target Path — каталог на диске (в нашем случае — созданный ранее ~/virt/images). Нажмём Готово и пул появится в списке. Подтвердим сохранение изменений.

Повторим то же самое, но для ISO образов:

  • название — iso;
  • target path — ~/virt/iso.

Настроенные пулы пользовательского сеанса

Если всё сделано верно, в левой панели появятся два новых пула — images и iso. Выберем каждый и убедимся, что в чекбоксе Автозапуск при загрузке установлен флажок. Если это не так, исправим и нажмём Применить.

Пул с именем default теперь допускается удалить, хотя это и не обязательно. Для этого выберем его, нажмём кнопку Остановить пул, а затем Удалить пул и подтвердим намерение.

Настройка сети в пользовательском сеансе

Создадим сетевой мост для виртуальных машин:

sudo nmcli con add type bridge autoconnect yes ifname virbr0 ipv4.method shared ipv4.address 192.168.122.1/24

Добавим основное проводное соединение в качестве ведущего для моста:

sudo nmcli con add type bridge-slave autoconnect yes ifname enp3s0 master virbr0

Здесь вместо enp3s0 укажем физический интерфейс проводного соединения (может быть получен из вывода nmcli device status).

Разрешим использование моста в qemu-bridge-helper:

echo allow virbr0 | sudo tee -a /etc/qemu/bridge.conf

Добавим правила для файрвола:

sudo firewall-cmd --zone libvirt --add-interface virbr0 --permanent
sudo firewall-cmd --zone libvirt --add-service dhcp --permanent
sudo firewall-cmd --zone libvirt --add-service dhcpv6 --permanent
sudo firewall-cmd --zone libvirt --add-service dns --permanent
sudo firewall-cmd --reload

На этом настройка пользовательского сеанса завершена и можно приступать к установке гостевых операционных систем.

Troubleshooting KVM and VirtManager Setup

1. If you see the following error when attempting to launch VirtManager remotely, make sure that you use the wrapper script () to launch it, as described above.

X11 connection rejected because of wrong authentication.
Traceback (most recent call last):
  File "/usr/share/virt-manager/virt-manager.py", line 383, in 
    main()
  File "/usr/share/virt-manager/virt-manager.py", line 286, in main
    raise gtk_error
RuntimeError: could not open display

2. If you see the following D-Bus error:

D-Bus library appears to be incorrectly set up; failed to read machine
uuid: UUID file '/var/lib/dbus/machine-id'

Then run the command below and reboot the host machine.

$ sudo sh -c 'dbus-uuidgen > /var/lib/dbus/machine-id'

3. If you have font issue while running VirtManager, install the following font, and relaunch it.

$ sudo yum install dejavu-lgc-sans-fonts

Install KVM on CentOS 7

Issue the following command to install latest qemu package and also virt-manager which provides a graphical interface to manage virtual machines.

Yum install -y qemu-kvm qemu-img virt-manager libvirt libvirt-python libvirt-client virt-install virt-viewer

  • qemu-kvm
    = QEMU emulator
  • qemu-img
    = QEMU disk image manager
  • virt-install
    = Command line tool to create virtual machines.
  • libvirt
    = Provides libvirtd daemon that manages virtual machines and controls hypervisor.
  • libvirt-client
    = provides client-side API for accessing servers and also provides the virsh utility which provides command line tool to manage virtual machines.
  • virt-viewer
    – Graphical console
Понравилась статья? Поделиться с друзьями:
Быть в курсе нового
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: