Как расширить/увеличить размер диска виртуальной машины KVM (VM)

Как я могу расширить / увеличить / увеличить виртуальный диск в KVM? Я лично использую KVM для всех проектов по виртуализации Linux. Иногда мне нужно расширить или добавить дисковое пространство для моей работающей виртуальной машины (гостевой), чтобы удовлетворить растущие требования к программному обеспечению. KVM использует QEMU, который поддерживает несколько типов изображений, среди которых raw, cow, qcow, qcow2, vmdk, vdi и т.д.

«Собственный» и наиболее гибкий тип - это qcow2, который поддерживает копирование при записи, шифрование, сжатие и снимки виртуальной машины.

Шаг 1: выключить виртуальную машину

Прежде чем вы сможете расширить виртуальный диск вашей гостевой машины, вы должны сначала выключить его.
$ sudo virsh list
 Id   Name    State
-----------------------
 4    rhel8   running
Если ваш гостевой компьютер находится в рабочем состоянии, выключите его, используя его идентификатор или имя.
$ sudo virsh shutdown rhel8
Domain rhel8 is being shutdown
Прежде чем приступить к управлению дисками, убедитесь, что он действительно отключен.
$  sudo virsh list          
 Id   Name   State
--------------------

Шаг 2: Расширение диска гостевой ОС

Найдите путь к вашей гостевой ОС.
$ sudo virsh domblklist rhel8
 Target   Source
-----------------------------------------------
 vda      /var/lib/libvirt/images/rhel8.qcow2
 sda      -

OR use:

$ sudo virsh dumpxml rhel8 | egrep 'disk type' -A 5
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/lib/libvirt/images/rhel8.qcow2'/>
      <backingStore/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
--
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <target dev='sda' bus='sata'/>
      <readonly/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
Вы можете получить ту же информацию из GUI Virtual Machine Manager . Мой виртуальный диск находится в ‘/var/lib/libvirt/images/rhel8.qcow2‘.
$ sudo qemu-img info /var/lib/libvirt/images/rhel8.qcow2
image: /var/lib/libvirt/images/rhel8.qcow2
file format: qcow2
virtual size: 30G (42949672960 bytes)
disk size: 2.0G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: true
    refcount bits: 16
    corrupt: false

Шаг 3: Расширение гостевой виртуальной машины

Так как мы знаем местоположение диска нашей виртуальной машины, давайте расширим его до желаемой емкости.
sudo qemu-img resize /var/lib/libvirt/images/rhel8.qcow2 +10G
Обратите внимание, что qemu-img не может изменить размер изображения со снимками. Сначала вам нужно будет удалить все снимки виртуальных машин. Смотрите этот пример:
$ sudo virsh snapshot-list rhel8
 Name        Creation Time               State
--------------------------------------------------
 snapshot1   2019-04-16 08:54:24 +0300   shutoff

$ sudo virsh snapshot-delete --domain rhel8 --snapshotname snapshot1
Domain snapshot snapshot1 deleted

$ sudo virsh snapshot-list rhel8                                    
 Name   Creation Time   State
-------------------------------
Затем расширите диск, используя ` + 'перед объемом диска
$ sudo qemu-img resize /var/lib/libvirt/images/rhel8.qcow2 +10G
Image resized.
Вы также можете изменить размер с помощью команды virsh. Это требует, чтобы домен был запущен..
$ sudo qemu-img info /var/lib/libvirt/images/rhel8.qcow2
image: /var/lib/libvirt/images/rhel8.qcow2
file format: qcow2
virtual size: 30G (42949672960 bytes)
disk size: 2.0G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: true
refcount bits: 16
corrupt: false

$ sudo virsh start rhel8
$ sudo virsh blockresize rhel8 /var/lib/libvirt/images/rhel8.qcow2 40G
Block device '/var/lib/libvirt/images/rhel8.qcow2' is resized
Подтвердите размер диска с помощью команды fdisk.
$ sudo fdisk -l /var/lib/libvirt/images/rhel8.qcow2      
Disk /var/lib/libvirt/images/rhel8.qcow2: 30.2 GiB, 32399818752 bytes, 63280896 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Шаг 4: Расширить раздел VM

Теперь включите виртуальную машину
$ sudo virsh start rhel8
Domain rhel8 started
SSH к вашей виртуальной машине от имени пользователя root или от имени пользователя sudo.
$ ssh rhel8             
Last login: Fri Apr 19 06:11:19 2019 from 192.168.122.1
[[email protected] ~]$ 
Проверьте новую разметку диска.
$ lsblk 
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0            11:0    1 1024M  0 rom  
vda           252:0    0   40G  0 disk 
├─vda1        252:1    0    1G  0 part /boot
└─vda2        252:2    0   29G  0 part 
├─rhel-root 253:0    0 26.9G  0 lvm  /
└─rhel-swap 253:1    0  2.1G  0 lvm  [SWAP]
Общая емкость моей виртуальной машины сейчас 40GBсоставляет 30 ГБ . Чтобы расширить раздел ОС, обратитесь к руководствам ниже.

Изменение размера виртуального диска KVM/QEMU/VirtualBox
При необходимости расширения размера виртуального диска в формате qcow2,
используемом в системах виртуализации  KVM и QEMU, можно обойтись без
клонирования и создания нового образа.

Завершаем работу виртуальной машины, связанной с изменяемым дисковым образом.

Увеличиваем размер образа. В случае использования KVM/QEMU:
qemu-img resize vm.qcow2 +5GB

В случае использования VirtualBox, потребуется дополнительный шаг с
промежуточным преобразованием VDI в qcow2 или raw-формат:

   qemu-img convert -f vdi -O qcow2 vm.vdi vm.qcow2
   qemu-img resize vm.qcow2 +5G
   qemu-img convert -f qcow2 -O vdi vm.qcow2 vm.vdi

Другой вариант с использованием штатной утилиты VBoxManage:

   VBoxManage internalcommands converttoraw vm.vdi vm.raw
   qemu-img resize vm.raw +5G
   VBoxManage convertfromraw --format VDI --variant Standard vm.raw  vm.vdi

Также можно создать новый большой VDI-раздел и клонировать в него старое содержимое:

   VBoxManage clonehd --existing old.vdi new.vdi


Для задействования появившегося свободного пространства, необходимо расширить
размер связанной с дисковым образом файловой системы. Для расширения ФС проще
всего воспользоваться приложением gparted.
Скачиваем из сети Live-дистрибутив Parted Magic или SystemRescueCd.
Загружаем Live-дистрибутив в новой виртуальной машине, не забыв присоединить к
ней изменяемый дисковый образ.
После загрузки запускаем gparted, выбираем виртуальный диск и видим в хвосте
нераспределенную область. Кликаем правой кнопкой мыши на имеющейся ФС и
выбираем "Resize/Move", следуя дальнейшим подсказкам в интерфейсе.

После завершения расширения размера, загружаем изначальную виртуальную машину и
запускаем утилиту fsck для проверки раздела, размер которого был изменен:

   sudo fsck /dev/sda1

Комментарии

Отправить комментарий

Популярные сообщения из этого блога

Права на папки и файлы (unix/chmod)

Автоматическое монтирование дисков и разделов в Linux или что такое fstab? Проблема Debian

Как подключить сетевой диск Windows в Linux