圧縮が有効な場合、btrfsは既存のファイルを自動的に圧縮しますか?


26

/Ubuntu 12.04 LTSインストーラーでファイルシステムのフォーマットとしてbtrfsを選択しました。インストールが完了したらcompress=lzo、マウントオプションを追加して/etc/fstab再起動しました。

現在、既存のファイルは自動的に圧縮されますか、それともそれを引き起こすために明示的に何かをしなければなりませんか?


1
再起動する必要はありません。できればsudo mount -o remount /、新しいfstabオプションが有効になります。
9

... NBあなたは圧縮力オプションを使用する必要があることや、一部のファイルがまだあなたが何で圧縮されていない残っていないだろう
rogerdpack

圧縮力に関する注意。通常の圧縮には、圧縮してもほとんどまたはまったく利点がないことが検出された場合、その特定のファイルの圧縮を続行する必要がないという機能があります(それによって無駄なCPUを節約します)。compress-forceを使用することにより、とにかく無駄な圧縮を試みます。これが適用される良い例は、既に圧縮されているファイル(マルチメディア、zipファイルなど)です。言い換えれば、圧縮力は一般に悪い考えです。;)
zaTricky

回答:


27

btrfs fi defragment既存のデータを強制的に再圧縮するには、実行する必要があります。それ以外の場合、新しいデータのみが圧縮されます。

FAQから:

...で再マウントを検討し-o compress、特定のファイルをその場で書き換えるか、btrfs fi defragmentすべてを再圧縮するために実行します。これは時間がかかる場合があります。


btrfs fiデフラグ-r -clzo / path / to / fs
デビッドグッドウィン

2
どのようなautodefragオプションをマウントしますか?それはまた、自動デフラグ時に以前に圧縮されていないファイルを圧縮しますか?
ジェレミア

1
ディレクトリ内の圧縮には、再帰フラグ「-r」を使用してください。
サラミ

10

ノルベルト・ファブリティウスが言った、私が作ったが、私は既存のファイルのいずれかの圧縮に気付かなかった- DF -h / のbtrfs Fiのデフラグ = 658メガバイト| df -h / btrfs fiデフラグの = 658MB。新しいファイルは問題ありません。少し検索すると、この引用が表示されます。

これを実行する:

# btrfs filesystem defragment ~/stuff

ディレクトリのコンテンツを最適化しません。

これは仕様です。btrfs fi defragは、itに渡される単一のファイルシステムオブジェクトで動作します。これは、コマンドがディレクトリのコンテンツではなく、ディレクトリオブジェクトによって保持されているメタデータのみを最適化することを意味します。ディレクトリのコンテンツをデフラグしたい場合、次のようなものがより便利です:

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

この後、私の/それは656MBを占有しています-巨大なものはありませんが、確かに圧縮があります。

ソース:https : //btrfs.wiki.kernel.org/index.php/Problem_FAQ#Defragmenting_a_directory_doesn.27t_work

この助けを願っています。

すみません、私の英語。


1
1. btrfsを使用する場合、dfを使用または信頼しないください。2.圧縮率を向上させるには、zlibを使用します(ただし、速度は遅くなります)
ignis

3
実際に圧縮したい場合、コマンドラインにを含めdefrag -clzoたり、のdefrag -czlib代わりに使用したりしないでくださいdefrag
jbo5112

5
「-r」再帰フラグがあるので、今すぐこれを行うことができますbtrfs fi defrag -r -czlib ~/stuff
。–サラミ

8

Oracleのドキュメントによると、-c、-clzo、または-czlibオプションを使用して各ファイルを最適化することにより、既存のオンラインファイルシステム上の既存のファイルを圧縮できます。LZOは速度のために推奨されます。

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

これは、findコマンドを使用して、ルートファイルシステム内のすべてのファイルでbtrfsデフラグツールを実行します(先頭の「find」コマンドの直後にスラッシュが付いています)。他のサブボリュームがある場合は、単一のスラッシュの代わりに、サブボリュームのパス(たとえば、/ homeに1つあります)で再度使用できます。

これにはルート権限が必要なので、必要に応じてsudoを前面に追加します。

見る:


3

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. 

注:この投稿は、以下で尋ねられた圧縮アルゴリズムの種類についての追加の質問に対する回答です...だから私を責めないでください。


2

ArchWikiによると:

ヒント:compressマウントオプションを使用せずに、ファイルごとに圧縮を有効にすることもでき ます。chattr +cファイルに適用するだけです。ディレクトリに適用すると、新しいファイルが来ると自動的に圧縮されます。

非常に素晴らしい!ゴッドブレスBTRFS!

また、BTRFS wikiから:

マウントの圧縮オプションを使用せずにファイルを強制的に圧縮できますか?

はい。このユーティリティchattrは、iノードをマークして新しく書き込まれたデータを圧縮するファイル属性cの設定をサポートしています。


-9

Btrfsではデフォルトで圧縮が有効になっているため、明示的に無効にしない限り、圧縮する必要があります。


11
事実ではありませんcompression=。それを有効にするには、fstabで「お気に入りの圧縮アルゴリズム」を渡す必要があります。
ターボ

@turbo使用可能な圧縮アルゴリズムは何ですか?
ζ--

(あなたは「none」をカウントしていない場合も、3)現在許可されて2つの圧縮があるように見えます:btrfs.wiki.kernel.org/index.php/...
rogerdpack
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.