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

Обрезать пустое пространство из необработанного образа dd

У меня есть необработанный образ диска, который я сделал с помощью dd экземпляра Ubuntu. Общий размер диска 300 ГБ, но только 5,5 ГБ используемый.

Есть ли способ изменить размер необработанного изображения dd до 20 ГБ, сохраняя все 5,5 ГБ данных и просто усекая пустые блоки?

Просто используйте virt-sparsify.

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

Если вам не хватает места на диске, он может даже уменьшить размер файла на месте без записи временной копии с помощью -i вариант, хотя это может не освободить все возможное пространство.

На относительно последних версиях dd, ты можешь использовать conv=sparse чтобы с самого начала создать файл изображения как разреженный.

Следует отметить, что тот факт, что дисковый блок «не используется», не означает, что он фактически заполнен нулями, если блок был занят файлом, который с тех пор был удален. Есть инструмент под названием zerofree который может взять (размонтированную) файловую систему и заполнить все неиспользуемые блоки нулями, что улучшит работу последующего разбиения.

Если вы сделаете его разреженным файлом, метаданные файла все равно будут иметь размер 300 ГБ, но фактическое используемое пространство будет ближе к 5,5. Например, с GNU cp --sparse = always

Смотрите также: Как преобразовать образ диска Linux в разреженный файл?

Если вы хотите уменьшить логический размер файлов, вам необходимо уменьшить файловую систему, LVM и все остальное в зависимости от размера диска.

Может быть проще смонтировать большой образ, создать новый образ желаемого размера и скопировать в него файлы.