Как изменить размер диска 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.04Target Source
-----------------------------------------------------
sdb /var/lib/libvirt/images/ubuntu22.04.qcow2В этом примере файл для изменения — /var/lib/libvirt/images/ubuntu22.04.qcow2.
Удаление снимков (snapshots)
Снапшоты блокируют изменение образа. Если на образ ссылались снапшоты, их нужно удалить или сначала клонировать VM, чтобы сохранить состояния.
Проверка списка снапшотов:
$ virsh snapshot-list ubuntu22.04Name 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” и примените изменения.


Для Windows используйте встроенную «Управление дисками» (Disk Management) или уменьшите/расширьте разделы через соответствующие средства.
Уменьшение диска (downsizing)
Уменьшение образа возможно, но рискованно. Обязательно сделайте резервную копию файла образа перед началом:
$ sudo cp /var/lib/libvirt/images/ubuntu22.04.qcow2 ubuntu22.04.qcow2.bakПорядок действий при уменьшении:
- Внутри гостя уменьшите размер файловой системы и разделов так, чтобы в конце диска появилось достаточное незанятое пространство (например, для уменьшения с 32G до 20G оставьте минимум 12G в конце).
- Выключите VM.
- Выполните
qemu-img resize --shrinkс нужным параметром.
Пример уменьшения на 8 ГБ:
$ qemu-img resize --shrink /var/lib/libvirt/images/win10.qcow2 -8GФлаг --shrink необходим, чтобы разрешить уменьшение. Без него операция не будет выполнена.
Важно: если у вас не осталось достаточно незанятого пространства в конце диска, уменьшение удалит данные с конца и повредит разделы — VM может стать неработоспособной.


Пошаговый playbook (SOP)
- Проверить текущее состояние и использовать
virsh list --all. - Создать резервную копию образа (особенно перед уменьшением).
- Проверить наличие снапшотов:
virsh snapshot-list. - Удалить или сохранить снапшоты (клонирование) при необходимости.
- Выключить VM:
virsh shutdown. - Найти образ:
virsh domblklist. - Выполнить
qemu-img resize(+ или абсолютный размер), или с--shrinkпри уменьшении. - Запустить VM и через гостевую ОС расширить или уменьшить разделы (GParted, resize2fs, Disk Management).
- Протестировать загрузку и целостность данных.
Риски и меры смягчения
- Риск: потеря данных при уменьшении. Митигирование: резервная копия, проверка свободного пространства внутри гостя.
- Риск: снапшоты блокируют изменение. Митигирование: удалить снапшоты или клонировать 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 resize100G - Уменьшение:
qemu-img resize --shrink-8G - Информация об образе:
qemu-img info
Критерии приёмки
- Образ изменил размер без ошибок на хосте.
- Гость успешно загрузился после операции.
- Файловая система внутри гостя использует добавленное пространство (проверить
df -h). - Для уменьшения — данные не потеряны и система корректно функционирует.
Отладка и частые ошибки
- Ошибка: “has snapshots” — решение: удалить снапшоты или клонировать VM.
- Ошибка: нехватка места на хосте после
qemu-img resize— проверить формат и плотность аллокации (qcow2 может занимать место по мере записи). - После уменьшения VM не загружается — вернуть резервную копию и проверить правильность подготовки разделов.
Краткое резюме
- Изменение размера образа KVM выполняется через
qemu-img resizeпри выключенной VM. - Нельзя менять образ, если к нему привязаны снапшоты — снимки требуется удалить или клонировать VM.
- После изменения размера обязательно скорректировать таблицу разделов и файловую систему внутри гостя.
- Уменьшение образа требует осторожной подготовки и резервной копии.
Важно: всегда протестируйте процедуру на ненасущной машине, прежде чем выполнять на продуктивных серверах.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента