Bootstrap

Внешний снапшот для расширения LUKS + LVM qcow2

Внешний снапшот для расширения LUKS + LVM qcow2

Внешний snapshot (external snapshot) — это самый безопасный и рекомендуемый способ сделать точку восстановления для qcow2-образа.

Что это значит простыми словами

  • Внутренний snapshot (qemu-img snapshot -c): вся информация о снапшоте "вшивается" внутрь твоего файла debian13.qcow2. Файл становится больше, и при повреждении основного файла ты можешь потерять всё.
  • Внешний snapshot: создаётся новый небольшой qcow2-файл (overlay), который хранит только изменения после момента создания снапшота. Оригинальный файл остаётся неизменным (read-only). Это как "защитный слой".

Если что-то пойдёт не так при ресайзе — ты просто удалишь overlay-файл и вернёшься к оригиналу за секунды.

Как сделать внешний snapshot (твой случай — ручной запуск QEMU)

Самый простой и надёжный способ (offline):

  1. Полностью выключи ВМ (как мы делали раньше — system_powerdown или kill -SIGTERM).
  2. Создай внешний 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 размером всего несколько мегабайт.

  1. Теперь запускай ВМ через этот новый файл:

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.qcow2snap1.qcow2snap2.qcow2 и т.д.
  • Чтобы посмотреть цепочку: qemu-img info debian13-before-resize.qcow2
  • Чтобы слить изменения обратно (commit): qemu-img commit debian13-before-resize.qcow2

Правильная последовательность

  1. У тебя есть: - debian13.qcow2базовый (неизменяемый) файл - debian13-before-resize.qcow2overlay (верхний слой), который ссылается на базовый
  2. Ресайзить нужно именно 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

Рекомендуемый порядок действий дальше

  1. Сделай внешний снапшот (overlay), как я показал раньше.
  2. Выполни qemu-img resize на overlay-файле.
  3. Запусти ВМ именно с overlay-файла.
  4. Загрузись в Live-CD и делай расширение разделов внутри гостя (parted + LUKS + LVM + resize2fs).
  5. После успешного расширения и проверки работы системы можешь: - Либо оставить 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_crypt
  • sda5_crypt
  • vda5_encrypted
  • cryptroot
  • какое-то своё имя

Правильная команда для твоего случая

Terminal:

# Сначала посмотри точное имя
lsblk

# Потом выполни (замени на своё имя!)
sudo cryptsetup resize vda5_crypt

После этого идёт:

Terminal:

sudo pvresize /dev/mapper/vda5_crypt

Важно

Команду cryptsetup resize нужно выполнять только после того, как ты расширил logical partition (/dev/vda5) через parted в Live-CD.

Если сделаешь раньше — LUKS просто не увидит дополнительное пространство.

Копирование материалов разрешается только с указанием автора Роман Сахно и индексируемой прямой ссылкой на сайт (http://itdid.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/sahroman.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/sahroman.

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как настроить свой компьютер

  2. Текстовая ссылка:

    Она выглядит вот так: Как настроить свой компьютер

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

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