Обрезать пустое пространство из необработанного изображения dd
У меня есть сырой образ диска, который я сделал, используя dd
экземпляра Ubuntu. Общий размер диска составляет 300 ГБ, но используется только 5,5 ГБ.
Есть ли способ изменить размер необработанного образа dd до 20 ГБ, сохранив все 5,5 ГБ данных и просто обрезав пустые блоки?
3 ответа
Просто используйте virt-sparsify
,
При обычном использовании он записывает временный файл, а затем переписывает оригинал с дырками.
Если у вас мало места на диске, он может даже уменьшить размер файла, не записывая временную копию, с -i
вариант, хотя это не может освободить все возможное пространство.
По относительно недавним версиям dd
, ты можешь использовать conv=sparse
создать файл изображения как разреженный с самого начала.
Следует отметить, что тот факт, что блок диска "не используется", не означает, что на самом деле он заполнен нулями, если блок был занят файлом, который с тех пор был удален. Существует инструмент под названием zerofree
который может взять (не смонтированную) файловую систему и заполнить все неиспользуемые блоки нулями, что делает последующую работу по разбивке лучше.
Если вы сделаете это разреженным файлом, метаданные файла все равно будут 300 ГБ, но фактическое используемое пространство будет ближе к 5,5. Например, с GNU cp --sparse= всегда
См. Также: Как преобразовать образ диска Linux в разреженный файл?
Если вы также хотите уменьшить логический размер файлов, вам нужно уменьшить файловую систему, LVM и все остальное, что у вас есть, в зависимости от размера диска.
Может быть проще смонтировать большое изображение, создать новое изображение нужного размера и скопировать в него файлы.