Назад | Перейти на главную страницу

Как уменьшить размер необработанного образа диска виртуальной машины (kvm)?

Скажем, у меня есть linux-vm-image.raw размером 10 ГБ. Внутри есть одна основная (используется "классическая" таблица разделов типа MS-DOS, а не GPT) etx4 раздел (LVM не используется), распространяющийся на весь том. И реальные данные, размещенные в этом разделе, составляют, например, 3 ГБ.

Этот образ подготовлен для использования в некоторой среде виртуализации (kvm + OpenStack в моем случае), и любая виртуальная машина, созданная из этого образа, будет изменять свой размер в соответствии с размером целевого виртуального диска в зависимости от выбора пользователя. Таким образом, нет причин оставлять свободное дисковое пространство внутри этого образа диска.

Как я мог уменьшить размер этого необработанного образа диска до минимума (с 10 ГБ до ~ 3 ГБ)?

Есть некоторые инструкции для qcow2 образы дисков, но я должен использовать raw только изображения - не qcowне OVF а не другие.

Я предполагаю что-то вроде

Но разве я не пытаюсь изобрести велосипед? Есть ли какая-нибудь однострочная команда или специальное программное обеспечение, чтобы делать то, что я хочу?

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

Также проверьте, поддерживает ли ваша целевая среда формат контейнера OVF, который позволяет использовать сжатые образы дисков. (Zerofree по-прежнему применяется).

Вы на правильном пути. Если вы можете смонтировать его как блочное устройство (петлевое крепление), вы, вероятно, сможете получить gparted для работы с ним.

gparted сделает большую часть того, что вы хотите:
1. переместить данные FS в начало раздела (сжать FS)
2. сжать раздел и настроить таблицу разделов
3. он может даже дать вам оставшийся размер «диска», когда вы напечатаете обновленную таблицу разделов (например, последний сектор последнего раздела и т. Д.).

Это самая сложная часть. После этого размонтируйте его. Возможно, вам придется вычислить точный размер вашего «диска» вручную, но после этого это должно сделать простое усечение файла.

ОБНОВЛЕНИЕ: если ваша таблица разделов имеет тип MBR, все в порядке. С GPT у него есть зеркальная копия в конце диска. Так что будьте осторожны с этим, поскольку gparted может быть недостаточно умен для этого (если вы не можете напрямую передать ему необработанное изображение). Если у вас возникли проблемы, рассмотрите gdisk как шаг после усечения. Обрежьте с несколькими дополнительными блоками и получите gdisk / Equiv для восстановления зеркальной копии (возможно, потребуется выполнить монтирование в цикле во второй раз).