Kvm

From SysadminWiki.ru
Jump to: navigation, search

Установка

На Ubuntu 20.04 устанавливаем ряд пакетов:

sudo apt install qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virtinst virt-manager

где:

  • qemu -- базовое ПО для эмуляции аппаратного обеспечения
  • qemu-kvm -- модуль qemu для гипервизора KVM
  • libvirt-clients -- ПО для управления виртуализацией
  • libvirt-daemon-system -- файлы конфигурации для демона libvirtd
  • bridge-utils -- инструменты командной строки для настройки Ethernet мостов
  • virtinst -- инструменты командной строки для создания виртуальных машин
  • virt-manager -- графический интерфейс для управления виртуальными машинами


Управление из графического интерфейса (GUI)

Графический интерфейс предоставляет virt-manager, причём он может управлять как локальными ВМ, если установлен на гипервизор, так и удалёнными, если установлен на ПК администратора. Для удалённого подключения нужно в меню выбрать: Файл -- Добавить соединение... -- и указать к какому серверу (гипервизору) и каким пользователем нужно подключаться. Для быстрого подключения можно настроить SSH доступ без пароля.

Установка в Ubuntu:

sudo apt install virt-manager

Управление из консоли

Управление виртуальной машиной из консоли можно осуществлять с помощью команды virsh:

virsh list --all список всех виртуальных машин
virsh dominfo vm1 информация о машине vm1
virsh start vm1 включить
virsh shutdown vm1 послать сигнал завершения
virsh destroy vm1 принудительно завершить работу
virsh save vm1 file_name сохранить состояние в файл
virsh restore file_name восстановить состояние из файла (откатить изменения)


  • Список всех виртуальных машин и их дисков, то есть где располагаются реальные файлы виртуалок:
for i in $(virsh list --all | awk '{print $2}'); do echo -e "$i\n$(virsh dumpxml $i | grep file=)"; done

Если нужен список только работающих на данный момент виртуалок, то убираем параметр --all:

for i in $(virsh list | awk '{print $2}'); do echo -e "$i\n$(virsh dumpxml $i | grep file=)"; done

Проброс жёского диска (хранилища, носителя)

В графической среде

  • Открываем виртуальную машину: в Менеджере виртуальных машин щёлкаем правой клавишей на названию ВМ и в контекстном меню выбираем "Открыть".
  • Переходим к виртуальному оборудованию: синяя кнопка с восклицательным знаком на панели инструментов.
  • Добавляем оборудование: через правый щелчёк в списке оборудования
  • Выбираем тип: Хранилище -- Выбрать или создать... -- Настроить
  • Добавляем пул: слева внизу зелёный плюс
  • Тип: disk
  • Путь к источнику: /dev/md127 (указать нужное устройство или выбрать через Обзор)


В командной строке

Проброс реального жёсткого диска, массива (RAID) или любого носителя информации вообще из гипервизора в виртуальную машину (гостевую ОС) делается следующей командой:

virsh attach-disk vm_name /dev/disk vdX

где

  • vm_name -- имя гостевой ОС в гипервизоре; весь список видно по команде: virsh list --all
  • /dev/disk -- имя устройства (hdc, sdb, md0 и т.п.) в ОС гипервизора; весь список: ls /dev
  • vdX -- имя устройства в гостевой ОС; текущий список: ls /dev | grep vd

Например, чтобы пробросить из гипервизора массив[1] md127 и присвоить ему в виртальной машине ubuntu20-cloud имя vdb, выполняем:

virsh attach-disk ubuntu20-cloud /dev/md127 vdb

Проброс можно делать на лету, не выключая гостевую ОС. Проверить можно командой fdisk в гостевой ОС:

sudo fdisk -l | grep vd

Далее в гостевой ОС нужно смонтировать диск с помощью mount или добавить в fstab для автоматического подключения при старте системы. Если диск был с данными, то они будут сразу доступны, если же он ещё не отформатирован, то его можно разбивать и форматировать в гостевой ОС как обычный диск.


Сноски



См. также