Практика VM
Задание 0. Построение стенда
Схема виртуального лабораторного стенда
Рисунок 1. Схема стенда
- Создать виртуальные машины для работы
Название виртуальной машины | Источник | Тип инстанса | Сети для внешнего подключения | Размер диска |
---|---|---|---|---|
labnode-1 | Образ-Ubuntu-server20.04 | small | external-net | 10GB |
Так же нужно проверить развернутую инфраструктуру на соответствие схеме на рисунке 1.
Задание 1. Установка QEMU.
На labnode-1:
- Установить эмулятор аппаратного обеспечения различных платформ:
sudo apt update
sudo apt install qemu-kvm qemu-system qemu-utils -y
- Убедиться, что модуль KVM загружен (с помощью команд lsmod и grep):
lsmod | grep -i kvm
Задание 2. Управление образами дисков при помощи qemu-img.
Чтобы запускать виртуальные машины, QEMU требуются образы для хранения определенной файловой системы данной гостевой ОС. Такой образ сам по себе имеет тип некоторого файла, и он представляет всю гостевую файловую систему, расположенную в некотором виртуальном диске. QEMU поддерживает различные образы и предоставляет инструменты для создания и управления ими. Можно построить пустой образ диска с помощью утилиты qemu-img, которая должна быть установлена.
- Проверить какие типы образов поддерживаются qemu-img:
sudo qemu-img -h | grep Supported
- Создать образ qcow2 с названием system.qcow2 и размером 5 ГБ:
sudo qemu-img create -f qcow2 system.qcow2 5G
- Проверить что файл был создан:
ls -lah system.qcow2
- Посмотреть дополнительную информацию о данном образе:
sudo qemu-img info system.qcow2
Задание 3. Изменение размера образа.
Не все типы образов поддерживают изменение размера. Для изменения размера такого образа сначала нужно преобразовать его в образ raw с помощью команды qemu-img convert.
- Конвертировать образ диска из формата qcow2 в raw:
sudo qemu-img convert -f qcow2 -O raw system.qcow2 system.raw
- Добавить дополнительно 5 ГБ к образу:
sudo qemu-img resize -f raw system.raw +5G
- Проверить новый текущий размер образа:
sudo qemu-img info system.raw
- Конвертировать образ диска обратно из raw в qcow2:
sudo qemu-img convert -f raw -O qcow2 system.raw system.qcow2
Задание 4. Загрузка образа Cirros.
Для загрузки образов с общедоступных репозиториев требуется утилита curl. Загрузить необходимый образ, воспользовавшись curl:
curl -L https://s3.resds.ru/itt/openwrt.img -o /tmp/openwrt.raw
Задание 5. Создание виртуального окружения с помощью qemu-system.
- Для того чтобы подключиться к виртуальной машине по протоколу удаленного рабочего стола VNC, нужно открыть порт 5900. В группе безопасности
- Посмотреть ip адрес вашего сервера
ip address
- Запустить систему при помощи qemu-system:
sudo qemu-system-x86_64 -hda /tmp/openwrt.raw -m 1024 -vga cirrus -vnc 0.0.0.0:0
-
Установите и откройте программу (Remmina). И подключитесь по протоколу
VNC
к гипервизору -
Набрать команду uname -a. Посмотреть на версию ядра ОС. Выключить виртуальную машину, набрав
poweroff
Задание 6. Установка Libvirt и Virsh.
sudo apt install -y libvirt-daemon-system virtinst
Задание 7. Настройка моста.
Установить пакет bridge-utils:
sudo apt install -y bridge-utils
Вывести на экран имеющиеся интерфейсы:
ip -c address
Открыть файл /tmp/labnet.xml:
sudo vi /tmp/labnet.xml
И заполнить по примеру
<network>
<name>labnet</name>
<forward mode='nat'>
<nat>
<port start='1024' end='65535'/>
</nat>
</forward>
<bridge name='labnet' stp='on' delay='0'/>
<ip address='192.168.22.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.22.2' end='192.168.22.254'/>
</dhcp>
</ip>
</network>
Добавляем сеть и запускаем ее:
sudo virsh net-define /tmp/labnet.xml
sudo virsh net-start labnet
sudo virsh net-autostart labnet
Задание 8. Создание виртуальной машины.
Переместить образ openwrt в /var/lib/libvirt/images/
sudo mv /tmp/openwrt.raw /var/lib/libvirt/images/
Следующая команда создаст новую KVM виртуальную машину
sudo virt-install --name openwrt \
--ram 1024 \
--disk path=/var/lib/libvirt/images/openwrt.raw,cache=none \
--boot hd \
--vcpus 1 \
--network labnet \
--graphics vnc,listen=0.0.0.0 \
--wait 0
Символ \ - обратная косая черта используется для экранирования специальных символов в строковых и символьных литералах. В данном случае нужна, чтобы переместить каретку на новую строку, для наглядности. После ее добавления в команду можно нажать Enter, но строка не отправится на выполнение, а ввод команды продолжится. При ошибке в наборе команды, можно не набирать ее заново, а нажать стрелку вверх, исправить ее, и снова нажать Enter
Подробнее о параметрах:
Название параметра | Описание параметра |
---|---|
name | Имя виртуальной машины, которое будет отображаться в virsh |
ram | Размер оперативной памяти в МБ |
disk | Диск, который будет создан и подключен к виртуальной машине |
vcpus | Количество виртуальных процессоров, которые нужно будет настроить для гостя |
os-type | Тип операционной системы |
os-variant | Название операционной системы |
network | Определение сетевого интерфейса, который будет подключен к виртуальной машине |
graphics | Определяет графическую конфигурацию дисплея. |
cdrom | CD ROM устройство |
Далее необходимо подключиться к гипервизору через программу Remmina.
Открыть её (название - Remmina). Подключиться по адресу виртуальной машины, выбрав протокол VNC.Вернуться в консоль labnode-1. Проверить состояние гостевой системы, используя команду
(Если в консоли написано “Domain installation still in progress”, то нажмите ^C
):
sudo virsh list --all
Задание 9. Операции с виртуальной машиной.
Рассмотрим работу утилиты virsh. Чтобы подключиться к ВМ по протоколу удаленного доступа, используется следующая команда:
sudo virsh domdisplay openwrt
Результатом исполнения этой команды будет адрес для подключения к графическому интерфейсу ВМ, с указанием номера порта. Получить информацию о конкретной ВМ можно так:
sudo virsh dominfo openwrt
В результате чего будет выведена информация, об основных параметрах виртуальной машины. Выключить/включить ВМ можно с помощью команды:
sudo virsh destroy openwrt
sudo virsh start openwrt
Зайти в консоль виртуальной машиный можно с помощью команды:
sudo virsh console openwrt
Добавление ВМ в автозапуск происходит следующим образом:
sudo virsh autostart openwrt
Теперь, виртуальная машина будет автоматически запускаться, после перезагрузки сервера. Кроме того, может потребоваться отредактировать XML конфигурацию ВМ:
sudo virsh edit openwrt
Необходимо выгрузить конфигурацию ВМ в XML в файл, используя команду:
sudo virsh dumpxml openwrt | tee openwrt.xml
Необходимо удалить ВМ, и убедиться, что её нет в списке виртуальных машин:
sudo virsh undefine openwrt
sudo virsh destroy openwrt
sudo virsh list --all
Для создания ВМ из XML существует следующая команда:
sudo virsh define openwrt.xml
sudo virsh list --all
Ресайз диска
sudo qemu-img resize -f raw /var/lib/libvirt/images/openwrt.raw +1G
fdisk /dev/sda
BOOT="$(sed -n -e "/\s\/boot\s.*$/{s///p;q}" /etc/mtab)"
DISK="${BOOT%%[0-9]*}"
PART="$((${BOOT##*[^0-9]}+1))"
ROOT="${DISK}${PART}"
LOOP="$(losetup -f)"
losetup ${LOOP} ${ROOT}
fsck.ext4 -y -f ${LOOP}
resize2fs ${LOOP}
reboot