Скажем, у меня есть 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 для восстановления зеркальной копии (возможно, потребуется выполнить монтирование в цикле во второй раз).