btrfs のファイルに圧縮フラグを設定できません。

btrfs のファイルに圧縮フラグを設定できません。

CentOS 7には、次のbtrfsファイルシステムがあります。

mount | grep btrfs

/dev/sdc on /everything type btrfs (rw,relatime,compress=zlib,space_cache,subvolid=5,subvol=/)

圧縮フラグを設定しようとすると失敗します。

# LANG=C chattr +c  /everything/filelists.xml 
chattr: Invalid argument while setting flags on /everything/filelists.xml

私はこのバージョンのbtrfsを使用しています。 btrfs-progs-4.9.1-1.el7.x86_64

ログファイルにエラーがありません。

これはバグですか、それとも何か抜けましたか?

ベストアンサー1

ファイルシステム自体に関する追加のコンテキストがなければ、はっきりわかりませんが、フラグを設定しようとする試みはcompress=マウントオプションに重複していたので拒否されたと思います。これは私が知っているBTRFSバージョンの標準的な動作ではありませんが、RHEL(および拡張CentOS)は、選択された新しいパッチを含む現在の古代の基本バージョンに基づく非常に奇妙なカーネルを使用してバックポートされます。 、そうですね本物彼らのコアが何をするのか正確に言うのは難しいです。

設定するcompress=compress-force=(実際には2番目のファイルが必要な場合があります。そうしないと、BTRFSは圧縮ファイルを簡単に捨てることができます)インストールオプションが設定されます基本このボリュームの場合。つまり、マウントcompress=zlib(ユーザーと同様)は、BTRFSに圧縮フラグを無視し、そのボリュームに新しく作成されたすべてのデータのみを圧縮するように指示します。唯一の例外は次のとおりです。

  • compress=none、圧縮フラグを無視しません。
  • このbtrfs filesystem defragコマンドは、デフラグしているファイルの圧縮を無視することができます(たとえば、作業している場所ではボリュームをマウントして新しいデータがcompress=none圧縮されないようにします)。次に、圧縮後の最後以降に渡された変更されていないすべてのファイルに対して毎週デフラグを実行します。一度に所定の位置に配置されます)。

おすすめ記事