Внешний снапшот для расширения LUKS + LVM qcow2
Внешний snapshot (external snapshot) — это самый безопасный и рекомендуемый способ сделать точку восстановления для qcow2-образа.
Что это значит простыми словами
- Внутренний snapshot (
qemu-img snapshot -c): вся информация о снапшоте "вшивается" внутрь твоего файлаdebian13.qcow2. Файл становится больше, и при повреждении основного файла ты можешь потерять всё. - Внешний snapshot: создаётся новый небольшой qcow2-файл (overlay), который хранит только изменения после момента создания снапшота. Оригинальный файл остаётся неизменным (read-only). Это как "защитный слой".
Если что-то пойдёт не так при ресайзе — ты просто удалишь overlay-файл и вернёшься к оригиналу за секунды.
Как сделать внешний snapshot (твой случай — ручной запуск QEMU)
Самый простой и надёжный способ (offline):
- Полностью выключи ВМ (как мы делали раньше —
system_powerdownилиkill -SIGTERM). - Создай внешний snapshot:
☯
Terminal:
⌕
≡
✕
cd /var/lib/libvirt/images # Создаём overlay (название можно любое) sudo qemu-img create -f qcow2 \ -b debian13.qcow2 \ -F qcow2 \ debian13-before-resize.qcow2
Это создаст файл debian13-before-resize.qcow2 размером всего несколько мегабайт.
- Теперь запускай ВМ через этот новый файл:
☯
Terminal:
⌕
≡
✕
sudo qemu-system-x86_64 -enable-kvm -m 16384 -smp 2 \ -machine pc-q35-7.2 -cpu host \ -drive file=debian13-before-resize.qcow2,if=virtio,format=qcow2 \ ... (все остальные параметры как у тебя были)
Всё, что ты будешь делать дальше (включая qemu-img resize оригинального файла), будет относительно безопасно.
Как откатиться (rollback)
Если что-то пошло не так:
☯
Terminal:
⌕
≡
✕
# Просто удали overlay-файл sudo rm debian13-before-resize.qcow2 # И запускай ВМ снова с оригинальным debian13.qcow2
Оригинальный образ останется в том состоянии, в котором был на момент создания снапшота.
Дополнительно
- Можно сделать цепочку:
base.qcow2←snap1.qcow2←snap2.qcow2и т.д. - Чтобы посмотреть цепочку:
qemu-img info debian13-before-resize.qcow2 - Чтобы слить изменения обратно (commit):
qemu-img commit debian13-before-resize.qcow2
Правильная последовательность
- У тебя есть: -
debian13.qcow2— базовый (неизменяемый) файл -debian13-before-resize.qcow2— overlay (верхний слой), который ссылается на базовый - Ресайзить нужно именно overlay-файл:
☯
Terminal:
⌕
≡
✕
cd /var/lib/libvirt/images sudo qemu-img resize debian13-before-resize.qcow2 +50G
Что произойдёт после этой команды?
- Виртуальный размер верхнего файла (
debian13-before-resize.qcow2) увеличится на 50 ГБ. - Сам физический размер файла на диске почти не изменится (останется небольшим, несколько МБ или десятки МБ).
- Новый дополнительный объём будет виден гостевой ОС при запуске ВМ через этот overlay-файл.
- Базовый файл
debian13.qcow2остаётся без изменений по размеру и содержимому.
Да, overlay остаётся в связке с базовым файлом (backing file). Это и есть суть внешнего снапшота.
Как проверить
После ресайза:
☯
Terminal:
⌕
≡
✕
qemu-img info debian13-before-resize.qcow2
Ты должен увидеть:
- virtual size: старый размер + 50G
- backing file: .../debian13.qcow2
Рекомендуемый порядок действий дальше
- Сделай внешний снапшот (overlay), как я показал раньше.
- Выполни
qemu-img resizeна overlay-файле. - Запусти ВМ именно с overlay-файла.
- Загрузись в Live-CD и делай расширение разделов внутри гостя (
parted+ LUKS + LVM + resize2fs). - После успешного расширения и проверки работы системы можешь: - Либо оставить overlay (если хочешь сохранить возможность отката). - Либо слить изменения обратно в базовый файл (
qemu-img commit debian13-before-resize.qcow2).
Важно:
qemu-img resize меняет только виртуальный размер контейнера. Саму таблицу разделов, LVM и файловую систему внутри нужно расширять вручную (это то, что описано в статье).
Откуда взялось имя `vda5_crypt`
Это имя устройства LUKS-контейнера (device-mapper name), которое автоматически создаётся при открытии шифрованного раздела.
Посмотри в статье в самом начале (раздел «0️⃣ Исходная разметка»):
☯
Terminal:
⌕
≡
✕
lsblk
Там видно структуру:
☯
Terminal:
⌕
≡
✕
vda
├─vda1 /boot
├─vda2 extended
└─vda5 logical
└─**vda5_crypt** crypt ← вот оно
├─debian--vg-root /
└─debian--vg-swap [SWAP]Правило формирования имени:
- Берётся имя раздела (
vda5) - Добавляется суффикс
_crypt - Получается
vda5_crypt
Это стандартное поведение Debian/Ubuntu при использовании LUKS (особенно если шифрование настраивалось через установщик Debian).
Как узнать **твоё** реальное имя
После того, как ты успешно сделаешь qemu-img resize, расширишь разделы через Live-CD и загрузишься в свою систему, выполни команду:
☯
Terminal:
⌕
≡
✕
lsblk -f
или просто
☯
Terminal:
⌕
≡
✕
lsblk
Ищи строку с типом crypt.
Примеры того, что может быть у тебя:
vda5_cryptsda5_cryptvda5_encryptedcryptroot- какое-то своё имя
Правильная команда для твоего случая
☯
Terminal:
⌕
≡
✕
# Сначала посмотри точное имя lsblk # Потом выполни (замени на своё имя!) sudo cryptsetup resize vda5_crypt
После этого идёт:
☯
Terminal:
⌕
≡
✕
sudo pvresize /dev/mapper/vda5_crypt
Важно
Команду cryptsetup resize нужно выполнять только после того, как ты расширил logical partition (/dev/vda5) через parted в Live-CD.
Если сделаешь раньше — LUKS просто не увидит дополнительное пространство.
-
Создано 05.05.2026 21:45:00
-
Роман Сахно

Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.