Как расширить необработанный образ диска?

13

Прилагаемые официальные образы представляют собой необработанные образы дисков, которые могли быть созданы с использованием dd.

Как сделать изображение больше? Меня не интересует перераспределение указанного изображения, так как на него уже дан ответ в Как я могу изменить размер моего / (корневого) раздела? ,

Алекс Чемберлен
источник
Не совсем уверен, что вы подразумеваете под расширением. Вы хотите выполнить «изменение размера раздела» на образе, прежде чем записать его на диск?
Joost
Это одна из целей, но для этого нужно расширить образ диска.
Алекс Чемберлен

Ответы:

13

Как поясняется в этом вопросе, существует два метода расширения изображения. Ниже приведены два примера расширения файла на 1 килобайт.

DD создает не разреженный файл

dd if=/dev/zero bs=1k count=1 >> myimage.img

Truncate создает разреженный файл

truncate -s +1024 myimage

Вы, вероятно, хотите использовать усечение. Разреженный файл записывает только метаданные блоков, которые он использует, вместо фактической записи блоков. Это ускоряет создание файла (так как ему не нужно записывать фактические нули на диск) и экономит место на вашем диске.

Примечание . Файловая система Apple HFS + не поддерживает разреженные файлы.

Joost
источник
HFS + не соответствует POSIX? linux.die.net/man/2/truncate
Алекс Чемберлен
Если поддержка разреженных файлов является требованием для POSIX, я думаю, нет. Вот хорошая демонстрация различий между HFS + и некоторыми ext (я полагаю) stackoverflow.com/a/193015/689893 . Очевидно, он создает файл, но использует место на диске, как будто это обычный файл, а не разреженный файл.
Joost
Нет, я думаю, что меня неправильно поняли!
Алекс Чемберлен
Если вы разреженный файл, он будет по- прежнему не так ли? dd
Алекс Чемберлен
Разреженный файл содержит данные, поэтому я думаю, вы можете просто добавить нули. Он будет обрабатывать эту часть как разреженную.
Joost
10

Невероятно простой способ изменить размер изображения - использовать один из qemuназванных инструментов qemu-img. Это, конечно, зависит от того, что вы qemuустановили (я знаю, что вы уже делаете Алекс).

Команда выглядит так:

qemu-img resize filename [+|-]size[K|M|G|T]

Где filenameнаходится файл изображения, а размер - это размер, который вы хотите увеличить (или уменьшить) изображение.

Например, если вы хотите расширить изображение archarm.imgна 2 ГБ, вы должны выполнить:

qemu-img resize archarm.img +2G
Jivings
источник
Обращаясь к man-странице, прежде чем использовать эту команду для сжатия образа диска, вы ДОЛЖНЫ использовать файловую систему и инструменты разделения внутри ВМ, чтобы соответственно уменьшить выделенные файловые системы и размеры разделов. Невыполнение этого требования приведет к потере данных!
АнтониоК