「Bcachefs」の版間の差分
(Bcachefsを英語版から転載) |
(→参照: 同期) |
||
(3人の利用者による、間の28版が非表示) | |||
1行目: | 1行目: | ||
[[Category:ファイルシステム]] |
[[Category:ファイルシステム]] |
||
[[en:Bcachefs]] |
[[en:Bcachefs]] |
||
+ | [[zh-hans:Bcachefs]] |
||
+ | {{Related articles start}} |
||
+ | {{Related|ファイルシステム}} |
||
+ | {{Related articles end}} |
||
+ | [https://bcachefs.org/ Bcachefs] は、[[Btrfs]] と [[ZFS]] の機能をよりクリーンなコードベース、より安定性、より高速、GPL 互換のライセンスを提供することを目的とした次世代の CoW ファイルシステムです。 |
||
+ | [[Bcache]] は、主に Kent Overstreet によって開発されています。 |
||
− | [https://bcachefs.org/ Bcachefs] is a next-generation CoW filesystem that aims to provide features from [[Btrfs]] and [[ZFS]] with a cleaner codebase, more stability, greater speed and a GPL-compatible license. |
||
+ | == インストール == |
||
− | It is built upon [[Bcache]] and is mainly developed by Kent Overstreet. |
||
+ | [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9e87705289667a6c5185c619ea32f3d39314eb1b カーネル 6.7] (2024年1月) で Bcachefs はアップストリーム [[カーネル]] にマージされ、[[linux]] パッケージで利用できるようになりました。他のカーネルパッケージは 6.7 より古いバージョンをベースにしている可能性があり、Bcachefs 用の特別なパッチが必要です。 |
||
− | == Installation == |
||
+ | Bcachefs ユーザースペースツールは {{Pkg|bcachefs-tools}} から入手できます。 |
||
− | Bcachefs is not in the upstream [[Kernel]] yet but the {{AUR|linux-bcachefs-git}} kernel can be installed from the [[AUR]]. |
||
+ | == セットアップ == |
||
− | The Bcachefs userspace tools are available from {{AUR|bcachefs-tools-git}}. |
||
+ | === シングルドライブ === |
||
− | == Setup == |
||
+ | #bcachefs format /dev/sda |
||
− | === Single drive === |
||
+ | #mount -t bcachefs /dev/sda/mnt |
||
+ | === 複数のドライブ=== |
||
− | # bcachefs format /dev/sda |
||
− | # mount -t bcachefs /dev/sda /mnt |
||
+ | Bcachefs は、RAID0 と同様に、デフォルトでデータをストライプ化します。冗長性は '''replicas''' オプションを介して処理されます。{{ic|1=--replicas=2}} を備えた 2 台のドライブは RAID1 に相当し、{{ic|1=--replicas=2}} を備えた 4 台のドライブは RAID10 に相当します。 |
||
− | === Multiple drives in RAID0/1 === |
||
− | |||
− | Bcachefs defines a replica as any instance of data, so 1 replica with 2 drives is equivalent to RAID0, 2 replicas with 2 drives is equivalent to RAID1, etc. |
||
# bcachefs format /dev/sda /dev/sdb --replicas=''n'' |
# bcachefs format /dev/sda /dev/sdb --replicas=''n'' |
||
− | # mount -t bcachefs /dev/ |
+ | # mount -t bcachefs /dev/sda:/dev/sdb /mnt |
+ | 異種ドライブがサポートされています。サイズが異なる場合は、一部に大きなストライプが使用され、すべてが同じ割合で埋められます。速度が異なる場合、複製されたデータの読み取りは、IO 遅延が最も短いデータに送信されます。一部が他よりも信頼性が高い場合 (ハードウェア RAID デバイスなど)、{{ic|1=--durability=2 ''device''}} を設定して、そのデバイス上のデータの各コピーを 2 つの複製としてカウントできます。 |
||
− | === RAID0/1 with SSD caching === |
||
+ | === SSD キャッシング === |
||
− | Bcachefs has 3 categories of storage: background, foreground, and promote. Writes to the filesystem prioritize the foreground drives, which are then moved to the background over time. Reads are cached on the promote drives. |
||
+ | Bcachefs には、バックグラウンド、フォアグラウンド、プロモートの3つのストレージカテゴリがあります。ファイルシステムへの書き込みでは、フォアグラウンドドライブに優先順位が付けられ、その後、時間の経過とともにバックグラウンドに移動されます。読み取りはプロモートドライブにキャッシュされます。 |
||
− | A recommended configuration is to use an ssd group for the foreground and promote, and an hdd group for the background, as in the following example. |
||
+ | {{Note|これらは、単一の大規模プールに対する優先ガイドラインにすぎません。書き込みは、フォアグラウンドがいっぱいの場合はバックグラウンドに直接行われ、両方がいっぱいの場合はプロモートに行われます。メタデータはフォアグラウンドを優先しますが、どのメタデータにも書き込むことができます。キャッシュドライブにはまだデータが含まれている可能性があるため、キャッシュドライブを削除するときは注意してください。[[Bcachefs#デバイスの削除|デバイスの削除]] を参照してください。}} |
||
− | {{Note|These are not separated "tiers" of storage. They are just guidelines for a single large pool. Writes will go directly to the background if the foreground is full, or to promote if they both are. Metadata can be written to any of them. In this configuration, {{ic|metadata_replicas}} should be at least 2, so that a cache drive may be able to fail without causing data loss.}} |
||
+ | |||
+ | 推奨される設定は、フォアグラウンドとプロモートに ssd グループを使用し、バックグラウンド (ライトバックキャッシュ) に hdd グループを使用することです。 |
||
# bcachefs format \ |
# 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 \ |
--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 |
+ | # mount -t bcachefs /dev/sda:/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde:/dev/sdf /mnt |
+ | ライトスルーキャッシュの場合は、上記と同じことを行いますが、各 SSD デバイスで {{ic|1=--durability=0 ''device''}} を設定します。 |
||
− | == Configuration == |
||
+ | ライトアラウンドキャッシュの場合、フォアグラウンドターゲットを hdd グループに、ターゲットを ssd グループにプロモートします。 |
||
− | {{Expansion|Missing details on which options should be used}} |
||
+ | === マウント === |
||
− | Most options can be set at either during {{ic|bcachefs format}}, at mount time ({{ic|1=mount -o option=value}}), or through sysfs ({{ic|echo X > /sys/fs/bcachefs/''UUID''/options/''option''}}). Setting the option during format or changing it through sysfs saves it in the filesystem's superblock, making it the default for those drives. Mount options override those defaults. |
||
− | {{Note|The filesystem must be mounted for sysfs to be available. All operations except fsck are possible on a live filesystem}} |
||
+ | デフォルトのマウント方法では、マウントディレクティブですべてのデバイスを指定します。 |
||
− | * data_checksum, metadata_checksum (none, crc32c, crc64) |
||
+ | |||
− | * (foreground) compression, background_compression (none, lz4, gzip, zstd) |
||
+ | # mount -t bcachefs /dev/sd''A'':/dev/sd''B'':/dev/sd''C'':/dev/sd''D'':/ |
||
− | * foreground_target, background_target, promote_target |
||
+ | |||
+ | {{ic|mount.bcachefs}} コマンドは、UUID によるファイルシステムのマウントをサポートしています。 |
||
+ | これは、ファイルシステムの作成時に {{ic|bcachefs format}} によって表示されます。 |
||
+ | |||
+ | # mount.bcachefs UUID=f66d108f-83d2-4679-b50b-7d5e710f6a2b /mnt/ |
||
+ | |||
+ | == 設定 == |
||
+ | |||
+ | ほとんどのオプションは、 {{ic|bcachefs format}} 中、マウント時 ({{ic|1=mount -o option=value}})、またはsysfs ({{ic|echo X > /sys/fs/bcachefs/''UUID''/options/''option''}}) フォーマット中にオプションを設定するか、 sysfs を介してオプションを変更すると、ファイルシステムのスーパーブロックに保存され、それらのドライブのデフォルトになります。マウントオプションはこれらのデフォルトを上書きします。 |
||
+ | |||
+ | {{Note|sysfs を使用できるようにするには、ファイルシステムをマウントする必要があります。 fsck を除くすべての操作はライブファイルシステムで可能です}} |
||
+ | |||
+ | 使用可能なオプションの例は次の通りです: |
||
+ | |||
+ | {| class="wikitable" |
||
+ | |+ Bcachefs オプション |
||
+ | ! オプション !! 説明 |
||
+ | |- |
||
+ | | 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 コマンドを実行して、古いファイルが新しいルールに従っていることを確認する必要があります。}} |
||
− | The following can also be set on a per directory or per file basis with {{ic|1=bcachefs setattr ''file'' --option=value}} |
||
* data_replicas |
* data_replicas |
||
* data_checksum |
* data_checksum |
||
59行目: | 105行目: | ||
* foreground_target, background_target, promote_target |
* foreground_target, background_target, promote_target |
||
+ | どのオプションがアクティブであるかを確認するには、{{ic|getfattr -d -m 'bcachefs_effective\.' ''directory/file''}} を実行します。 |
||
− | {{Note|Disk usage reporting currently shows uncompressed size. Compression is otherwise complete.}} |
||
+ | {{Note|ディスク使用量レポートは現在、非圧縮サイズを表示しています。それ以外は圧縮が完了しています。}} |
||
− | === Changing a device's group === |
||
+ | |||
+ | === デバイスのグループの変更 === |
||
# echo ''group'' > /sys/fs/bcachefs/''filesystem_uuid''/dev-''X''/label |
# echo ''group'' > /sys/fs/bcachefs/''filesystem_uuid''/dev-''X''/label |
||
+ | {{Note|これを有効にするには、再マウントが必要です。}} |
||
− | {{Note|This requires a remount to take effect.}} |
||
− | === |
+ | === デバイスの追加 === |
# bcachefs device add --group=''group'' /mnt /dev/''device'' |
# bcachefs device add --group=''group'' /mnt /dev/''device'' |
||
+ | これがグループ内の最初のドライブである場合は、それを使用するためにターゲット設定を変更する必要があります。この例は、キャッシュドライブを追加するためのものです。 |
||
− | If this is the first drive in a group, you'll need to change the target settings to make use of it. This example is for adding a cache drive. |
||
# echo ''new_group'' > /sys/fs/bcachefs/''filesystem_uuid''/options/promote_target |
# echo ''new_group'' > /sys/fs/bcachefs/''filesystem_uuid''/options/promote_target |
||
77行目: | 125行目: | ||
# echo ''old_group'' > /sys/fs/bcachefs/''filesystem_uuid''/options/background_target |
# echo ''old_group'' > /sys/fs/bcachefs/''filesystem_uuid''/options/background_target |
||
+ | {{Note|追加されたデバイス間でストライピングされるのは新しい書き込みのみです。ディスクのリバランスがトリガーされると、ディスク使用量が特定のしきい値に達するまで、既存のものは変更されません。現在、リバランス/リストライプを手動でトリガーすることはできません。}} |
||
− | {{Note|Only new writes will be striped across added devices. Existing ones will be unchanged until disk usage reaches a certain threshold, when the disk rebalance is triggered. It is not currently possible to manually trigger a rebalance/restripe.}} |
||
− | === |
+ | === デバイスの削除 === |
+ | |||
+ | まず、少なくとも 2 つのメタデータのレプリカがあることを確認します (Evacuate はメタデータに対して機能していないようです) データとメタデータがすでに複製されている場合は、この手順をスキップできます。 |
||
− | First make sure there are at least 2 metadata replicas (Evacuate does not appear to work for metadata). If your data and metadata are already replicated, you may skip this step. |
||
# echo 2 > /sys/fs/bcachefs/''UUID''/options/metadata_replicas |
# echo 2 > /sys/fs/bcachefs/''UUID''/options/metadata_replicas |
||
# bcachefs data rereplicate /mnt |
# bcachefs data rereplicate /mnt |
||
87行目: | 136行目: | ||
# bcachefs device evacuate ''device'' |
# bcachefs device evacuate ''device'' |
||
+ | デバイスを削除します: |
||
− | To remove the device. |
||
+ | |||
# bcachefs device remove ''device'' |
# bcachefs device remove ''device'' |
||
# bcachefs data rereplicate /mnt |
# bcachefs data rereplicate /mnt |
||
+ | === レプリケーション === |
||
− | == Tips and tricks == |
||
+ | |||
+ | メタデータとデータのレプリカは、ユーザーが望む冗長性のレベルに応じて個別に設定できます。レプリカに関連するオプションは 5 つあります。 |
||
+ | |||
+ | * {{ic|1=--replicas=X}} メタデータとデータのレプリカの数を同時に設定します。 |
||
+ | * {{ic|1=--metadata_replicas=X}} 最終的に書き込まれるメタデータのレプリカの数を設定します。 |
||
+ | * {{ic|1=--data_replicas=X}} 最終的に書き込まれるデータレプリカの数を設定します。 |
||
+ | * {{ic|1=--metadata_replicas_required=X}} メタデータが "書き込まれた" とみなされる前に書き込む必要があるメタデータのレプリカの数を設定します。 |
||
+ | * {{ic|1=--data_replicas_required=X}} データが "書き込まれた" とみなされる前に書き込む必要があるデータレプリカの数を設定します。 |
||
+ | |||
+ | {{Note|{{ic|--[meta]data_replicas_required}} と {{ic|--[meta]data_replicas}} の区別は重要で、replicas required 値はすぐに書き込まれるレプリカの数のフロアを設定するのに対し、replicas 値は最終的に書き込まれるレプリカの目標数を設定します。 |
||
+ | }} |
||
+ | |||
+ | === 圧縮 === |
||
+ | |||
+ | 圧縮は、{{ic|1=--compression=}} オプションで設定します。圧縮レベルの設定も可能です。zstd 圧縮レベル 5 を設定する例、{{ic|1=--compression=zstd:5}} |
||
+ | |||
+ | == ヒントとテクニック == |
||
+ | |||
+ | さらに有用なエラーメッセージについては、[[systemd/ジャーナル|ジャーナル]]を確認してください。 |
||
+ | |||
+ | === フラグの順序 === |
||
+ | |||
+ | 一部の {{ic|bcachefs format}} フラグは、引数の順序に基づいて設定され、フラグが切り替えられた後のドライブにのみ影響します。たとえば、SSD に {{ic|1=--durability=0}} を持たせて {{ic|--discard}} を有効にし、HDD ではデフォルトを使用する場合は、引数が次の順序で渡されるようにしてください。 |
||
+ | |||
+ | # bcachefs format \ |
||
+ | --label=hdd.hdd1 /dev/sd''C'' \ |
||
+ | --label=hdd.hdd2 /dev/sd''D'' \ |
||
+ | --label=hdd.hdd3 /dev/sd''E'' \ |
||
+ | --label=hdd.hdd4 /dev/sd''F'' \ |
||
+ | --durability=0 --discard \ |
||
+ | --label=ssd.ssd1 /dev/sd''A'' \ |
||
+ | --label=ssd.ssd2 /dev/sd''B'' \ |
||
+ | --replicas=2 \ |
||
+ | --foreground_target=ssd \ |
||
+ | --promote_target=ssd \ |
||
+ | --background_target=hdd |
||
+ | |||
+ | === フォーマット後のレプリカの設定 === |
||
+ | |||
+ | {{ic|set-fs-option}} を使用して、フォーマット後にレプリカ数を設定することができます。 |
||
+ | |||
+ | # bcachefs set-fs-option --metadata_replicas=''2'' --data_replicas=''2'' /dev/sd''X'' |
||
+ | |||
+ | その後、すべてのファイルに次のレプリカが存在することを確認するように bcachefs に指示する必要があります。 |
||
+ | |||
+ | # bcachefs data rereplicate /mnt |
||
+ | |||
+ | == トラブルシューティング == |
||
+ | |||
+ | === 32-ビットプログラムがディレクトリの内容を認識しない === |
||
+ | |||
+ | 一部の 32-ビットプログラムは、{{man|3|readdir}} syscall の実行時にファイルシステムから返されるデータの非互換性により、Bcachefs 内のディレクトリの内容の取得に失敗する場合があります。[https://github.com/koverstreet/bcachefs/issues/650] |
||
+ | |||
+ | この問題は、そのようなプログラムの読み書きに [[tmpfs]] などの別のファイルシステムを一時的に使用することで回避できます。 |
||
+ | |||
+ | === スワップファイルにはサポートされていないエクステントが含まれています === |
||
+ | |||
+ | Bcachefs は現在 [https://github.com/koverstreet/bcachefs/issues/368 swapfiles] をサポートしていません。 |
||
+ | |||
+ | === マルチデバイス fstab === |
||
+ | |||
+ | 現在、[https://github.com/systemd/systemd/issues/8234 systemd のバグ] があり、fstab でコロンで区切られたデバイスを使用して起動時にマルチデバイス bcachefs ファイルシステムをマウントできません。 mount -a を実行すると機能しますが、起動時にはマウントされません。ただし、bcachefs-tools バージョン 1.7.0 以降では、1 つのデバイスノードを使用してマルチデバイスアレイをマウントできるようになりました。これにより、通常の {{ic|1=UUID=}} 指定子の使用が可能になります。 |
||
+ | |||
+ | # UUID=10176fc9-c4fa-4a30-9fd0-a756d861c4cd /mnt bcachefs defaults,nofail 0 0 |
||
+ | |||
+ | ファイルシステム UUID / 外部 UUID は、次のいずれかを使用して見つけることができます: |
||
+ | |||
+ | # bcachefs fs usage |
||
+ | # bcachefs show-super device |
||
+ | |||
+ | === 暗号化されたデバイスのマウントエラー === |
||
+ | {{ic|--encrypted}} オプションで作成されたデバイスのマウントが、{{ic|bcachefs locked /dev/sd''XY''}} の後に失敗した場合 |
||
− | {{Expansion|Information on auto-mounting would be useful}} |
||
+ | ERROR - bcachefs::commands::cmd_mount: Fatal error: Required key not available |
||
+ | これは、キーをセッション [https://lore.kernel.org/all/6018852.lOV4Wx5bFT@lichtvoll.de/] に手動でリンクすることで回避できます: |
||
− | === Documentation === |
||
+ | # keyctl link @u @s |
||
− | Up-to-date documentation is only available via {{ic|bcachefs --help}}. The man page, for instance, includes the now-useless {{ic|--tier}} option. |
||
+ | # mount /dev/sd''XY'' /mnt |
||
+ | Enter passphrase: |
||
+ | ''mount'' によって照会されるパスフレーズを新たに入力する必要はありません ({{ic|Enter}} を押すだけで十分です。) |
||
− | Check dmesg for more useful error messages. |
||
− | == |
+ | == 参照 == |
+ | * [https://bcachefs.org/bcachefs-principles-of-operation.pdf 公式マニュアル] |
||
* [https://www.patreon.com/bcachefs Kent Overstreet's Patreon page] |
* [https://www.patreon.com/bcachefs Kent Overstreet's Patreon page] |
||
* [[Wikipedia:Bcachefs]] |
* [[Wikipedia:Bcachefs]] |
||
+ | * [https://bcachefs-docs.readthedocs.io/en/latest/introduction.html bcachefs on ReadTheDocs] |
2024年9月23日 (月) 14:59時点における最新版
関連記事
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 を介してオプションを変更すると、ファイルシステムのスーパーブロックに保存され、それらのドライブのデフォルトになります。マウントオプションはこれらのデフォルトを上書きします。
使用可能なオプションの例は次の通りです:
オプション | 説明 |
---|---|
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
レプリケーション
メタデータとデータのレプリカは、ユーザーが望む冗長性のレベルに応じて個別に設定できます。レプリカに関連するオプションは 5 つあります。
--replicas=X
メタデータとデータのレプリカの数を同時に設定します。--metadata_replicas=X
最終的に書き込まれるメタデータのレプリカの数を設定します。--data_replicas=X
最終的に書き込まれるデータレプリカの数を設定します。--metadata_replicas_required=X
メタデータが "書き込まれた" とみなされる前に書き込む必要があるメタデータのレプリカの数を設定します。--data_replicas_required=X
データが "書き込まれた" とみなされる前に書き込む必要があるデータレプリカの数を設定します。
圧縮
圧縮は、--compression=
オプションで設定します。圧縮レベルの設定も可能です。zstd 圧縮レベル 5 を設定する例、--compression=zstd:5
ヒントとテクニック
さらに有用なエラーメッセージについては、ジャーナルを確認してください。
フラグの順序
一部の 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
フォーマット後のレプリカの設定
set-fs-option
を使用して、フォーマット後にレプリカ数を設定することができます。
# bcachefs set-fs-option --metadata_replicas=2 --data_replicas=2 /dev/sdX
その後、すべてのファイルに次のレプリカが存在することを確認するように bcachefs に指示する必要があります。
# bcachefs data rereplicate /mnt
トラブルシューティング
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
を押すだけで十分です。)