Как добавить диск виртуальной машине kvm
Перейти к содержимому

Как добавить диск виртуальной машине kvm

  • автор:

Knowledge Base

Preserving for the future: Shell scripts, AoC, and more

Create, attach, detach disk to vm in kvm on command line

In kvm, let’s say you want to create a new disk and attach it to a virtual machine. You could use Virtual Machine Manager. But for the command line, here is a quick way how to do it.

Create a disk

Create a qcow2 disk that is fully allocated. When I tried with disks that were not fully allocated, the vm would only see the 200K or so and would not let me write a partition table large enough to do anything.

Attach a disk

You can omit the flags as needed, if you don’t want to update the virtual machine’s definition, or –config. And some of these are probably redundant, but they did not throw errors for me and I wanted the change to be immediate and persistent upon vm reboot, so I leave them all in.

Detach a disk

Same thing as the attaching, only you don’t include the –target flag.

Add physical disk to KVM virtual machine

I’m setting up a file server (nas4free) as a KVM virtual machine on a Ubuntu Server 12.04 system.

How do I add physical hard drives directly to the VM so they can be used by the guest (nas4free), but not the host?

Specifically the hard drive I’d like to mount is /dev/sda (which is not currently mounted on the server.)

So far I’ve found two solutions but I haven’t gotten either to work.

The first is from Server Fault where it’s suggested to use virt-manager. I haven’t gotent this to work because when I try to select an existing drive nothing is being listed. My best guess as to why this is, is because I’m using virt-manager over ssh and not connecting as root, should that make a difference?

The second solution I’ve found here is to just run the command (modified for my system)

but that seems to require proxmox which I don’t have installed and doesn’t seem to be in the default repositories?

Finally, once the above is sorted out and I can mount the drive directly to the VM, does anyone have an experience with whether the drive should be mounted to the VM as scsi, ide, or virtio? (I know virtio was recommend in the linked ServerFault page, but I hadn’t heard of it before now since I mainly use VMWare).

Управление виртуальными машинами KVM из консоли

В предыдущей статье мы рассмотрели установку гипервизора KVM и создание виртуальной машины. В рамках одной статьи, мы не смогли охватить все нюансы управления виртуальными машинами, а затронули лишь их часть. Сегодня, мы постараемся рассказать все об управлении виртуальными машинами из консоли сервера: как изменить параметры ВМ, добавить дополнительные устройства и рассмотрим основные команды, которые используются для администрирования виртуальных машин KVM.

Virsh: команды управления виртуальной машиной KVM

Просто веселое видео для отвлечения и расслабления в течение 2 минут

Первый вопрос, который возникает у начинающего администратора KVM: как увидеть созданные виртуальные машины, как остановить, запустить и удалить их. Для управления ВМ в KVM из консоли можно использовать утилиту virsh (использует libvirt API). С помощью утилиты virsh можно выполнить практически все операции с виртуальными машинами KVM.

# virsh list – показать список запущенных ВМ

# virsh list —all – показать список всех машин (в том числе выключенных)

Как видно из скриншота, в первом случае отключенная ВМ не была отображена.

# virsh shutdown <vm name> — выключить виртуальную машину

# virsh start <vm name> — запустить виртуальную машину

# virsh suspend <vm name> — приостановить виртуальную машину

# virsh resume <vm name> — запустить приостановленную виртуальную машину

# virsh reboot <vm name> — перезапустить виртуальную машину

# virsh destroy <vm name> — уничтожить виртуальную машину

# virsh undefine <vm name> — удалить машину из списка и удалить все файлы, принадлежащие ей (обычно применяется после выполнения команды virsh destroy).

# virsh vcpuinfo <vm name> — информация о процессоре на виртуальной машине

Еще несколько команд по получению различной информации о виртуальной машине:

# virsh domid <vm name> — получить идентификатор виртуальной машины

# virsh domuuid <vm name> — UUID виртуальной машины

# virsh dominfo <vm name> — получить сведения о виртуальной машине

# virsh domstate <vm name> — просмотр состояния виртуальной машины

# virsh dumpxml <vm name> — вывести файл конфигурации указанной виртуальной машины в XML формате

Добавление памяти и vCPU виртуальной машине KVM

В консоли KVM вы можете добавить или уменьшить ресурсы процессора и памяти, выделенные для ВМ двумя способами:

  • С помощью virsh
  • Через конфигурационный XML файл ВМ

Если виртуальная машина запущена, ее нужно остановить:

# virsh shutdown test-centos

Теперь с помощью virsh изменим количество виртуальных процессоров до 6 (vCPU):

# virsh setvcpus <vm name> <vcpu_count> —config

— количество ядер процессора

# virsh setvcpus test-centos 6 —config

Но при применении этой команды, у меня сразу же появилась ошибка:

Мы не можем установить количество ядер процессора, больше, чем максимальное количество. Чтобы увеличить максимальное количество ядер ВМ, выполните команду:

# virsh setvcpus test-centos 6 —config —maximum

Повторите первую команду и запустите виртуальную машину:

Проверим количество процессоров в настройках ВМ: овленное количество процессоров:

# virsh dumpxml test-centos

Аналогичным образом добавим память виртуальной машине:

# virsh setmem <vm_name> <memsize> —config

# virsh setmem test-centos 4G —config

Все по той же причине, сразу же вышла ошибка:

Увеличим максимальное значение памяти::

# virsh setmaxmem test-centos 6G —config

Теперь можно увеличить память ВМ.

Перед всеми изменениями не забывайте останавливать ВМ, а после запускать ее.

Также вы можете изменить ресурсы ВМ KVM через ее конфигурационный XML файл. Можно изменить файл в режиме онлайн или же сделав бэкап XML файла ВМ, изменить его и применить к виртуальной машине.

Отредактируем XML файл ВМ в онлайн режиме:

# virsh edit <vm_name>

В открывшемся редакторе vi внесите изменения, нажав кнопку “Insert”.

Например, зададим для ВМ 2 ядра и 1Гб памяти:

Сохраните изменения в файле и перезапустите ВМ:

# virsh reboot <vm_name>

Проверьте настройки ВМ:

Тоже самое можно сделать, сделав бэкап XML файла:

# virsh dumpxml <vm_name> > /root/test.xml
# vi /root/test.xml

Измените нужные вам параметры, сохраните файл и примените к виртуальной машине:

# virsh shutdown test-centos

# virsh define /root/test.xml

# virsh start test-centos

KVM: добавление диска в виртуальную машину

В одной из наших статей, мы описывали процесс расширения и уменьшения дисков виртуальных машин в KVM. Но мы не описывали вариант по добавлению дополнительного диска.

Сначала нужно создать дополнительный файл диска для виртуальной машины:

# qemu-img create -f qcow2 -o size=20G /vz/disk/test.img

Вместо qcow2 вы можете указать нужный формат диска, так же нужно указать путь до файла. У меня хранилище для дисков /vz/disk/.

После этого, можно добавить устройство виртуального диска к самой ВМ:

# virsh attach-disk <vm_name> /vz/disk/test.img vdb —type disk —persistent

Остановите и запустите ВМ, проверьте что получилось:

# virsh shutdown test-centos

# virsh start test-centos

# virsh dumpxml test-centos

Как видим, диск добавлен. После данных манипуляций, на виртуальной машине нужно разметить этот диск под ваши нужды.

KVM: добавление сетевой карты для виртуальной машины

Попрьуем добавить дополнительный сетевой интерфейс для ВМ. Сначала проверим, какие сетевые интерфейсы созданы на хосте:

У меня на KVM сервере создана одна виртуальная машина, с одним сетевым интерфейсом. К br0 нам нужно прикрепить еще один виртуальный сетевой интерфейс. Выполните команды:

# virsh shutdown test-centos
# virsh attach-interface test-centos —type bridge —source br0 —persistent
# virsh start test-centos

Проверьте, что у ВМ появился дополнительный сетевой интерфейс:

Также вы можете изменить сетевые настройки виртуальной машины напрямую через XML файл: # virsh edit test-centos

После первого сетевого интерфейса добавьте следующие строки:

Сохраните файл и запустите ВМ. Остальную конфигурацию, KVM добавит сам (mac address и тд).

В данной статье мы затронули основные моменты, которые могут вам понадобиться при управлении виртуальными машинами KVM из консоли Linux сервера. В следующей статье мы рассмотрим управление виртуальными машинами через графический менеджер virt-manager

Как добавить диск виртуальной машине kvm

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

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

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

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

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

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

Управление виртуальной машиной из консоли можно осуществлять с помощью команды 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 восстановить состояние из файла (откатить изменения)
  • Список всех виртуальных машин и их дисков, то есть где располагаются реальные файлы виртуалок:

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

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

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

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

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

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

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

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

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

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

Создание дополнительного диска

На гипервизоре в графической среде создаём новый диск аналогично пробросу существующего (см. выше), только вместо добавления пула можем выбрать уже имеющийся (но можно и создать новый), где будем хранить файл с виртуальным жёским диском, затем

  • Создаём диск, нажимая на зелёный плюс в «Списке томов»
  • Указываем название диска, его формат и размер и жмём Готово. Большие диски (больше терабайта) могут создаваться довольно долго (десятки секунд, а то и несколько минут).

На виртуальной машине проверяем, что диск появился:

vda 40G disk ├─vda1 512M vfat part /boot/efi ├─vda2 1K part └─vda5 39,5G ext4 part / vdb 3T disk

Так как мы создали новый диск (vdb), то его нужно отформатировать. Команда для файловой системы ext4:

Узнаём его UUID:

/dev/vda5: UUID=»77d3f8bf-d366-4c36-b992-445c8451536b» TYPE=»ext4″ PARTUUID=»09b1ab8e-05″ /dev/vda1: UUID=»DA46-6D03″ TYPE=»vfat» PARTUUID=»09b1ab8e-01″ /dev/vdb: UUID TYPE=»ext4″

Создаём каталог, куда будем подключать (монтировать) диск:

sudo chmod 777 /mnt/NextCloudData

В автозагрузку (fstab) подключение диска при запуске ОС с помощью mcedit или любого другого редактора, но с правами администратора:

добавляем следующую строку (заменив UUID и каталог подключения на свои):

Проверяем список текущих подключений:

/dev/vda5 on / type ext4 (rw,relatime,errors=remount-ro) /dev/vda1 on /boot/efi type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)

Подключаем заново устройства из fstab:

и смотрим список ещё раз:

/dev/vda5 on / type ext4 (rw,relatime,errors=remount-ro) /dev/vda1 on /boot/efi type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro) /dev/vdb on /mnt/NextCloudData type ext4 (rw,nosuid,nodev,noexec,relatime)

/dev/vda5 39G 9,6G 28G 27% / /dev/vda1 511M 4,0K 511M 1% /boot/efi /dev/vdb 2,9T 89M 2,8T 1% /mnt/NextCloudData

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

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