Установка и настройка kvm на ubuntu server

Virsh: список команд

Чтобы посмотреть запущенные виртуальные хосты (все доступные можно получить добавив —all):

Sudo virsh list

Перезагрузить хост можно:

Sudo virsh reboot $VM_NAME

Остановить виртуальную машину:

Sudo virsh stop $VM_NAME

Выполнить halt:

Sudo virsh destroy $VM_NAME

Sudo virsh start $VM_NAME

Отключение:

Sudo virsh shutdown $VM_NAME

Добавить в автозапуск:

Sudo virsh autostart $VM_NAME

Очень часто требуется склонировать систему, чтобы в будущем использовать её как каркас для других виртуальных ОС, для этого используют утилиту virt-clone.

Virt-clone —help

Она клонирует существующую виртуалку и изменяет host-sensitive данные, например, mac address. Пароли, файлы и прочая user-specific информация в клоне остаётся прежней. Если на клонируемой виртуалке IP адрес был прописан вручную, то могут возникнуть проблемы с доступом по SSH на клон из-за конфликта (2 хоста с одинаковым IP).

Помимо установки виртуалки через VNC, также возможен вариант с X11Forwarding через утилиту virt-manager. В Windows, например, для этого можно использовать Xming и PuTTY.

KVM или Kernel Virtual Module — это модуль виртуализации для ядра Linux, который позволяет превратить ваш компьютер в гипервизор для управления виртуальными машинами. Этот модуль работает на уровне ядра и поддерживает такие технологии аппаратного ускорения, как Intel VT и AMD SVM.

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

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

Перед тем как переходить к самой установке KVM нужно проверить поддерживает ли ваш процессор аппаратное ускорение виртуализации от Intel-VT или AMD-V. Для этого выполните такую команду:

egrep -c «(vmx|svm)» /proc/cpuinfo

Если в результате будет возвращено 0 — значит ваш процессор не поддерживает аппаратной виртуализации, если 1 или больше — то вы можете использовать KVM на своей машине.

Теперь мы можем перейти к установке KVM, набор программ можно получить прямо из официальных репозиториев:

sudo apt install qemu-kvm libvirt-bin bridge-utils virt-manager cpu-checker

Мы установили не только утилиту kvm, но и библиотеку libvirt, а также менеджер виртуальных машин. После того, как установка будет завершена вам необходимо добавить своего пользователя в группу libvirtd, потому что только root и пользователи этой группы могут использовать виртуальные машины KVM:

sudo gpasswd -a ПОЛЬЗОВАТЕЛЬ libvirtd

После выполнения этой команды выйдите из системы и войдите снова. Далее, давайте проверим все ли правильно было установлено. Для этого используйте команду kvm-ok:

INFO: /dev/kvm exists
KVM acceleration can be used

Если все было сделано правильно, то вы увидите такое же сообщение.

Create & Manage KVM Virtual machines via GUI Virt-Manager

1. Install Virt-Manager

To manage KVM Virtual environment on Ubuntu 20.04 graphically we have several tools and one of the popular ones which developed by the RedHat is Virt-Manager. It is a simple tool that uses libvirt for managing VMs sunning on Qemu/KVM.

The tool is available to download in the official Ubuntu repository, thus here is the command:

sudo apt install virt-manager

2. Run Virt-Manager to create Virtual machines

After the installation, it can be started from the Activities, just go there and search for it. Once it appears, click on the Display icon to create a new virtual machine.

Also, if you have earlier created any VM via the command line all that will also be there on Virtual Machine Manager; if you want you can start directly using them.

Create a New Virtual machine

3. Local Install media (ISO image or CDROM)

The first step is to set the bootable medium for VM, thus select Local install media, the first option. In case you already have a VM disk image imported or used earlier that can be used as well.

Now, click on the Browse button and again on the Browse local button to open file manager, navigate to Distribution or OS ISO file which you want to install.

Browse local ISO file

After that uncheck the box of “Automatic detect from the installation source or medium” in case it hasn’t been able to detect the operating system you are about to install. And then click on the X button given in the front of space for “Choose the operating system you are installing” and type a few words of the distribution. As it appears select that.

Insert ISO file for KVM in Virt Manager

4. Create a disk image for the KVM virtual machine

At this step, enter the amount of storage you want to assign to the VM you are about to install. For example, for Debian, the user can start with 20GB of space or more.

Create a disk image file

5. Choose Memory and CPU settings

Another important thing to set is RAM and Virtual CPU, however, the maximum amount of resource in both you can assign will be given at the bottom of the boxes. For example, the total RAM is available to assign on our system is 3887 MB RAM and 4 CPU, you can see in the below screenshots.

Setting up of RAM and Virtual CPU

6. VM Name and Network Selection

Change the VM name, if you wish and select the network type, by default it will be on NAT.

Network configuration and VM name

7. Run machine or edit hardware configuration

If you want to run the machine, just select that and click on the Green colour play button. Or else to edit the existing hardware configuration of any created VM listed on Virtual Manager, Select it and click on the Open button.

Open Created VM

Now, click on the blue colour exclamation button.

Show the Hardware

All the available hardware resources will be in front of you, just add, remove or edit whatever you want.

Edit hardware configuration of KVM VM

Once done, click on the Display icon and then Start button.

Start Virtual Machine

In a few seconds, your KVM machine will boot and give you access to install the guest OS.

Install Linux on KVM

Other Articles:

1. Gnome Boxes

Gnome Boxes — попытка Gnome Project сделать простые операции виртуализации в Linux простой. Многие люди в сообществе Linux высоко оценивают инструмент для мастера быстрой настройки, возможность загрузки образа ОС непосредственно из URL-адреса и т. д.Это приложение очень полезно, даже для продвинутых пользователей Linux со сложными потребностями. Приложение очень похоже на другие программы виртуализации на Linux и довольно конкуренто способно в функциях, несмотря на его основной внешний вид.Известные особенности:

Интуитивно понятный, понятный пользовательский интерфейс, который позволяет даже совершенно новым пользователям создавать и управлять виртуальными машинами быстро.
Ящики могут автоматически определять ОС на основе того, какой ISO вы выбираете во время установки. Во время процесса обнаружения программа автоматически назначит правильное количество пространства на виртуальном диске и выделяет ОЗУ.
Полезная функция «клонирования» позволяет пользователям мгновенно создавать полные копии существующих виртуальных машин.
Gnome Boxes имеет непревзойденную функцию поиска, которая при соединении с Gnome Shell может использоваться для запуска виртуальных машин непосредственно с рабочего стола.
Приложение Boxes имеет надежный пользовательский интерфейс командной строки, который царапает зуд более продвинутых пользователей VM.

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

В консольном варианте установки, настройки и управлением системой, незаменимым инструментом является утилита 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.

Использование QEMU

Теперь рассмотрим использование QEMU для виртуализации другой машины в типичной среде настольного ПК под GNU/Linux. Эмуляция другой машины похожа на начало работы с только что купленным новым компьютером. Первый шаг — это установка операционной системы. Новый компьютер, конечно, должен иметь место для установки операционной системы, поэтому необходим жесткий диск.

QEMU предоставляет специальную команду для создания жесткого диска, которая называется . Эта утилита создает образы различных форматов, но лучший (для ) из них называется (или ). Преимуществом данного формата является то, что образ эмулируемого диска не обязательно должен занимать физический файл такого же объема. Другими словами, формат допускает пропуски, что позволяет сделать образ диска более компактным. Например, пустой образ диска объемом 4 ГБ займет всего 16 КБ.

Для необходимо указать операцию ( для создания нового образа диска), формат ( для форматирования образа ), размер и имя образа диска. Следующий пример эмулирует машину для небольшого дистрибутива Linux, предполагаемого для использования на Flash. Итак, создаем образ диска на 128 МБ:

$ qemu-img create -f qcow disk.img 128M
Formating 'disk.img', fmt=qcow, size=131072 kB
$

Необходимо помнить, что если планируется установка операционной системы общего назначения, такой как Windows, Linux или FreeBSD, то нужен гораздо больший диск. Результат выполненной операции — файл disk.img — будет содержать эмулируемый диск размером 128 МБ.

Теперь, когда жесткий диск создан, можно установить на него новую операционную систему. Для демонстрации этого процесса я использую небольшой дистрибутив Linux, называемый cfLinux, предназначенный для применения в качестве небольшой встраиваемой Linux-системы в таких устройствах, как шлюзы, беспроводные точки доступа, брандмауэры и маршрутизаторы. Этот дистрибутив можно загрузить в формате ISO с помощью :

wget ftp://ftp.cflinux.fu/pub/cflinux/iso/cflinux-1.0.iso

Образ ISO представляют собой широко применяемый формат CD-ROM (также известный как файловая система ISO 9660).

Теперь у нас есть эмулируемый диск (disk.img) и CD-ROM, с которого можно инсталлировать операционную систему. Следующим шагом будет инсталляция системы на жесткий диск. Это делается очень просто с помощью :

$ qemu -hda disk.img -cdrom /root/cflinux-1.0.iso -boot d
$

При использовании образ жесткого диска задается с помощью опции , а компакт-диск (файл, где располагается образ) — с помощью опции . Опция позволяет загрузиться с CD-ROM. Аргумент указывает загружаться с CD-ROM, — с флоппи-диска, указывает на загрузку с жесткого диска (по умолчанию), а — загрузку с сети. Если команда введена правильно, то появится новое окно QEMU с эмулируемой машиной (см. Рисунок 2).

Рисунок 2. Подготовка к установке cfLinux на эмулируемый диск в QEMU

Следуя инструкциям по установке с CD-ROM, легко закончить установку с ISO-образа на эмулируемый жесткий диск. Установка требует перезагрузки. В этом месте можно закончить эмуляцию (Ctrl-C в окне ). Теперь можно загрузить свежеустановленную операционную систему с помощью следующей команды:

$ qemu -hda disk.img
$

Эта команда просто эмулирует стандартный PC (опция по умолчанию) с жестким диском, представленным файлом образа disk.img. Образ Linux, загрузившись с эмулируемого жесткого диска, выдаст в результате окно QEMU, показанное на Рисунке 3.

Рисунок 3. Загрузка свежеустановленного cfLinux с эмулируемого жесткого диска

Как видите, все очень просто. При этом такую же последовательность действий можно использовать для установки и загрузки любых разновидностей операционных систем (дистрибутивов Linux, Windows и других).

Подготовка сервера

Проверяем наличие поддержки со стороны процессора:

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-образов.

Memory

  • Huge Page Memory support
    • Calculate the huge page counts required. Each huge page is 2MB size, as a result we can use below formula for the calculation.
      Huge Page Counts = Total VM Guest Memory In MB / 2

      e.g. 4 VM guests, each VM guest using 1024MB, then huge page counts = 4 x 1024 / 2 = 2048. Note that the system may be hang if the acquired memory is more than that of the system available.

    • Configure ?HugePages memory support by using below command. Since Huge memory might not be allocated if it is too fragmented, it is better to append the code to /etc/rc.local

      echo 2048 > /proc/sys/vm/nr_hugepages
      mkdir -p /mnt/hugetlbfs
      mount -t hugetlbfs hugetlbfs /mnt/hugetlbfs
      mkdir -p /mnt/hugetlbfs/libvirt/bin
      systemctl restart libvirtd
    • Reboot the system to enable huge page memory support. Verify huge page memory support by below command.
      # cat /proc/meminfo | grep HugePages_
      HugePages_Total:    2048
      HugePages_Free:     2048
      HugePages_Rsvd:        0
      HugePages_Surp:        0
    • Edit the VM guest configuration, assume the VM guest name is «VMGUEST»
      # virsh edit VMGUEST
    • Add below codes after the line «<currentMemory …»

      <memoryBacking>
        <hugepages/>
      </memoryBacking>
    • Start the VM guest «VMGUEST» and verify it is using huge page memory by below command.
      # virsh start VMGUEST
      # cat /proc/meminfo | grep HugePages_
      HugePages_Total:    2048
      HugePages_Free:     1536
      HugePages_Rsvd:        0
      HugePages_Surp:        0
      Huge Page Counts = Total VM Guest Memory In MB / 2

Виртуализация сетей

Прежде чем переходить к подробному рассмотрению различных способов организации и поддержки виртуальных сетей в Linux, стоит рассмотреть эту проблему на более высоком уровне абстракции.

В традиционной среде (см. ) комплекс необходимых приложений разворачивается на группе физических серверов. Чтобы организовать обмен информацией между серверами, на каждый из них устанавливается один или несколько сетевых адаптеров (NIC), подключенных к внешней сетевой инфраструктуре. Сетевые адаптеры и стек сетевого ПО через сетевую инфраструктуру обеспечивают коммуникации между конечными точками. Как показано на рисунке 1, эта функциональность реализуется коммутатором (switch), который отвечает за эффективный обмен пакетами между взаимодействующими конечными точками.

Рисунок 1. Традиционная сетевая инфраструктура

Ключевая инновация, лежащая в основе объединения серверов, — это абстрактное аппаратное обеспечение, позволяющее нескольким операционным системам и приложениям совместно использовать физическое аппаратное обеспечение (см. ). Эта абстракция называется гипервизором (hypervisor) или монитором виртуальных машин (virtual machine monitor). Каждая виртуальная машина (операционная система с набором приложений) видит базовое аппаратное обеспечение как систему, используемую в монопольном режиме, хотя её отдельные компоненты могут быть разделены между несколькими виртуальными машинами (ВМ) или вообще не существовать. В качестве примера можно рассмотреть виртуальный сетевой адаптер (vNIC). Гипервизор может создать один или несколько виртуальных сетевых адаптеров для каждой ВМ. Эти адаптеры будут видны в ВМ как физические, но в действительности они только предоставляют интерфейс к реально существующему сетевому адаптеру. Гипервизор также позволяет динамически создать виртуальную сеть с виртуальными коммутаторами, чтобы обеспечить настраиваемые коммуникации между конечными точками виртуальных машин. Также гипервизор допускает взаимодействие с инфраструктурой физической сети путем подключения физических сетевых адаптеров сервера к своей логической инфраструктуре, в результате чего становятся возможными коммуникации между виртуальными машинами в рамках гипервизора и коммуникации в рамках внешней сети. В разделе перечислены ссылки на статьи, содержащие информацию о гипервизорах для платформы Linux – очень перспективному направлению для ОС на основе открытого кода.

Рисунок 2. Виртуализированная сетевая инфраструктура

Виртуализированная сетевая инфраструктура также позволяет внедрить другие интересные инновации, например, виртуальные устройства (virtual appliance). Эта возможность будет также рассмотрена в данной статье вместе с другими элементами виртуальных сетей.

Create Virtual Machine

Once you have installed KVM and other tools, it is all set to start creating virtual machines. We will look be looking at creating virtual machines in both command line and graphical mode.

Command Line Mode

virt-install is used to create virtual machines using the command line; this command needs multiple inputs from us to create a virtual machine such as CPU, Memory, disk, network, installation media location, OS variant and more.

sudo virt-install  --name=itzgeekguest  --ram=1024  --vcpus=1  --cdrom=/var/lib/libvirt/images/CentOS-6.9-x86_64-minimal.iso --os-type=linux --os-variant=rhel7  --network bridge=br1 --graphics=spice  --disk path=/var/lib/libvirt/images/itzgeekguest.dsk,size=4

Note: The above command uses bridged networking “br1” for allowing virtual machines to communicate with outside network.

–name – Name of the Virtual machine

–ram – Memory size in MB

–vcpus – Virtual CPU’s in numbers

–cdrom – Location of the ISO image

–os-type – OS types like Linux, Windows, and Unix

–os-variant – OS variant like RHEL 6, Solaris

–network – Networking

–graphics – Guest display settings

–disk path – Location of the disk with size of 4 GB

Once you’ve issued the above command, virt-install will create a virtual machine and starts virt viewer console for OS installation.

Install KVM (QEMU) on Ubuntu 16.04 – KVM – Created VM in Command Line

Graphical Mode

Type the following command in the terminal in GUI mode.

sudo virt-manager

OR

Dash Home >> Search For >> Virtual Machine Manager.

You may be asked to enter the password if you don’t have root access. Once it is opened, right-click on localhost(QEMU) and Click on New. Virtual Machine Manager will start a new wizard for creating a virtual machine, and you will find no difficulty in using this graphical mode.

Step 1: You would be asked to choose how would you like to install the operating system. Here I chose to install it from ISO image or CD-ROM.

Install KVM (QEMU) on Ubuntu 16.04 – Virt Manager – Create a VM – Choose Installation Type

Step 2: Enter the location of ISO image, do not forget to choose operating system type and version.

Install KVM (QEMU) on Ubuntu 16.04 – Virt Manager – Create a VM – Location of Media

Step 3: Configure CPU and memory for the virtual machine.

Install KVM (QEMU) on Ubuntu 16.04 – Virt Manager – CPU and Memory

Step 4: You have to mention the amount of storage that you want to assign to a virtual machine.

Install KVM (QEMU) on Ubuntu 16.04 – Virt Manager – Storage Allocation

Step 5: Summary of all the settings, click on advanced settings to select bridged networking to allow the virtual machine to communicate outside networks. Click on Finish.

Install KVM (QEMU) on Ubuntu 16.04 – Virt Manager – Summary and Networking

Step 6: KVM will start to create a virtual machine depends on our input, once VM is created. Virt manager will start a console for OS installation. The following screen shows the installation screen of CentOS 6.

Install KVM (QEMU) on Ubuntu 16.04 – Virt Manager – VM Console

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *