- Используем KVM для создания виртуальных машин на сервере
- Установка KVM
- Установка и настройка виртуального сервера
- Настройка Port forwarding
- Virsh: список команд
- Ссылки
- 💌 Присоединяйтесь к рассылке
- How to Install KVM on Ubuntu 20.04
- Check Virtualization Support on Ubuntu 20.04
- Install KVM on Ubuntu 20.04
- Step 1: Install KVM Packages
- Step 2: Authorize Users
- Step 3: Verify the Installation
- Creating a Virtual Machine on Ubuntu 20.04
- Method 1: Virt Manager GUI
- Method 2: Using Command Line
Используем KVM для создания виртуальных машин на сервере
Эту заметку я пишу для того, чтобы продемонстрировать пошаговую установку и настройку виртуальной машины в Linux на базе KVM. Ранее я уже писал про виртуализацию, где использовал замечательный инструмент Vagrant.
Сейчас передо мной встал вопрос аренды хорошего сервера с большим объёмом оперативной памяти и объёмным жестким диском. Но запускать проекты прямо на хост-машине не хочется, поэтому буду разграничивать их по отдельным небольшим виртуальным серверам с ОС Linux или docker-контейнерам (о них расскажу в другой статье).
Все современные облачные хостинги работают по такому же принципу, т.е. хостер на хорошем железе поднимает кучу виртуальных серверов, которые мы привыкли называть VPS/VDS, и раздаёт их пользователям, либо автоматизирует этот процесс (привет, DigitalOcean).
KVM (kernel-based virtual machine) это программное обеспечения для Linux, использующее аппаратные средства x86-совместимых процессоров для работы с технологией виртуализации Intel VT/AMD SVM.
Установка KVM
Все махинации по созданию виртуальной машины я буду проводить на ОС Ubuntu 16.04.1 LTS. Чтобы проверить поддерживает ли ваш процессов аппаратную виртуализацию на базе Intel VT/AMD SVM, выполняем:
grep -E '(vmx|svm)' /proc/cpuinfo
Если терминал непустой, то значит всё в порядке и KVM можно устанавливать. Ubuntu официально поддерживает только гипервизор KVM (входит в состав ядра Linux) и советует использовать библиотеку libvirt в качестве инструмента по управлению им, что мы и будем делать дальше.
Проверить поддержку аппаратной виртуализации в Ubuntu также можно через команду:
В случае успеха, вы увидите что-то вроде этого:
INFO: /dev/kvm exists KVM acceleration can be used
Устанавливаем пакеты для работы с KVM:
sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils
Если у вас есть доступ к графической оболочке системы, то можно установить GUI менеджер libvirt:
sudo apt-get install virt-manager
Пользоваться virt-manager достаточно просто (не сложнее VirtualBox), поэтому в этой заметке речь пойдёт про консольный вариант установки и настройки виртуального сервера.
Установка и настройка виртуального сервера
В консольном варианте установки, настройки и управлением системой, незаменимым инструментом является утилита virsh (надстройка над библиотекой libvirt). У неё большое количество опций и параметров, подробное описание можно получить так:
или вызвать стандартный «help»:
Я всегда придерживаюсь следующих правил при работе с виртуальными серверами:
- Храню iso образы ОС в каталоге /var/lib/libvirt/boot
- Храню образы виртуальных машин в каталоге /var/lib/libvirt/images
- Явно задаю каждой новой виртуальной машине свой статичный 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, он указывает гипервизору под какую именно ОС следует адаптировать настройки.
Список доступных вариантов ОС можно получить, выполнив команду:
Если такой утилиты нет в вашей системе, то устанавливаем:
sudo apt-get install libosinfo-bin
После запуска установки, в консоли появится вот такая надпись:
Domain installation still in progress. You can reconnect to the console to complete the installation process.
Это нормальная ситуация, продолжать установку мы будем через VNC.
Смотрим на каком порту он был поднят у нашей виртуалки (в соседнем терминале, например):
Порт 5900, на локальном адресе 127.0.0.1. Чтобы подключиться к VNC, необходимо использовать Port Forwarding через ssh. Перед тем как это сделать, убедитесь, что tcp forwarding разрешён у демона ssh. Для этого идём в настройки sshd:
cat /etc/ssh/sshd_config | grep AllowTcpForwarding
Если ничего не нашлось или вы видите:
Настройка Port forwarding
Выполняем команду на локальной машине:
ssh -fN -l login -L 127.0.0.1:5900:localhost:5900 server_ip
Здесь мы настроили ssh port forwarding с локального порта 5900 на серверный порт 5900. Теперь уже можно подключиться к VNC, используя любой VNC-клиент. Я предпочитаю UltraVNC из-за простоты и удобства.
После успешного подключения, на экране отобразится стандартное окно приветствия начала установки Ubuntu.
После завершения установки и привычной перезагрузки, появится окно входа в систему. Авторизовавшись, определяем IP адрес новоиспечённой виртуалки, чтобы позже сделать его статичным:
Запоминаем и идём на хост машину. Вытаскиваем mac-адрес «сетевой» карты виртуалки:
virsh dumpxml ubuntu1604 | grep 'mac address'
Редактируем сетевые настройки гипервизора:
sudo virsh net-edit default
Ищем DHCP, и добавляем вот это:
Должно получиться что-то вроде этого:
Для того, чтобы настройки вступили в силу, необходимо перезагрузить DHCP сервер гипервизора:
sudo virsh net-destroy default sudo virsh net-start default sudo service libvirt-bin restart
После этого перегружаем виртуальную машину, теперь она всегда будет иметь заданный ей IP адрес — 192.168.122.131.
Есть и другие способы задать виртуалке статичный IP, например, напрямую редактируя сетевые настройки внутри гостевой системы, но тут уже как душе вашей будет угодно. Я лишь показал вариант, который сам предпочитаю использовать.
Чтобы подключиться к терминалу виртуальной машины, выполняем:
Virsh: список команд
Чтобы посмотреть запущенные виртуальные хосты (все доступные можно получить добавив —all):
sudo virsh reboot $VM_NAME
Остановить виртуальную машину:
sudo virsh destroy $VM_NAME
sudo virsh shutdown $VM_NAME
sudo virsh autostart $VM_NAME
Очень часто требуется склонировать систему, чтобы в будущем использовать её как каркас для других виртуальных ОС, для этого используют утилиту virt-clone.
Она клонирует существующую виртуалку и изменяет host-sensitive данные, например, mac address. Пароли, файлы и прочая user-specific информация в клоне остаётся прежней. Если на клонируемой виртуалке IP адрес был прописан вручную, то могут возникнуть проблемы с доступом по SSH на клон из-за конфликта (2 хоста с одинаковым IP).
Помимо установки виртуалки через VNC, также возможен вариант с X11Forwarding через утилиту virt-manager. В Windows, например, для этого можно использовать Xming и PuTTY.
Ссылки
💌 Присоединяйтесь к рассылке
Понравился контент? Пожалуйста, подпишись на рассылку.
How to Install KVM on Ubuntu 20.04
A type 2 hypervisor enables users to run isolated instances of other operating systems inside a host system. As a Linux based OS, Ubuntu supports a wide range of virtualization solutions.
Aside from popular third-party apps, such as VirtualBox and VMWare, the Linux kernel has its own virtualization module called KVM (Kernel-based Virtual Machine).
In this tutorial you will learn how to install and set up KVM on Ubuntu 20.04.
- A system running Ubuntu 20.04
- An account with sudo privileges
- Access to the command line/terminal
Check Virtualization Support on Ubuntu 20.04
1. Before you begin with installing KVM, check if your CPU supports hardware virtualization via egrep command:
egrep -c '(vmx|svm)' /proc/cpuinfo
Check the number in the output:
If the command returns a value of 0 , your processor is not capable of running KVM. On the other hand, any other number means you can proceed with the installation.
2. Now, check if your system can use KVM acceleration by typing:
The output should look like this:
If kvm-ok returns an error stating KVM acceleration cannot be used, try solving the problem by installing cpu-checker.
3. To install cpu-checker, run the following command:
sudo apt install cpu-checker
4. When the installation completes, restart the terminal.
You are now ready to start installing KVM.
Note: When it is performed for servers, hardware virtualization is referred to as server virtualization.
Install KVM on Ubuntu 20.04
To enable KVM virtualization on Ubuntu 20.04:
- Install related packages using apt
- Authorize users to run VMs
- Verify that the installation was successful
Step 1: Install KVM Packages
1. First, update the repositories:
2. Then, install essential KVM packages with the following command:
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
This will start the installation of four KVM packages:
3. When prompted, type Y , press ENTER, and wait for the installation to finish.
Step 2: Authorize Users
1. Only members of the libvirt and kvm user groups can run virtual machines. Add a user to the libvirt group by typing:
sudo adduser ‘username’ libvirt
Replace username with the actual username.
2. Now do the same for the kvm group:
sudo adduser ‘[username]’ kvm
Note: If you need to remove a user from the libvirt or kvm group, just replace adduser with deluser in the command above.
Step 3: Verify the Installation
1. Confirm the installation was successful by using the virsh command:
You can expect an output as seen below:
2. Or use the systemctl command to check the status of libvirtd:
sudo systemctl status libvirtd
If everything is functioning properly, the output returns an active (running) status.
3. Press Q to quit the status screen.
4. If the virtualization daemon is not active, activate it with the following command:
sudo systemctl enable --now libvirtd
Creating a Virtual Machine on Ubuntu 20.04
1. Before you choose one of the two methods listed below, install virt-manager, a tool for creating and managing VMs:
sudo apt install virt-manager
2. Type Y and press ENTER. Wait for the installation to finish.
Make sure you download an ISO containing the OS you wish to install on a VM and proceed to pick an installation method.
Method 1: Virt Manager GUI
2. In the first window, click the computer icon in the upper-left corner.
3. In the dialogue box that opens, select the option to install the VM using an ISO image. Then click Forward.
4. In the next dialogue, click Browse Local and navigate to the path where you stored the ISO you wish to install.
5. The ISO you chose in the previous window populates the field in Step 2. Proceed to Step 3 by clicking Forward.
6. Enter the amount of RAM and the number of CPUs you wish to allocate to the VM and proceed to the next step.
7. Allocate hard disk space to the VM. Click Forward to go to the last step.
8. Specify the name for your VM and click Finish to complete the setup.
9. The VM starts automatically, prompting you to start installing the OS that’s on the ISO file.
Method 2: Using Command Line
Use the virt-install command to create a VM via Linux terminal. The syntax is:
virt-install --option1=value --option2=value .
In the following example, virt-install is used to install Fedora 33 Workstation.
Tip: For tidier appearance of commands with many options, type a back-slash after each option. That way, when you press Enter, the command will not execute, and the cursor will go to the next line.
Options behind the command serve to define the parameters of the installation.
Here is what each of them means:
Option | Description |
---|---|
—name | The name you give to the VM |
—description | A short description of the VM |
—ram | The amount of RAM you wish to allocate to the VM |
—vcpus | The number of virtual CPUs you wish to allocate to the VM |
—disk | The location of the VM on your disk (if you specify a qcow2 disk file that does not exist, it will be automatically created) |
—cdrom | The location of the ISO file you downloaded |
—graphics | Specifies the display type |
After reading this article, you should know how to install KVM on Ubuntu 20.04. Additionally, the article describes two methods of setting up virtual machines, using the virt-manager GUI and the virt-install command.