「Bcachefs」の版間の差分
(→トラブルシューティング: 同期) |
(→設定: 同期) |
||
69行目: | 69行目: | ||
ほとんどのオプションは、 {{ic|bcachefs format}} 中、マウント時 ({{ic|1=mount -o option=value}})、またはsysfs ({{ic|echo X > /sys/fs/bcachefs/''UUID''/options/''option''}}) フォーマット中にオプションを設定するか、 sysfs を介してオプションを変更すると、ファイルシステムのスーパーブロックに保存され、それらのドライブのデフォルトになります。マウントオプションはこれらのデフォルトを上書きします。 |
ほとんどのオプションは、 {{ic|bcachefs format}} 中、マウント時 ({{ic|1=mount -o option=value}})、またはsysfs ({{ic|echo X > /sys/fs/bcachefs/''UUID''/options/''option''}}) フォーマット中にオプションを設定するか、 sysfs を介してオプションを変更すると、ファイルシステムのスーパーブロックに保存され、それらのドライブのデフォルトになります。マウントオプションはこれらのデフォルトを上書きします。 |
||
+ | |||
{{Note|sysfs を使用できるようにするには、ファイルシステムをマウントする必要があります。 fsck を除くすべての操作はライブファイルシステムで可能です}} |
{{Note|sysfs を使用できるようにするには、ファイルシステムをマウントする必要があります。 fsck を除くすべての操作はライブファイルシステムで可能です}} |
||
+ | 使用可能なオプションの例は次の通りです: |
||
− | * data_checksum、metadata_checksum(none、crc32c、crc64) |
||
+ | |||
− | *(foreground)compression、background_compression(None、lz4、gzip、zstd) |
||
+ | {| class="wikitable" |
||
− | * foreground_target、background_target、promote_target |
||
+ | |+ Bcachefs options |
||
+ | ! Option !! Description |
||
+ | |- |
||
+ | | metadata_checksum || メタデータの書き込みに使用されるチェックサムアルゴリズムを指定します。デフォルトのアルゴリズムは ''crc32c'' です。{{ic|none}}、{{ic|crc32c}}、{{ic|crc64}}、{{ic|xxhash}} のいずれかを選択できます。 |
||
+ | |- |
||
+ | | data_checksum || データの書き込みに使用されるチェックサムアルゴリズムを指定し、{{ic|metadata_checksum}} と同じデフォルトとオプションを共有します。 |
||
+ | |- |
||
+ | | compression || (フォアグラウンド) 圧縮に使用するアルゴリズムを指定します。デフォルトでは、このオプションは指定されていません。{{ic|none}}、{{ic|lz4}}、{{ic|gzip}}、{{ic|zstd}} のいずれかを選択できます。 |
||
+ | |- |
||
+ | | background_compression || (バックグラウンド) 圧縮に使用するアルゴリズムを指定し、{{ic|compression.}} と同じデフォルトとオプションを共有します。 |
||
+ | |- |
||
+ | | str_hash || ディレクトリエントリと xattrs に使用されるハッシュ関数を指定します。{{ic|crc32c}}、{{ic|crc64}}、および {{ic|siphash}} のいずれかを選択できます。 |
||
+ | |- |
||
+ | | nocow || 可能な場合は、すべての書き込みがその場で行われます。スナップショットと reflink では引き続き書き込みが COW になります。このオプションはデータのチェックサム、圧縮、暗号化を暗黙的に無効にします。 |
||
+ | |- |
||
+ | | encrypted || ファイルシステム (chacha20/poly1305) で [https://bcachefs.org/Encryption/ 暗号化] を有効にします。パスフレーズの入力を求められます。 |
||
+ | |- |
||
+ | |} |
||
+ | |||
+ | その他のオプションについては、[https://bcachefs-docs.readthedocs.io/en/latest/options.html bcachefs ドキュメント] を参照してください。 |
||
+ | |||
+ | 以下は、{{ic|1=bcachefs setattr ''file'' --option=value}} を使用して、ディレクトリごとまたはファイルごとに設定することもできます。ディレクトリにオプションを設定すると、再帰的にオプションが伝播されます。 |
||
+ | |||
+ | {{Note|rebalance thread はまだバックグラウンドで replicas を調整していません。つまり、ファイルの replicas オプションを変更する場合は、手動で rereplicate コマンドを実行して、古いファイルが新しいルールに従っていることを確認する必要があります。}} |
||
− | 以下は、 {{ic|1=bcachefs setattr ''file'' --option=value}} を使用して、ディレクトリごとまたはファイルごとに設定することもできます。 |
||
* data_replicas |
* data_replicas |
||
* data_checksum |
* data_checksum |
||
81行目: | 105行目: | ||
* foreground_target, background_target, promote_target |
* foreground_target, background_target, promote_target |
||
+ | どのオプションがアクティブであるかを確認するには、{{ic|getfattr -d -m 'bcachefs_effective\.' ''directory/file''}} を実行します。 |
||
− | {{Note|現在、ディスク使用量レポートには非圧縮サイズが表示されています。それ以外の場合、圧縮は完了しています。}} |
||
+ | |||
+ | {{Note|ディスク使用量レポートは現在、非圧縮サイズを表示しています。それ以外は圧縮が完了しています。}} |
||
=== デバイスのグループの変更 === |
=== デバイスのグループの変更 === |
2024年7月19日 (金) 23:55時点における版
関連記事
Bcachefs は、Btrfs と ZFS の機能をよりクリーンなコードベース、より安定性、より高速、GPL 互換のライセンスを提供することを目的とした次世代の CoW ファイルシステムです。
Bcache は、主に Kent Overstreet によって開発されています。
目次
インストール
カーネル 6.7 (2024年1月) で Bcachefs はアップストリーム カーネル にマージされ、linux パッケージで利用できるようになりました。他のカーネルパッケージは 6.7 より古いバージョンをベースにしている可能性があり、Bcachefs 用の特別なパッチが必要です。
Bcachefs ユーザースペースツールは bcachefs-tools から入手できます。
セットアップ
シングルドライブ
#bcachefs format /dev/sda #mount -t bcachefs /dev/sda/mnt
複数のドライブ
Bcachefs は、RAID0 と同様に、デフォルトでデータをストライプ化します。冗長性は replicas オプションを介して処理されます。--replicas=2
を備えた 2 台のドライブは RAID1 に相当し、--replicas=2
を備えた 4 台のドライブは RAID10 に相当します。
# bcachefs format /dev/sda /dev/sdb --replicas=n # mount -t bcachefs /dev/sda:/dev/sdb /mnt
異種ドライブがサポートされています。サイズが異なる場合は、一部に大きなストライプが使用され、すべてが同じ割合で埋められます。速度が異なる場合、複製されたデータの読み取りは、IO 遅延が最も短いデータに送信されます。一部が他よりも信頼性が高い場合 (ハードウェア RAID デバイスなど)、--durability=2 device
を設定して、そのデバイス上のデータの各コピーを 2 つの複製としてカウントできます。
SSD キャッシング
Bcachefs には、バックグラウンド、フォアグラウンド、プロモートの3つのストレージカテゴリがあります。ファイルシステムへの書き込みでは、フォアグラウンドドライブに優先順位が付けられ、その後、時間の経過とともにバックグラウンドに移動されます。読み取りはプロモートドライブにキャッシュされます。
推奨される設定は、フォアグラウンドとプロモートに ssd グループを使用し、バックグラウンド (ライトバックキャッシュ) に hdd グループを使用することです。
# bcachefs format \ --label=ssd.ssd1 /dev/sda \ --label=ssd.ssd2 /dev/sdb \ --label=hdd.hdd1 /dev/sdc \ --label=hdd.hdd2 /dev/sdd \ --label=hdd.hdd3 /dev/sde \ --label=hdd.hdd4 /dev/sdf \ --replicas=2 \ --foreground_target=ssd \ --promote_target=ssd \ --background_target=hdd # mount -t bcachefs /dev/sda:/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde:/dev/sdf /mnt
ライトスルーキャッシュの場合は、上記と同じことを行いますが、各 SSD デバイスで --durability=0 device
を設定します。
ライトアラウンドキャッシュの場合、フォアグラウンドターゲットを hdd グループに、ターゲットを ssd グループにプロモートします。
マウント
デフォルトのマウント方法では、マウントディレクティブですべてのデバイスを指定します。
# mount -t bcachefs /dev/sdA:/dev/sdB:/dev/sdC:/dev/sdD:/
mount.bcachefs
コマンドは、UUID によるファイルシステムのマウントをサポートしています。
これは、ファイルシステムの作成時に bcachefs format
によって表示されます。
# mount.bcachefs UUID=f66d108f-83d2-4679-b50b-7d5e710f6a2b /mnt/
設定
ほとんどのオプションは、 bcachefs format
中、マウント時 (mount -o option=value
)、またはsysfs (echo X > /sys/fs/bcachefs/UUID/options/option
) フォーマット中にオプションを設定するか、 sysfs を介してオプションを変更すると、ファイルシステムのスーパーブロックに保存され、それらのドライブのデフォルトになります。マウントオプションはこれらのデフォルトを上書きします。
使用可能なオプションの例は次の通りです:
Option | Description |
---|---|
metadata_checksum | メタデータの書き込みに使用されるチェックサムアルゴリズムを指定します。デフォルトのアルゴリズムは crc32c です。none 、crc32c 、crc64 、xxhash のいずれかを選択できます。
|
data_checksum | データの書き込みに使用されるチェックサムアルゴリズムを指定し、metadata_checksum と同じデフォルトとオプションを共有します。
|
compression | (フォアグラウンド) 圧縮に使用するアルゴリズムを指定します。デフォルトでは、このオプションは指定されていません。none 、lz4 、gzip 、zstd のいずれかを選択できます。
|
background_compression | (バックグラウンド) 圧縮に使用するアルゴリズムを指定し、compression. と同じデフォルトとオプションを共有します。
|
str_hash | ディレクトリエントリと xattrs に使用されるハッシュ関数を指定します。crc32c 、crc64 、および siphash のいずれかを選択できます。
|
nocow | 可能な場合は、すべての書き込みがその場で行われます。スナップショットと reflink では引き続き書き込みが COW になります。このオプションはデータのチェックサム、圧縮、暗号化を暗黙的に無効にします。 |
encrypted | ファイルシステム (chacha20/poly1305) で 暗号化 を有効にします。パスフレーズの入力を求められます。 |
その他のオプションについては、bcachefs ドキュメント を参照してください。
以下は、bcachefs setattr file --option=value
を使用して、ディレクトリごとまたはファイルごとに設定することもできます。ディレクトリにオプションを設定すると、再帰的にオプションが伝播されます。
- data_replicas
- data_checksum
- compression, background_compression
- foreground_target, background_target, promote_target
どのオプションがアクティブであるかを確認するには、getfattr -d -m 'bcachefs_effective\.' directory/file
を実行します。
デバイスのグループの変更
# echo group > /sys/fs/bcachefs/filesystem_uuid/dev-X/label
デバイスの追加
# bcachefs device add --group=group /mnt /dev/device
これがグループ内の最初のドライブである場合は、それを使用するためにターゲット設定を変更する必要があります。この例は、キャッシュドライブを追加するためのものです。
# echo new_group > /sys/fs/bcachefs/filesystem_uuid/options/promote_target # echo new_group > /sys/fs/bcachefs/filesystem_uuid/options/foreground_target # echo old_group > /sys/fs/bcachefs/filesystem_uuid/options/background_target
デバイスの削除
まず、少なくとも 2 つのメタデータのレプリカがあることを確認します (Evacuate はメタデータに対して機能していないようです) データとメタデータがすでに複製されている場合は、この手順をスキップできます。
# echo 2 > /sys/fs/bcachefs/UUID/options/metadata_replicas # bcachefs data rereplicate /mnt # bcachefs device set-state device readonly # bcachefs device evacuate device
デバイスを削除します:
# bcachefs device remove device # bcachefs data rereplicate /mnt
ヒントとテクニック
さらに有用なエラーメッセージについては、ジャーナルを確認してください。
フラグの順序
一部の bcachefs format
フラグは、引数の順序に基づいて設定され、フラグが切り替えられた後のドライブにのみ影響します。たとえば、SSD に --durability=0
を持たせて --discard
を有効にし、HDD ではデフォルトを使用する場合は、引数が次の順序で渡されるようにしてください。
# bcachefs format \ --label=hdd.hdd1 /dev/sdC \ --label=hdd.hdd2 /dev/sdD \ --label=hdd.hdd3 /dev/sdE \ --label=hdd.hdd4 /dev/sdF \ --durability=0 --discard \ --label=ssd.ssd1 /dev/sdA \ --label=ssd.ssd2 /dev/sdB \ --replicas=2 \ --foreground_target=ssd \ --promote_target=ssd \ --background_target=hdd
トラブルシューティング
32-ビットプログラムがディレクトリの内容を認識しない
一部の 32-ビットプログラムは、readdir(3) syscall の実行時にファイルシステムから返されるデータの非互換性により、Bcachefs 内のディレクトリの内容の取得に失敗する場合があります。[1]
この問題は、そのようなプログラムの読み書きに tmpfs などの別のファイルシステムを一時的に使用することで回避できます。
スワップファイルにはサポートされていないエクステントが含まれています
Bcachefs は現在 swapfiles をサポートしていません。
マルチデバイス fstab
現在、systemd のバグ があり、fstab でコロンで区切られたデバイスを使用して起動時にマルチデバイス bcachefs ファイルシステムをマウントできません。 mount -a を実行すると機能しますが、起動時にはマウントされません。ただし、bcachefs-tools バージョン 1.7.0 以降では、1 つのデバイスノードを使用してマルチデバイスアレイをマウントできるようになりました。これにより、通常の UUID=
指定子の使用が可能になります。
# UUID=10176fc9-c4fa-4a30-9fd0-a756d861c4cd /mnt bcachefs defaults,nofail 0 0
ファイルシステム UUID / 外部 UUID は、次のいずれかを使用して見つけることができます:
# bcachefs fs usage # bcachefs show-super device
暗号化されたデバイスのマウントエラー
--encrypted
オプションで作成されたデバイスのマウントが、bcachefs locked /dev/sdXY
の後に失敗した場合
ERROR - bcachefs::commands::cmd_mount: Fatal error: Required key not available
これは、キーをセッション [2] に手動でリンクすることで回避できます:
# keyctl link @u @s # mount /dev/sdXY /mnt Enter passphrase:
mount によって照会されるパスフレーズを新たに入力する必要はありません (Enter
を押すだけで十分です。)