Освободите неиспользуемое место с нулями (btrfs)

Да, менеджер окон может повысить и понизить окна. На самом деле менеджер окон обычно отвечает за понижение, повышение, перемещение, изменение размеров, фокусировку и обычно руководящие окна.

Эти X библиотечных функций, чтобы понизиться и повысить окно XRaiseWindow и XLowerWindow. Существует больше функций для действования по приказу укладки. Они, кажется, не доступны в Python Xlib, но можно достигнуть их легко с помощью ctypes.

10
13.04.2017, 15:36
2 ответа

Вот измененное и очень расширенное пересообщение моего ответа на Ваш предыдущий вопрос:

sfill от secure-delete пакет может сделать то, что Вы хотите.

В отличие от zerofree (который работает только с ext2, ext3, и ext4 файловые системы), sfill будет работать с любой файловой системой.

например.

sfill -l -l -z /mnt/X

sfill/secure-delete домашняя страница, теперь, кажется, исчез, но она упаковывается для debian и человечности. вероятно, другие дистрибутивы также. если Вам нужен исходный код, который может быть найден в архивах debian, если Вы не можете найти его больше нигде.

Примечание: sfill только работает над смонтированной файловой системой. Если Вы заполните нулями файлы изображений от хост-системы, а не из VM, то необходимо будет смонтировать изображение фс на хосте. Точный метод варьируется в зависимости от того, какой файл изображения это (например, qcow2 или сырые данные).

Монтирование 'необработанных' изображений легко и просто. Просто используйте kpartx на файле изображения для создания устройства закольцовывания и/dev/mapper/записей для каждого раздела может затем быть смонтирован индивидуально.

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

image="myrawimagefile.img"

# use kpartx to build /dev/mapper device nodes
KP=$(kpartx -a -v "$image")

# now mount each partition under ./hd/
for p in $(echo "$KP" | awk '/^add map/ {print $3}') ; do
  dm="/dev/mapper/$p"
  fp=$(echo "$p" | sed -r -e 's/^loop[0-9]+//')
  mkdir -p "./hd/$fp"
  mount "$dm" "./hd/$fp"
  sfill -l -l -v "./hd/$fp"
  umount "$dm"
done

# now remove the loopback device and /dev/mapper entries
kpartx -d "$image"

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

Этот метод или вариант его, должен работать на объемы LVM также.

Если Ваши изображения являются qcow затем, можно использовать qemu-nbd инструмент от qemu-utils пакет, который представит файл изображения и его разделы как сетевые блочные устройства - например,/dev/nbd0/dev/ndb0p1 - который может привыкнуть подобным способом к/dev/mapper устройствам выше.

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

4
27.01.2020, 20:03
  • 1
    То, что я имею в виду, что это не считают "умным" способом заполнить неиспользуемое место нулями. Это - самый очевидный, типичный способ сделать это. Я не спрашиваю о подобных вещах. –  Grzegorz Wierzowiecki 05.08.2012, 15:49
  • 2
    Опишите "умный" алгоритм, который не характерен для конкретного семейства файловых систем (как, заполняют нулями, для ext2/3/4). Вы хотели программу, которая могла сделать задание. Вы не сказали, что это должно было быть волшебно также. –  cas 05.08.2012, 16:08
  • 3
    и, действительно, если файловая система не используется (потому что, например, это смонтировано на хосте к заполнению нулями), что имеет значение, насколько умный алгоритм? Траление через метаданные фс, ища пустые секторы не будет немного быстрее или лучше, чем просто запись огромной заливки, полной NULs... сама файловая система уже - много достаточно умное для выяснения, где вакуум. –  cas 05.08.2012, 16:13
  • 4
    С одной стороны, для Ваших потребностей это достаточно - таким образом, мой вопрос уже содержит фрагмент кода с этим решением - таким образом, Ваш ответ не обеспечивает ничего нового. С другой стороны, мои потребности требуют того, что я указываю, потому что я хочу вытереть неиспользуемое место нулями, не изменяя внутренние структуры (например, восстанавливающий равновесие "Танцующих B-деревьев" или другого вида структуры данных (например, для исследований и целей дедупликации), –  Grzegorz Wierzowiecki 06.08.2012, 12:15
  • 5
    @cas - Я думаю, что Вы пропускаете то, что заполнение нулями является существенным шагом прежде, чем уплотнить виртуальные жесткие диски в VMs. Если у Вас есть 500 ГБ, расширяющих диск с 10 ГБ файлов, и 10 ГБ "пустого" пространства (т.е. удаленные файлы), выполняя наивный "гигантский нулевой файл" подход возьмут FAR дольше и потребуют, чтобы VHD чрезмерно увеличился в размерах до полных 500 ГБ. Я держал пари, что OP предполагает, что утилита должна быть FS, конкретным также. –  Fake Name 10.12.2013, 10:47

Правильный и «умный» способ очистить свободное пространство — использовать:

fstrim /mountpoint

Используйте это на смонтированной файловой системе.

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

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

5
27.01.2020, 20:03

Теги

Похожие вопросы