karubabuの日記

タイトルに解決と書いているものがあるけれど、別に付いていない物は解決していないというわけではないです。つまるところ記事を書いた後に解決してちょっと嬉しかったので付けました。

btrfsの圧縮アルゴリズムを変更する時に必要っぽいこと

つまるところ、全体の圧縮アルゴリズムを変更する時は、マウントオプションでアルゴリズムを設定してからbtrfs filesystem defragment -r -t5G .をやるのが良さそう

背景

LUKS の☝️にbtrfs を乗せて暗号化しつつ適当に圧縮かけて捗らせたいね、というのが趣旨
基本的に保存すること自体が目的のオキニの動画や画像やその他のファイルを、HDDに保存したいので、
書き込み速度やなんやらを全て無視して、読み込み速度がそれなりで圧縮効率が良さそうなbtrfsのzstdの15レベルを使って圧縮したい…

けれど、この作業を始めた当初はzstdというものを知らなかったので、とりあえずcompress=lzoを付けてHDDをマウントしてファイルをコピーし始めてしまった
勿論データを全て消してからcompress=zstd:15を付けてマウントしてやり直せば間違いはないのだけれど、
後から圧縮アルゴリズムをzstd:15に変更するにはどうすればええねんということを調べたり、そもそもその作業が成功しているかどうかを確認する方法はどうすれば良いのか調べた

謎ら

95割はCompression - btrfs Wikiここを読めばよいのだけれど、それでも何だか謎みあることが幾つかある。

  • btrfs filesystem defragment-cオプションはzstd:15の様なレベル指定を受け付けてくれない
  • btrfs filesystem defragment-cオプションはzlibらしいのだけれど(man btrfs-filesystemに書いてある)、This is independent of the mount options compress or compress-force, and using the option -c you can set the compression algorithm.の意味が分からない
  • 圧縮された後のファイルから、どの圧縮アルゴリズムが使われているのか判断出来無い
  • 計測の方法が分からない

わからんことだらけやんけ

やったこと

しっかり計測したことなんてないし、ここを詰めると絶対に面倒なやつなので計測は適当にやる
基本的に、dfコマンドを使ってどれだけ空き容量が空くかで上手くいっているのかどうかを判断した
dfbtrfs filesystem dfだと出力されるサイズが違うという話はあるのだけれど、まあ誤差でしょう

https://mstdn.maud.io/@babukaru/104629699414995825
これらが試行錯誤した結果なのだけれど、調べ方が行き当りばったりだし、後から見ると色々情報が抜けていて何を言っているのか分からんねえ
空き容量って何に対してやねん
でも面倒だし、このツイーヨした部分は重要ではないと勝手に私は思っているので、何か読み取りたい人はこのツイーヨからエスパーしてね

これらを試した後、rm -rf /mnt/encrypt_data/*;sync;umonut /mnt/encrypt_dataして(/mnt/encrypt_data は圧縮したいHDD)、
当初の目的だったzstd:15での圧縮をマウント時から指定して(compress-force=zstd:15)ファイルをコピーし直した結果、
btrfs filesystem df /mnt/encrypt_dataのサイズは、"マウントオプションでcompress-force=zstd:15を設定してbtrfs filesystem defragment -r -t5G /mnt/encrypt_dataしたもの"とほぼ等しくなった
このことから、少なくとも箇条書きした疑問点の2番目は、-cオプションを付けなければzlibになるというわけではなさそうだとは思う
よくよく考えてみれば当たり前ではあるのだけれど、自信はないみたいな感じだった

おわりに

分かったような分かっていないような
そもそも計測の仕方がガバガバなのでもう全てがガバガバで何の腹の足しにもなっていない感じがすごい
最終的にはzstd:15で圧縮されたことは間違いないだろうしまあ良いでしょう
最後の大事な話です
https://mstdn.plusminus.io/@mohemohe/104634297256629871
https://mastodon.cardina1.red/@lo48576/104634286070925741
https://mastodon.cardina1.red/@lo48576/104634289896653923
百里ある