Как добавить образ диска в виртуальную машину KVM с помощью команды virsh
![]()
Как добавить дополнительное дисковое хранилище в гостевую ОС на виртуальную машину KVM с командой virsh в операционной системе Linux?
Вы можете легко добавить дополнительные жесткие диски в KVM домене/виртуальной машине, чтобы получить увеличенное пространство для хранения данных гостя. В этом учебном пособии показано, как добавить дополнительное дисковое хранилище в виртуальную машину KVM, используя опцию командной строки virsh в Linux.
Ниже приведены шаги по добавлению файлового хранилища (образа диска) в виртуальную машину с помощью команды virsh в Linux:
Шаг 1 – Создайте новый образ диска
Введите следующую команду на хосте KVM для создания нового образа диска под названием ubuntu-box1-vm-disk1-5G с размером 5G:
$ cd /var/lib/libvirt/images/ $ sudo qemu-img create -f raw ubuntu-box1-vm-disk1-5G 5G [sudo] password for vivek: Formatting 'ubuntu-box1-vm-disk1-5G', fmt=raw size=5368709120
Или вы можете использовать команду dd для создания предварительно выделенного файла, для этого выполните:
$ sudo dd if=/dev/zero of=ubuntu-box1-vm-disk1-5G bs=1M count=5120 status=progress 5192548352 bytes (5.2 GB, 4.8 GiB) copied, 10.5212 s, 494 MB/s 5120+0 records in 5120+0 records out 5368709120 bytes (5.4 GB, 5.0 GiB) copied, 10.9421 s, 491 MB/s
Вы только что создали команду qemu-img или dd для создания нового необработанного образа диска размером 5 ГБ. Образ диска называется ubuntu-box1-vm-disk1-5G :
$ sudo ls –lh
Примеры возможных выводов данных:
total 17G -rw------- 1 libvirt-qemu kvm 41G Feb 17 15:41 freebsd11.qcow2 -rw------- 1 libvirt-qemu kvm 3.1G Feb 17 15:33 ubuntu-box-1-clone.qcow2 -rw------- 1 libvirt-qemu kvm 41G Feb 17 15:34 ubuntu-box-1.qcow2 -rw-r--r-- 1 root root 5.0G Feb 17 15:42 ubuntu-box1-vm-disk1-5G
Некоторые замечания относительно формата qcow2
Формат образа необработанного диска выставлен по умолчанию. Преимущество этого формата заключается в простоте и легкости экспорта для всех других эмуляторов. Однако, формат изображения QEMU (qcow2) — самый универсальный формат. Если вам нужно сделать снимки виртуальной машины или выпонить AES-шифрование. Попробуйте формат qcow2. Синтаксис будет выглядеть следующим образом.
$ sudo qemu-img create -f qcow2 ubuntu-box2-vm-disk1-5G 5G
Шаг 2 – Прикрепите диск к виртуальной машине
Прежде чем присоединить диск к вашей виртуальной машине, узнайте имя текущего диска. Войдите в вашу виртуальную машину и введите следующую команду:
$ sudo fdisk -l | grep '^Disk /dev/vd[a-z]'
Примеры возможных выводов данных:
Disk /dev/vda: 40 GiB, 42949672960 bytes, 83886080 sectors
Таким образом, моя виртуальная машина имеет /dev/vda с размером 40 ГБ. Чтобы подключить вновь созданный образ ubuntu-box1-vm-disk1-5G , вы должны использовать /dev/vdb . Если у вас уже есть диск /dev/vdb , вам нужно изменить vdb на свободное устройство, например /dev vdc , и так далее. Чтобы прикрепить диск к виртуальной машине, под названием ubuntu-box1 используйте следующий синтаксис.
# virsh attach-disk /var/lib/libvirt/images/ vdb --cache none
# virsh attach-disk \ --source /var/lib/libvirt/images/ \ --target vdb \ --persistent
Например, прикрепите образ диска ‘/var/lib/libvirt/images/ubuntu-box1-vm-disk1-5G’ в качестве виртуального диска к виртуальной машине/домену с именем «ubuntu-box1» и обновите XML-файл домена для нового диска (введите команду на хосте):
$ sudo virsh attach-disk ubuntu-box1 /var/lib/libvirt/images/ubuntu-box1-vm-disk1-5G vdb --cache none
Примеры возможных выводов данных:
[sudo] password for vivek: Disk attached successfully
Будьте Осторожны : С помощью всего нескольких нажатий клавиш fdisk может уничтожить часть или весь ваш жесткий диск или рабочий раздел. Убедитесь, что вы используете правильные имена устройств с помощью команды fdisk.
Шаг 3 – Разбиение диска на виртуальной машине
Теперь у гостя с именем «ubuntu-box1» есть устройство на жестком диске, называемое /dev/vdb . Зайдите в вашу виртуальную машину и введите следующую команду для проверки того же самого:
$ sudo fdisk -l | grep '^Disk /dev/vd[a-z]'
Примеры возможных выводов данных:
Disk /dev/vda: 40 GiB, 42949672960 bytes, 83886080 sectors Disk /dev/vdb: 5 GiB, 5368709120 bytes, 10485760 sectors
Затем запустите fdisk для нового устройства:
$ sudo fdisk /dev/vdb
Введите n для нового раздела. Введите p для основного раздела. Выберите номер доступного раздела 1. Введите первый цилиндр по умолчанию, нажав Enter. Выбрать весь диск можно, нажав Enter. Наконец, введите p для проверки нового раздела. Введите w, чтобы записать изменения и выйти. Пример сеанса из команды fdisk.

Чтобы отформатировать новый раздел с файловой системой ext4, введите:
$ sudo mkfs.ext4 /dev/vdb1
Примеры возможных выводов данных:

Наконец, вам нужно создать монтируемую директорию:
$ sudo mkdir /disk2/
И смонтируйте диск для гостя:
$ sudo mount /dev/vdb1 /disk2/
Отредактируйте файл /etc/fstab
$ sudo vi /etc/fstab
И обновите его следующим образом, чтобы /dev/vdb1 постоянно монтировались после перезагрузки:
/dev/vdb1 /disk2 ext4 defaults 0 0
Сохраните и закройте файл. Теперь у вас есть гостевая виртуальная машина, которая имеет дополнительное виртуализированное файловое хранилище в системе на базе KVM Linux.
- Установка и настройка Apache, PHP, MySQL, phpMyAdmin на Linux (LAMP)
- Установка и настройка сервера Apache, PHP, MySQL, phpMyAdmin на Windows 10
- Установка Adobe Photoshop CS6 на Linux (очень простой способ)
Как в KVM увеличить диск виртуальной машины
В KVM увеличить диск можно через qemu-img resize при работающей виртуальной машине, но для сведения к минимуму вероятности сбоев лучше машину выключать.
Все действия выполняются с помощью virsh на гипервизоре, на котором запущена машина — в хост системе.
Как в KVM увеличить диск
Вывести список запущенных виртуальных машин
Показать список пулов в которых находятся диски виртуальных машин
Вывести список дисков, находящихся в определенном пуле, в примере это kvm_storagepool
Результатом выполнения команды будет путь к файлу на диске*.
В случае если файлы дисков-образов хранятся локально, не используется какая-то распределенная система хранения.
Пример вывода на скриншоте:

Имена образов обычно согласуются с именами виртуальных машин, которые можно посмотреть выполнив команду virsh list
Подробная информация по образу виртуальной машины на диске
virsh vol-info /var/lib/librirt/images/vm1-os.qcow2
Чтобы увеличить диск KVM используем qemu-img resize, укажем путь к файлу диска и необходимое значение размера. В примере это 1 Гигабайт.
qemu-img resize /var/lib/librirt/images/vm1-os.qcow2 +1G
После этого внутри виртуальной машины нужно расширить файловую систему до нового размера (используются утилиты resizefs, growpart).
Уменьшение диска виртуальной машины KVM
Уменьшение обычно выполняется по другому. Также через resizefs нужно уменьшить объем файловой системы, при уменьшении диска эта операция выполняется первой.
Затем чтобы не потерять данные (если для нового диска задан меньший объем, чем тот, что занят) информацию копируют на новый диск. Процесс копирования данных в новую виртуальную машины с другим объемом диска можно автоматизировать.
Затем на основе нового диска создается новая виртуальная машина.
Импорт виртуальных машин
Возможны следующие варианты импортирования виртуальных машин:
- импорт из сервера с VMmanager KVM/Cloud;
- импорт из сервера с libvirt;
- импорт из сервера с VDSmanager-KVM;
- импорт виртуальных машин, работающих с помощью другого гипервизора (не KVM).
Импорт удаленных машин из сервера с VMmanager KVM/Cloud или из сервера с libvirt
Для импорта нажмите Импорт → Импорт VM → Добавить.

Укажите:
- IP — IP-адрес сервера;
- Есть пароль для пользователя — опция авторизации с помощью пароля пользователя;
- Имя пользователя ssh;
- Пароль — пароль пользователя ssh. Поле доступно только при включении опции Есть пароль для пользователя;
- Порт ssh;
- Тип подключаемого сервера:
- Импорт из libvirt;
- Импорт из другого VMmanager KVM.
При успешном подключении к серверу и получении информации о виртуальных машинах сервер добавляется в список в Импорт → Импорт VM.

Нажмите Импорт → Импорт VM → Список VM для просмотра виртуальных машин, которые можно импортировать. Для запуска импорта выбранных виртуальных машин нажмите Начать импорт.
- Узел кластера — сервер для импорта. По умолчанию — Автоматический выбор — выбирается наиболее подходящий узел кластера. Подробнее об алгоритме выбора см. статью Настройка распределения виртуальных машин по узлам кластера;
- Импортировать владельца — опция импорта пользователя, которому принадлежит виртуальная машина;
- Хранилище — при импорте проверяется наличие хранилища с таким же названием, как и на сервере-источнике. Если в VMmanager хранилище с таким названием не добавлено, то виртуальный диск виртуальной машины копируется в хранилище, которое указано в данном поле. При импорте виртуальной машины из сетевого хранилища наименование хранилища-приёмника должно отличаться. Нельзя импортировать виртуальную машину, если её виртуальный диск расположен в сетевом хранилище, которое подключено как к серверу-источнику, так и к серверу-приёмнику;
- Отключить проверку хранилища — опция отключения проверки наличия хранилища, совпадающего с хранилищем импортируемой виртуальной машины. Т.е. при включении опции виртуальный диск копируется в хранилище, указанное в поле Хранилище. Обязательно включите опцию, если виртуальный диск копируется из сетевого хранилища;
- Сеть по умолчанию — импортированная виртуальная машина подключается к сети с таким же названием, как и на сервере-источнике. Если в VMmanager сеть с таким названием не добавлена, то виртуальная машина подключается к сети по умолчанию, которая указана в данном поле;
- Новое доменное имя — опция указания нового доменного имени виртуальной машины;
- Домен — новое доменное имя. Поле доступно только при включении опции Новое доменное имя;
- Выбрать новый IP — опция указания нового IP-адреса виртуальной машины;
- Тип IP-адреса — поле доступно только при включении опции Выбрать новый IP:
- Публичный — с доступом из сети Internet;
- Приватный — без доступа из сети Internet;
- NAT — для использования с сетями NAT.
Обратите внимание! После импорта на интерфейсе виртуальной машины смените старый IP-адрес на новый вручную.
Условия, необходимые для импорта:
- Наличие достаточного количества свободных ресурсов на узлах кластера.
- Если VMmanager-источник настроен на интеграцию с IPmanager, то VMmanager-приёмник также должен быть настроен на интеграцию с тем же IPmanager.
Блок настроек IP-адреса недоступен при одновременном импорте нескольких виртуальных машин.
При импорте виртуальная машина приостанавливается, удаляются все снимки виртуальной машины.
После импорта виртуальная машина на сервере-источнике останавливается, но не удаляется. При её удалении IP-адрес не освобождается в IPmanager.
Импорт из сервера с VDSmanager-KVM
Для импорта нажмите Импорт → Импорт VDS → Добавить.

- Есть пароль для root — опция авторизации с помощью пароля пользователя root;
- Пароль — пароль пользователя root. Поле доступно только при включении опции Есть пароль для root;
- IP — адрес сервера;
- Наименование.
При успешном подключении к серверу и получении информации о виртуальных машинах сервер добавляется в список в Импорт → Импорт VDS.
Нажмите Импорт → Импорт VDS → Список VDS для просмотра виртуальных машин, которые можно импортировать. Для запуска импорта выбранных виртуальных машин нажмите Импорт.
При импорте виртуальная машина приостанавливается, удаляются все снимки виртуальной машины.
После импорта VDS на сервере-источнике останавливается, но не удаляется.
Условия, необходимые для импорта:
- Наличие достаточного количества свободных ресурсов на узлах кластера.
- Если VDSmanager настроен на интеграцию с IPmanager, то VMmanager так же должен быть настроен на интеграцию с тем же IPmanager.
- VDSmanager должен работать с виртуализацией KVM.
Импорт виртуальных машин, созданных при помощи другого гипервизора (не KVM)
Импорт виртуальной машины в кластер под управлением VMmanager заключается в создании аналогичной виртуальной машины и подключении к ней виртуального диска импортируемой виртуальной машины.
Алгоритм импорта виртуальной машины в кластер под управлением VMmanager:
- Конвертация виртуального диска импортируемой виртуальной машины в формат, поддерживаемый VMmanager.
- Определение конфигурации импортируемой виртуальной машины.
- Создание виртуальной машины в VMmanager c конфигурацией, аналогичной импортируемой виртуальной машине.
- Остановка созданной виртуальной машины в VMmanager.
- Подмена виртуального диска созданной виртуальной машины на диск импортируемой виртуальной машины.
- Включение виртуальной машины в VMmanager и проверка работоспособности.
Конвертация виртуального диска импортируемой виртуальной машины в формат, поддерживаемый VMmanager
VMmanager поддерживает форматы виртуальных дисков RAW и Qcow2. Подробнее см. статью Форматы виртуальных дисков.
Для конвертации рекомендуется использовать утилиту virt-v2v. Подробнее об утилите см. статью Конвертация виртуальных дисков в формат, поддерживаемый VMmanager.
Определение конфигурации импортируемой виртуальной машины
Необходима следующая информация об импортируемой виртуальной машине:
- ресурсы виртуальной машины (vCPU, оперативная память, дисковое пространство);
- расположение виртуального диска.
VMmanager для управления виртуализацией использует libvirt. В libvirt виртуальные машины хранятся в виде XML-описаний. Из такого описания можно получить всю необходимую информацию о виртуальной машине.
Подробнее об XML-описании виртуальных машин см. статью Управление виртуализацией с помощью libvirt.
Способ получения информации об импортируемой виртуальной машине зависит от способа, с помощью которого виртуальная машина была создана.
Создание виртуальной машины в VMmanager с конфигурацией, аналогичной импортируемой виртуальной машине
В панели управления необходимо создать виртуальную машину, аналогичную импортируемой. Для этого необходимо вручную указать все настройки создаваемой виртуальной машины.
Остановка созданной виртуальной машины в VMmanager
Необходимо изменить статус виртуальной машины с «Запущена» на «Остановлена» с помощью панели управления.
Подмена виртуального диска созданной виртуальной машины на диск импортируемой виртуальной машины
Виртуальный диск созданной в панели виртуальной машины и сконвертированный виртуальный диск импортируемой виртуальной машины должны иметь одинаковый формат — RAW или Qcow2.
Необходимо скопировать сконвертированный виртуальный диск импортируемой виртуальной машины и заменить им виртуальный диск виртуальной машины, созданной с помощью панели управления. Хранилище виртуального диска виртуальной машины, созданной с помощью панели, указывалось в процессе создания виртуальной машины. Виртуальный диск имеет то же наименование, что и сама виртуальная машина.
Включение виртуальной машины и проверка работоспособности
Необходимо изменить статус виртуальной машины с «Остановлена» на «Запущена» с помощью панели управления.
Возможные ошибки
- Ошибка следующего вида:
qemu-kvm: -drive file=/vm/vm2,if=none,id=drive-virtio-disk0,format=qcow2: could not open disk image /vm/vm2: Invalid argumentКак правило, данная ошибка означает, что формат виртуальных дисков виртуальных машин не совпадает. Необходимо пересоздать виртуальную машину с помощью панели управления, указав верный формат виртуального диска либо сконвертировать виртуальный диск импортируемой машины в подходящий формат.
Как «подключить» к виртуалке на qemu/kvm два виртуальных диска .qcow2 ? Virtual Machine Manager
Есть вм с убунту на qemu/kvm. Использую Virtual Machine Manager. Есть виртуальный диск с осью: ubuntu.qcow2 .Если я создам еще один диск (qcow2), но пустой, то как мне сделать так, чтобы виртуальная ubuntu его видела? Ну то есть к настоящему компу я могу подключить несколько дисков, то как я могу так же подключить к вм несколько виртуальных дисков?
Отслеживать
задан 11 сен 2020 в 13:03
USERNAME GOES HERE USERNAME GOES HERE
10.4k 21 21 золотой знак 25 25 серебряных знаков 53 53 бронзовых знакаru.wikipedia.org/wiki/Qcow2 с той разницей, что после partprobe распознанные разделы надо просунуть в виртуальную машину и их там смонтировать.
11 сен 2020 в 14:49
@AlexanderProkoshev Можете пожалуйста дать полный ответ?
11 сен 2020 в 14:51Это надо QEMU ставить, какие-то образы создавать, пилить и убеждаться по шагам, что всё работает. А у вас, я так смекаю, всё уже готово 🙂