Как очистить неиспользуемое пространство нулями? (Я прошу инструмент для файловой системы btrfs )
Я ищу что-то умнее, чем
cat /dev/zero > /mnt/X/big_zero ; sync; rm /mnt/X/big_zero
Вроде FSArchiver ищет «использованное пространство» и игнорирует неиспользуемый, но противоположный сайт.
Цель: я бы хотел сжать образы разделов, поэтому настоятельно рекомендуется заполнять неиспользуемое пространство нулями.
Btw. Для ext3, ext4: Очистить неиспользуемое пространство с нулями (ext3, ext4) . Здесь я прошу btrfs
Разъяснение «более умного алгоритма». Поскольку я вижу, что «более умный алгоритм» приводит к путанице, здесь я, наконец, решил добавить строку об этом. Уважаемый читатель, пожалуйста, подумайте о файловой системе как о структуре данных. Для упрощения, давайте представим самобалансирующуюся карту, содержащую красно-черное дерево, которая используется в качестве массива ключа ассоциации> значения, где значения являются целыми числами. Цель состоит в том, чтобы очистить все отрицательные значения с нулями. «неумный» алгоритм будет перебирать его и добавлять пары ключ: значение на новую карту (с возможным изменением отрицательного значения на ноль). Умный алгоритм просто обнаружит места, где хранятся отрицательные значения, и очистит их на месте .
источник
sfill
предложение ? Похоже, это не требует ExtX.truncate
и / илиfallocate
Ответы:
Вот измененный и значительно расширенный репост моего ответа на ваш предыдущий вопрос:
sfill
изsecure-delete
пакета можно делать что хочешь.В отличие от zerofree (который работает только с файловыми системами ext2, ext3 и ext4), sfill будет работать с любой файловой системой.
например
Кажется, что домашняя страница sfill / secure-delete исчезла, но она упакована для Debian и Ubuntu. вероятно, другие дистрибутивы тоже. если вам нужен исходный код, его можно найти в архивах Debian, если вы не можете найти его где-либо еще.
ПРИМЕЧАНИЕ: sfill работает только на смонтированной файловой системе. Если вы заполняете файлы образов с нуля не из виртуальной машины, а из хост-системы, вам необходимо смонтировать образ fs на хосте. Точный метод зависит от типа файла изображения (например, qcow2 или raw).
Монтировать «сырые» изображения легко и просто. Просто используйте
kpartx
файл образа для создания петлевого устройства, и / dev / mapper / записи для каждого раздела можно монтировать отдельно.Вот частичный сценарий, модифицированный из фрагмента сценария, который я использую для монтирования образов жесткого диска с загрузкой по сети (используется для обновлений BIOS на компьютерах, где flashrom не работает):
ПРИМЕЧАНИЕ: предполагается, что каждый раздел на изображении является монтируемым. Истинно в моем случае использования (образ Freedos HD с одним разделом). Неверно, если один из разделов - это, скажем, пространство подкачки. Обнаружение таких разделов и использование dd для обнуления раздела подкачки оставлено в качестве упражнения для читателя :)
Этот метод или его вариант должен работать и для томов LVM.
Если ваши изображения qcow, вы можете использовать
qemu-nbd
инструмент изqemu-utils
пакета, который представит файл изображения и его разделы в качестве сетевых блочных устройств - например, / dev / nbd0 / dev / ndb0p1 - который можно использовать аналогично / устройства dev / mapper выше.Возможно, проще и менее хлопотно (но более трудоемко) использовать
qemu-img
для преобразования из qcow в raw, использовать метод для raw выше, а затем преобразовать измененный необработанный образ обратно в сжатый qcow2. Это, вероятно, приведет к получению изображений немного меньшего размера, чем при использовании qemu-nbd, поскольку вы будете сжимать новое изображение qcow2 по мере его создания.источник
Правильный и «умный» способ освободить свободное место - использовать:
Используйте это на смонтированной файловой системе.
Важно отметить, что в этом нет никаких преимуществ для безопасности. Если вы хотите очистить свой диск для безопасности, сделайте резервную копию ваших файлов, обнулите весь диск с помощью команды вроде «shred», а затем восстановите ваши файлы.
Тем не менее, решение отлично работает, если ваш диск является тонким диском в разреженной файловой системе и вы хотите восстановить неиспользуемое пространство.
источник