Гид по технологиям

Как изменить размер диска KVM: увеличение и уменьшение

5 min read Виртуализация Обновлено 16 Dec 2025
Изменение размера диска KVM — гайд
Изменение размера диска KVM — гайд

Быстрые ссылки

  • Shut Down Your VM

  • Find The Disk’s Location

  • Delete VM Snapshots

  • Resizing the Disk

  • Extending the Disk’s Partitions

  • Downsizing a Disk

  • Summary

Фото внутренностей жёстких дисков

Введение

KVM — это технология виртуализации, встроенная в ядро Linux. Вы можете создавать виртуальные машины и управлять ими с помощью инструментов virsh, virt-manager и GNOME Boxes. Одной из частых проблем гостевых VM является нехватка места на диске. Этот материал объясняет, как изменить размер диска в месте (in-place) без необходимости копировать данные на отдельный накопитель.

Короткое определение: QCOW2 — формат образа диска QEMU/KVM, поддерживающий сжатие, снапшоты и расширение.

Требования и подготовка перед началом

  • Доступ к хосту с правами sudo.
  • Установленные утилиты: qemu-img, libvirt (virsh).
  • Резервная копия образа перед операциями по уменьшению.
  • VM должна быть выключена для изменения образа.

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

Остановка виртуальной машины

Начните с выключения виртуальной машины. Это можно сделать из гостевой ОС, через интерфейс управления или командой virsh:

virsh shutdown

Пример последовательности команд и вывода:

$ sudo virsh list

Id Name State

------------------------------

- ubuntu22.04 running

$ sudo virsh shutdown ubuntu22.04

Domain ubuntu22.04 is being shutdown

Дождитесь полной остановки VM — она исчезнет из вывода virsh list. Чтобы увидеть также неактивные VM, используйте флаг --all:

$ sudo virsh list --all

Id Name State

------------------------------

- ubuntu22.04 shut off

Как найти файл образа диска

Каждой VM соответствует файл образа диска. Чаще всего современные VM используют QCOW2 и хранятся в каталоге /var/lib/libvirt/images. Имя файла обычно совпадает с именем VM.

Проверьте путь командой virsh domblklist:

$ sudo virsh domblklist ubuntu22.04
Target Source

-----------------------------------------------------

sdb /var/lib/libvirt/images/ubuntu22.04.qcow2

В этом примере файл для изменения — /var/lib/libvirt/images/ubuntu22.04.qcow2.

Удаление снимков (snapshots)

Снапшоты блокируют изменение образа. Если на образ ссылались снапшоты, их нужно удалить или сначала клонировать VM, чтобы сохранить состояния.

Проверка списка снапшотов:

$ virsh snapshot-list ubuntu22.04
Name Creation Time State

---------------------------------------------------

13-09-2022 2022-09-13 22:36:41 +0100 shutoff

Удаление снапшота (пример):

$ virsh snapshot-delete ubuntu22.04 13-09-2022

Если нужны снапшоты для аудита или восстановления, сначала выполните virsh dumpxml и/или создайте клон VM.

Увеличение диска

Команда qemu-img используется для изменения размера файла образа. Аргументы: путь к файлу и размер (абсолютный или относительный).

Пример увеличения на 16 ГБ:

$ sudo qemu-img resize /var/lib/libvirt/images/ubuntu22.04.qcow2 +16G

Пояснения:

  • +16G — добавить 16 гигабайт к текущему размеру.
  • Можно использовать суффиксы M, G, T (мегабайты, гигабайты, терабайты).
  • Указание размера без + задаёт абсолютный итоговый размер, например 1T.

Операция обычно занимает секунды, но фактический эффект на хосте может зависеть от формата образа (например, QCOW2 ведёт себя по‑особенному при аллокации).

Важно: если образ разрежён (sparse) или использует снимки, реальное занятие места на хосте может не вырасти мгновенно.

Расширение разделов внутри гостя

После изменения размера файла образа нужно загрузить гостя и расширить таблицу разделов и файловую систему, чтобы ОС увидела новое пространство.

Для Linux (ext4, ext3 и т. п.) часто достаточно resize2fs:

$ sudo resize2fs /dev/sda

Найдите нужное устройство по выводу df -h:

$ df -h

Filesystem Size Used Avail Use% Mounted on

/dev/sda 32G 17G 15G 53% /

Если разделы нужно сдвинуть или расширить более гибко, используйте GParted или GNOME Disks в графике.

Пример: после добавления 16 GB, GParted показывает незанятое пространство в конце диска; расширьте системный раздел через “Resize/Move” и примените изменения.

Скриншот разделов в GParted, показывающий незанятое пространство

Скриншот GParted после расширения системного раздела

Для Windows используйте встроенную «Управление дисками» (Disk Management) или уменьшите/расширьте разделы через соответствующие средства.

Уменьшение диска (downsizing)

Уменьшение образа возможно, но рискованно. Обязательно сделайте резервную копию файла образа перед началом:

$ sudo cp /var/lib/libvirt/images/ubuntu22.04.qcow2 ubuntu22.04.qcow2.bak

Порядок действий при уменьшении:

  1. Внутри гостя уменьшите размер файловой системы и разделов так, чтобы в конце диска появилось достаточное незанятое пространство (например, для уменьшения с 32G до 20G оставьте минимум 12G в конце).
  2. Выключите VM.
  3. Выполните qemu-img resize --shrink с нужным параметром.

Пример уменьшения на 8 ГБ:

$ qemu-img resize --shrink /var/lib/libvirt/images/win10.qcow2 -8G

Флаг --shrink необходим, чтобы разрешить уменьшение. Без него операция не будет выполнена.

Важно: если у вас не осталось достаточно незанятого пространства в конце диска, уменьшение удалит данные с конца и повредит разделы — VM может стать неработоспособной.

Скриншот утилиты управления дисками Windows с незанятым пространством в конце

Скриншот Windows Disk Management после уменьшения образа

Пошаговый playbook (SOP)

  1. Проверить текущее состояние и использовать virsh list --all.
  2. Создать резервную копию образа (особенно перед уменьшением).
  3. Проверить наличие снапшотов: virsh snapshot-list .
  4. Удалить или сохранить снапшоты (клонирование) при необходимости.
  5. Выключить VM: virsh shutdown .
  6. Найти образ: virsh domblklist .
  7. Выполнить qemu-img resize (+ или абсолютный размер), или с --shrink при уменьшении.
  8. Запустить VM и через гостевую ОС расширить или уменьшить разделы (GParted, resize2fs, Disk Management).
  9. Протестировать загрузку и целостность данных.

Риски и меры смягчения

  • Риск: потеря данных при уменьшении. Митигирование: резервная копия, проверка свободного пространства внутри гостя.
  • Риск: снапшоты блокируют изменение. Митигирование: удалить снапшоты или клонировать VM.
  • Риск: несовместимость формата образа. Митигирование: проверить qemu-img info и конвертировать при необходимости.

Чек‑лист ролей

Администратор (host):

  • Проверил список VM и их состояния.
  • Сделал резервную копию образа.
  • Убедился, что снапшоты удалены или клонированы.
  • Выполнил qemu-img resize.

Оператор (guest):

  • Подготовил файловую систему для изменения (уменьшение или проверка целостности).
  • После загрузки расширил раздел и файловую систему.
  • Проверил лог загрузки и состояние приложений.

Таблица принятия решений (Mermaid)

flowchart TD
  A[Проблема: мало места] --> B{Есть снапшоты?}
  B -- Да --> C[Удалить или клонировать VM]
  B -- Нет --> D{Нужно увеличить или уменьшить?}
  D -- Увеличить --> E[Выключить VM -> qemu-img resize +X -> Запустить VM -> Расширить раздел]
  D -- Уменьшить --> F[Подготовить разделы внутри гостя -> Выключить VM -> qemu-img resize --shrink -> Запустить VM и проверить]
  C --> D

Полезные команды (cheat sheet)

  • Список активных VM: sudo virsh list
  • Показать все VM: sudo virsh list --all
  • Список блоков/образов VM: sudo virsh domblklist
  • Список снапшотов: virsh snapshot-list
  • Удаление снапшота: virsh snapshot-delete
  • Изменение размера: sudo qemu-img resize +16G или sudo qemu-img resize 100G
  • Уменьшение: qemu-img resize --shrink -8G
  • Информация об образе: qemu-img info

Критерии приёмки

  • Образ изменил размер без ошибок на хосте.
  • Гость успешно загрузился после операции.
  • Файловая система внутри гостя использует добавленное пространство (проверить df -h).
  • Для уменьшения — данные не потеряны и система корректно функционирует.

Отладка и частые ошибки

  • Ошибка: “has snapshots” — решение: удалить снапшоты или клонировать VM.
  • Ошибка: нехватка места на хосте после qemu-img resize — проверить формат и плотность аллокации (qcow2 может занимать место по мере записи).
  • После уменьшения VM не загружается — вернуть резервную копию и проверить правильность подготовки разделов.

Краткое резюме

  • Изменение размера образа KVM выполняется через qemu-img resize при выключенной VM.
  • Нельзя менять образ, если к нему привязаны снапшоты — снимки требуется удалить или клонировать VM.
  • После изменения размера обязательно скорректировать таблицу разделов и файловую систему внутри гостя.
  • Уменьшение образа требует осторожной подготовки и резервной копии.

Важно: всегда протестируйте процедуру на ненасущной машине, прежде чем выполнять на продуктивных серверах.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро