# Лабораторная работа 4. Основы виртуализации в Linux. QEMU/KVM.

#### Цель
Получить понимание принципа работы программ, используемых для виртуализации в
операционной системе CentOS 7. Научиться работать с qemu.

#### Задачи
1) Установить qemu.
2) С использованием qemu-img провести базовые операции над образами.
3) Скачать образ Cirros, запустить виртуальную машину и установить операционную систему на диск.

<b>Note: Авторизация на всех узлах<br>
Логин:</b> labuser<br>
<b>Пароль:</b> labpass1!

Схема виртуального лабораторного стенда
<div drawio-diagram="130"><img src="https://docs.resds.ru/uploads/images/drawio/2022-02/2v3LXBTxP8X1Bxxu-drawing-3-1645727174.png"></div>

####  Задание 1. Установка QEMU.
Переключиться на проект [GROUP]:[team].lab:4-7. Включить <b>labnode-1</b> и <b>virt_viewer</b>.

На <b>labnode-1</b>:
1. Установить эмулятор аппаратного обеспечения различных платформ:
```sh
sudo yum install -y qemu-kvm
```
2. Убедиться, что модуль KVM загружен (с помощью команд lsmod и grep):
```sh
lsmod | grep -i kvm
```
[![](https://docs.resds.ru/uploads/images/gallery/2022-02/scaled-1680-/BcW1iCZNjgj0lGVm-image-1645727646496.png)](https://docs.resds.ru/uploads/images/gallery/2022-02/BcW1iCZNjgj0lGVm-image-1645727646496.png)

#### Задание 2. Управление образами дисков при помощи qemu-img.
Чтобы запускать виртуальные машины, QEMU требуются образы для хранения определенной
файловой системы данной гостевой ОС. Такой образ сам по себе имеет тип некоторого файла, и
он представляет всю гостевую файловую систему, расположенную в некотором виртуальном
диске. QEMU поддерживает различные образы и предоставляет инструменты для создания и
управления ими. Можно построить пустой образ диска с помощью утилиты qemu-img, которая
должна быть установлена.
1. Проверить какие типы образов поддерживаются qemu-img:
```sh
sudo qemu-img -h | grep Supported
```
2. Создать образ qcow2 с названием system.qcow2 и размером 5 ГБ:
```sh
sudo qemu-img create -f qcow2 system.qcow2 5G
```
3. Проверить что файл был создан:
```sh
ls -lah system.qcow2
```
4. Посмотреть дополнительную информацию о данном образе:
```sh
sudo qemu-img info system.qcow2
```
#### Задание 3. Изменение размера образа.
Не все типы образов поддерживают изменение размера. Чтобы изменить размер такого образа
необходимо преобразовать его вначале в образ raw при помощи команды преобразования qemu-
img.
1. Конвертировать образ диска из формата qcow2 в raw:
```sh
sudo qemu-img convert -f qcow2 -O raw system.qcow2 system.raw
```
2. Добавить дополнительно 5 ГБ к образу:
```sh
sudo qemu-img resize -f raw system.raw +5GB
```
3. Проверить новый текущий размер образа:
```sh
sudo qemu-img info system.raw
```
4. Конвертировать образ диска обратно из raw в qcow2:
```sh
sudo qemu-img convert -f raw -O qcow2 system.raw system.qcow2
```
#### Задание 4. Загрузка образа Cirros.
Для загрузки образов с общедоступных репозиториев требуется утилита <b>s3cmd</b>. Загрузить
необходимый образ, воспользовавшись <b>s3cmd</b>:
```sh
sudo yum install s3cmd
cd ~
sudo cp /var/lib/cloud/s3cfg .s3cfg
s3cmd -f get s3://lab3/cirros.img /tmp/
```
#### Задание 5. Создание виртуального окружения с помощью qemu-system.
1. Для того, чтобы подключиться к виртуальной машине по протоколу удаленного
рабочего стола <b>Spice</b>, нужно открыть порт <b>5900</b>.
```sh
sudo firewall-cmd --permanent --add-port=5900-5930/tcp
sudo firewall-cmd --reload
```
2. Посмотреть ip адрес вашего сервера 
```sh
ip a
```
3. Запустить систему при помощи qemu-system:
```
sudo /usr/libexec/qemu-kvm -hda /tmp/cirros.img \
-m 1024 -vga qxl -spice port=5900,disable-ticketing
```
4. Открыть консоль виртуальной машины virt-viewer. Данная вирутальная машина имеет <u>графическую оболочку</u>, и позволяет взаимодействовать с <u>графическими приложениям</u>,  создавая рабочее окружение клиента. Подключиться из виртуальной машины virt_viewer (Пользователь - <b>labuser</b>, пароль -<b>labpass1!</b>) к виртуальной машине. Для этого скачать программу remmina. Через менеджер Ubuntu Software (в списке слева) установить утилиту <b>remmina</b>, введя в поисковой строке её название, и нажав <b>install</b>.

[![](https://docs.resds.ru/uploads/images/gallery/2022-02/scaled-1680-/0nmMiTyL0pFHZ7Zw-image-1645728023289.png)](https://docs.resds.ru/uploads/images/gallery/2022-02/0nmMiTyL0pFHZ7Zw-image-1645728023289.png)

[![](https://docs.resds.ru/uploads/images/gallery/2022-02/scaled-1680-/D0SwxGHdHD1bS6Bu-image-1645728036923.png)](https://docs.resds.ru/uploads/images/gallery/2022-02/D0SwxGHdHD1bS6Bu-image-1645728036923.png)

Установить и открыть программу (название - <b>Remmina</b>). Для открытия программы <b>Remmina</b> – открыть меню приложений в левом нижнем углу, и из открывшегося списка приложений выбрать - <b>Remmina</b>. Подключаться по адресу </b>`spice://10.0.12.21:5900`</b>

5. Залогиниться в Cirros. Дефолтные логин и пароль написаны в консоли (log - <b>cirros</b>/ pass- <b>gocubsgo</b>) ОС. Набрать команду <b>uname -a</b>. Посмотреть на версию ядра ОС. Выключить виртуальную машину, набрав 
  ```sh 
  sudo poweroff
  ```