Очистить неиспользуемое пространство с нулями (ext3, ext4)

Как очистить неиспользуемое пространство нулями? (Ext3, ext4)

Я ищу что-то умнее, чем

cat /dev/zero > /mnt/X/big_zero ; sync; rm /mnt/X/big_zero 

Как FSArchiver ищет «использованное пространство» и игнорирует неиспользуемый, но противоположный сайт.

Назначение: Я хотел бы сжать изображения разделов, поэтому настоятельно рекомендуется заполнять неиспользуемое пространство нулями.

Btw. Для btrfs: очистить неиспользуемое пространство с нулями (btrfs)

5 Solutions collect form web for “Очистить неиспользуемое пространство с нулями (ext3, ext4)”

Такая утилита имеет zerofree .

Из описания:

Zerofree находит нераспределенные, необнужденные блоки в файловой системе ext2 или ext3 и заполняет их нулями. Это полезно, если устройство, на котором находится эта файловая система, является образ диска. В этом случае, в зависимости от типа образа диска, вторичная утилита может уменьшить размер образа диска после запуска zerofree. Zerofree требует, чтобы файловая система была отключена или смонтирована только для чтения.

Обычный способ достижения одного и того же результата (обнуление неиспользуемых блоков) заключается в том, чтобы запустить «dd», создать файл с нулями, который занимает все свободное место на диске, а затем удалить этот файл. У этого есть много недостатков, которые zerofree облегчает:

  • он медленный
  • это делает образ диска (временно) расти в максимальной степени
  • он (временно) использует все свободное место на диске, поэтому другие одновременные действия записи могут завершиться неудачно.

Zerofree был написан для запуска с систем GNU / Linux, установленных как гостевые ОС внутри виртуальной машины. Если это не ваше дело, вам почти наверняка не нужен этот пакет.

ОБНОВЛЕНИЕ # 1

Описание пакета .deb содержит следующий абзац, который будет подразумевать, что это будет отлично работать с ext4.

Описание: нулевые свободные блоки из файловых систем ext2, ext3 и ext4. Zerofree находит нераспределенные блоки с ненулевым значением контента в файловой системе ext2, ext3 или ext4 и заполняет их нулями …

Резюме методов (как упоминалось в этом вопросе и в других местах) для удаления неиспользуемого пространства на ext2 / ext3 / ext4:

Нулевое неиспользуемое пространство

Файловая система не установлена

  • Если «диск», на котором установлена ​​ваша файловая система, тонко подготовлен (например, современный SSD, поддерживающий TRIM, файл VM, формат которого поддерживает разреженность и т. Д.), И ваше ядро ​​говорит, что блочное устройство это понимает, вы можете использовать e2fsck -E discard src_fs для e2fsck -E discard src_fs неиспользуемое пространство (требуется e2fsprogs 1.42.2 или выше).
  • Использование zerofree для явного написания нулей по неиспользуемым блокам.
  • Использование e2image -rap src_fs dest_fs для копирования только используемых блоков (новая файловая система должна быть на нулевом диске), требует e2fsprogs 1.42.9 или новее).

Установлена ​​файловая система

  • Если «диск», на котором установлена ​​ваша файловая система, тонко подготовлен (например, современный SSD, поддерживающий TRIM, файл VM, формат которого поддерживает разреженность и т. Д.), Ваше ядро ​​говорит, что блочное устройство это понимает, и, наконец, драйвер ext filesystem поддерживает его, вы можете использовать fstrim /mnt/fs/ попросить файловую систему отказаться от неиспользуемого пространства.
  • Использование cat /dev/zero > /mnt/fs/zeros; sync; rm /mnt/fs/zeros cat /dev/zero > /mnt/fs/zeros; sync; rm /mnt/fs/zeros cat /dev/zero > /mnt/fs/zeros; sync; rm /mnt/fs/zeros ( sfill от secure-delete использует эту технику). Этот метод неэффективен, не рекомендуется Ted Ts'o (автор ext4), может не обрезать определенные вещи и может замедлить будущие fscks.

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

Уменьшение размера файла изображения

Изображение находится в выделенном формате ВМ

Вам нужно будет использовать соответствующий инструмент для создания образа диска (например, qemu-img convert src_image dst_image ), чтобы позволить qemu-img convert src_image dst_image пространство быть восстановленным и разрешить qemu-img convert src_image dst_image файла, представляющего изображение.

Изображение является необработанным файлом

Один из следующих методов может быть использован для того, чтобы сделать файл разреженным (так что запуск нулевой остановки занимает место):

  • cp --sparse=always src_image dst_image .
  • fallocate -d src_image (требует использования linux v2.25 или выше).

В наши дни было бы проще использовать такой инструмент, как virt-sparsify, чтобы делать эти шаги и многое другое за один раз.

источники

sfill от secure-delete может сделать это и несколько других связанных заданий.

например

 sfill -l -l -z /mnt/X 

ОБНОВЛЕНИЕ # 1

Существует дерево-источник, который, по-видимому, используется проектом ArchLinux в github, который содержит источник sfill который является инструментом, включенным в пакет Secure-Delete.

Также копия sfill страницы sfill находится здесь:

Если у вас есть e2fsprogs 1.42.9, вы можете использовать e2image для создания образа раздела без свободного места в первую очередь, поэтому вы можете пропустить шаг обнуления.

Вы можете использовать sfill . Это лучшее решение для тонких томов.

  • Файловые системы ext3 root идут только для чтения с прерванным журналом даже после ремонта
  • sfdisk показывает невозможное значение и (c, h, s), ожидаемое в другой системе
  • что является хорошим инструментом для восстановления файлов в их пути, когда вы rm -r от root?
  • Linux и Unix - лучшая ОС в мире.