Будет ли btrfs автоматически сжимать существующие файлы, когда сжатие включено?

Я выбрал btrfs в качестве формата моей файловой системы / в установщике Ubuntu 12.04 LTS. После завершения установки я добавил compress=lzo в опции монтирования в /etc/fstab и перезагрузился.

Будут ли существующие файлы автоматически сжиматься или я должен явно что-то сделать, чтобы это произошло?

26
задан 15 October 2016 в 19:44

6 ответов

Вам нужно будет запустить btrfs fi defragment для принудительного повторного сжатия существующих данных. В противном случае будут сжаты только новые данные.

Из часто задаваемых вопросов :

... рассмотрите возможность перемонтирования с помощью -o compress и либо перезапишите определенные файлы на месте, либо выполните btrfs fi defragment, чтобы перекомпрессировать все. Это может занять некоторое время.

0
ответ дан 15 October 2016 в 19:44

Согласно документации Oracle, вы можете сжать существующие файлы в существующей сетевой файловой системе, дефрагментируя каждый файл в ней с помощью параметров -c, -clzo или -czlib. LZO рекомендуется для скорости.

find / -xdev \( -type f -o -type d \) -exec btrfs filesystem defragment -v -clzo -- {} +

Используется команда find для запуска дефрагментатора btrfs для каждого файла в корневой файловой системе (задается косой чертой сразу после команды «find» в начале). Если у вас есть другие подобъемы, вы можете использовать его снова с путем подобъема (например, у меня он есть в / home) вместо одиночного слеша.

Для этого вам понадобятся привилегии суперпользователя, поэтому добавьте sudo на первый план, если вам это нужно.

См .:

0
ответ дан 15 October 2016 в 19:44

Я сделал то, что сказал Norbert Fabritius, но я не заметил сжатия в существующих файлах - df-h / прежде btrfs fi дефрагментация = 658 МБ | df-h / после btrfs fi дефрагментация = 658 МБ. Новые файлы в порядке. Поиск немного приносит мне эту кавычку:

Выполнение этого:

# btrfs filesystem defragment ~/stuff

не дефрагментирует содержание каталога.

Это дизайном. btrfs fi дефрагментация воздействует на единственный объект файловой системы, переданный> это. Это означает, что команда дефрагментирует просто метаданные, сохраненные каталогом> объект а не содержание каталога. Если бы Вы хотите дефрагментировать содержание> каталога, что-то вроде этого было бы более полезным:

# find -xdev -type f -exec btrfs fi defrag '{}' \;

После этого мой / это - occupping 656 МБ - ничто огромное, но конечно существует сжатие.

Источник: https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#Defragmenting_a_directory_doesn.27t_work

Надеюсь эта справка.

Извините мой английский язык.

10
ответ дан 15 October 2016 в 19:44

Согласно https://btrfs.wiki.kernel.org/index.php/Mount_options#List_of_options доступны следующие алгоритмы сжатия:


compress,compress-force
Enable compression. Starting with kernel 2.6.38 you can choose the algorithm for compression:

 - compress=zlib - Better compression ratio. It's the default and safe for olders kernels.
 - compress=lzo - Faster compression.
 - compress=no - Disables compression (starting with kernel 3.6). 

compress-force= - Enable compression even for files that don't compress well, like videos and dd images of disks. The options compress-force=zlib and compress-force=lzo works for kernels >2.6.38.

Note that old (before 2012) btrfs-progs versions will probably fail some operations (e.g. fsck) on filesystems with LZO compression. 

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

0
ответ дан 15 October 2016 в 19:44

Согласно ArchWiki :

Совет: Сжатие также можно включить для каждого файла без использования опции монтирования compress; просто примените chattr +c к файлу. При применении к каталогам новые файлы будут автоматически сжиматься по мере их поступления.

Очень мило! Да благословит Бог BTRFS!

Кроме того, из вики BTRFS :

Можно ли принудительно сжимать файл, не используя сжатие [ 116] опция монтирования?

Да. Утилита chattr поддерживает установку атрибута файла c, который отмечает индекс для сжатия вновь записанных данных.

0
ответ дан 15 October 2016 в 19:44

Сжатие по умолчанию включено в Btrfs, поэтому, если вы явно не отключили его, оно должно быть сжато.

0
ответ дан 15 October 2016 в 19:44

Другие вопросы по тегам:

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