「Bcachefs」の版間の差分
(→Setup: 翻訳) |
(bcachefs-toolsの公式リポジトリ入りを反映) |
||
(2人の利用者による、間の17版が非表示) | |||
1行目: | 1行目: | ||
[[Category:ファイルシステム]] |
[[Category:ファイルシステム]] |
||
[[en:Bcachefs]] |
[[en:Bcachefs]] |
||
+ | [[zh-hans:Bcachefs]] |
||
− | [https://bcachefs.org/ Bcachefs] は、 [[Btrfs]] と [[ZFS]] の機能をよりクリーンなコードベース、より安定性、より高速、 GPL 互換のライセンスを提供することを目的とした次世代の CoW ファイルシステムです。 |
||
+ | {{Related articles start}} |
||
+ | {{Related|ファイルシステム}} |
||
+ | {{Related articles end}} |
||
+ | [https://bcachefs.org/ Bcachefs] は、[[Btrfs]] と [[ZFS]] の機能をよりクリーンなコードベース、より安定性、より高速、GPL 互換のライセンスを提供することを目的とした次世代の CoW ファイルシステムです。 |
||
− | 主に Kent Overstreet によって開発されています。 |
+ | [[Bcache]] は、主に 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 用の特別なパッチが必要です。 |
||
− | Bcachefs はまだアップストリーム [[カーネル]] にありませんが、 {{AUR|linux-bcachefs-git}} カーネルは [[AUR]]からインストールできます。 |
||
− | Bcachefs ユーザースペースツールは {{ |
+ | Bcachefs ユーザースペースツールは {{Pkg|bcachefs-tools}} から入手できます。 |
== セットアップ == |
== セットアップ == |
||
18行目: | 22行目: | ||
#mount -t bcachefs /dev/sda/mnt |
#mount -t bcachefs /dev/sda/mnt |
||
− | === |
+ | === 複数のドライブ=== |
− | Bcachefs は |
+ | Bcachefs は、RAID0 と同様に、デフォルトでデータをストライプ化します。冗長性は '''replicas''' オプションを介して処理されます。{{ic|1=--replicas=2}} を備えた 2 台のドライブは RAID1 に相当し、{{ic|1=--replicas=2}} を備えた 4 台のドライブは RAID10 に相当します。 |
# 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 つの複製としてカウントできます。 |
||
− | === SSD キャッシングを備えた RAID0/1 === |
||
+ | |||
+ | === SSD キャッシング === |
||
Bcachefs には、バックグラウンド、フォアグラウンド、プロモートの3つのストレージカテゴリがあります。ファイルシステムへの書き込みでは、フォアグラウンドドライブに優先順位が付けられ、その後、時間の経過とともにバックグラウンドに移動されます。読み取りはプロモートドライブにキャッシュされます。 |
Bcachefs には、バックグラウンド、フォアグラウンド、プロモートの3つのストレージカテゴリがあります。ファイルシステムへの書き込みでは、フォアグラウンドドライブに優先順位が付けられ、その後、時間の経過とともにバックグラウンドに移動されます。読み取りはプロモートドライブにキャッシュされます。 |
||
+ | {{Note|これらは、単一の大規模プールに対する優先ガイドラインにすぎません。書き込みは、フォアグラウンドがいっぱいの場合はバックグラウンドに直接行われ、両方がいっぱいの場合はプロモートに行われます。メタデータはフォアグラウンドを優先しますが、どのメタデータにも書き込むことができます。キャッシュドライブにはまだデータが含まれている可能性があるため、キャッシュドライブを削除するときは注意してください。[[Bcachefs#デバイスの削除|デバイスの削除]] を参照してください。}} |
||
− | 次の例のように、推奨される構成は、フォアグラウンドとプロモートに ssd グループを使用し、バックグラウンドに hdd グループを使用することです。 |
||
+ | 推奨される設定は、フォアグラウンドとプロモートに ssd グループを使用し、バックグラウンド (ライトバックキャッシュ) に hdd グループを使用することです。 |
||
− | {{Note|これらはストレージの分離された「層」ではありません。これらは、単一の大きなプールのガイドラインにすぎません。フォアグラウンドがいっぱいの場合はバックグラウンドに書き込み、両方がいっぱいの場合はプロモートします。メタデータはそれらのいずれにも書き込むことができます。この構成では、データを失うことなくキャッシュドライブに障害が発生する可能性があるため、 {{ic|metadata_replicas}} は少なくとも2である必要があります。}} |
||
# 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}} |
||
+ | ほとんどのオプションは、 {{ic|bcachefs format}} 中、マウント時 ({{ic|1=mount -o option=value}})、またはsysfs ({{ic|echo X > /sys/fs/bcachefs/''UUID''/options/''option''}}) フォーマット中にオプションを設定するか、 sysfs を介してオプションを変更すると、ファイルシステムのスーパーブロックに保存され、それらのドライブのデフォルトになります。マウントオプションはこれらのデフォルトを上書きします。 |
||
− | * data_checksum, metadata_checksum (none, crc32c, crc64) |
||
+ | {{Note|sysfs を使用できるようにするには、ファイルシステムをマウントする必要があります。 fsck を除くすべての操作はライブファイルシステムで可能です}} |
||
− | * (foreground) compression, background_compression (none, lz4, gzip, zstd) |
||
− | * foreground_target, background_target, promote_target |
||
+ | * data_checksum、metadata_checksum(none、crc32c、crc64) |
||
− | The following can also be set on a per directory or per file basis with {{ic|1=bcachefs setattr ''file'' --option=value}} |
||
+ | *(foreground)compression、background_compression(None、lz4、gzip、zstd) |
||
+ | * foreground_target、background_target、promote_target |
||
+ | |||
+ | 以下は、 {{ic|1=bcachefs setattr ''file'' --option=value}} を使用して、ディレクトリごとまたはファイルごとに設定することもできます。 |
||
* data_replicas |
* data_replicas |
||
* data_checksum |
* data_checksum |
||
58行目: | 70行目: | ||
* foreground_target, background_target, promote_target |
* foreground_target, background_target, promote_target |
||
+ | {{Note|現在、ディスク使用量レポートには非圧縮サイズが表示されています。それ以外の場合、圧縮は完了しています。}} |
||
− | {{Note|Disk usage reporting currently shows uncompressed size. Compression is otherwise complete.}} |
||
+ | === デバイスのグループの変更 === |
||
− | === 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 |
||
76行目: | 88行目: | ||
# 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 |
||
86行目: | 99行目: | ||
# 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 == |
||
+ | |||
+ | さらに有用なエラーメッセージについては、[[systemd/ジャーナル|ジャーナル]]を確認してください。 |
||
+ | == トラブルシューティング == |
||
− | {{Expansion|Information on auto-mounting would be useful}} |
||
+ | === 32-ビットプログラムがディレクトリの内容を認識しない === |
||
− | === Documentation === |
||
+ | 一部の 32-ビットプログラムは、{{man|3|readdir}} syscall の実行時にファイルシステムから返されるデータの非互換性により、Bcachefs 内のディレクトリの内容の取得に失敗する場合があります。[https://github.com/koverstreet/bcachefs/issues/650] |
||
− | Up-to-date documentation is only available via {{ic|bcachefs --help}}. The man page, for instance, includes the now-useless {{ic|--tier}} option. |
||
+ | この問題は、そのようなプログラムの読み書きに [[tmpfs]] などの別のファイルシステムを一時的に使用することで回避できます。 |
||
− | 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]] |
2024年5月8日 (水) 11:04時点における版
関連記事
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 グループにプロモートします。
設定
ほとんどのオプションは、 bcachefs format
中、マウント時 (mount -o option=value
)、またはsysfs (echo X > /sys/fs/bcachefs/UUID/options/option
) フォーマット中にオプションを設定するか、 sysfs を介してオプションを変更すると、ファイルシステムのスーパーブロックに保存され、それらのドライブのデフォルトになります。マウントオプションはこれらのデフォルトを上書きします。
- data_checksum、metadata_checksum(none、crc32c、crc64)
- (foreground)compression、background_compression(None、lz4、gzip、zstd)
- foreground_target、background_target、promote_target
以下は、 bcachefs setattr file --option=value
を使用して、ディレクトリごとまたはファイルごとに設定することもできます。
- data_replicas
- data_checksum
- compression, background_compression
- foreground_target, background_target, promote_target
デバイスのグループの変更
# 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
ヒントとテクニック
さらに有用なエラーメッセージについては、ジャーナルを確認してください。
トラブルシューティング
32-ビットプログラムがディレクトリの内容を認識しない
一部の 32-ビットプログラムは、readdir(3) syscall の実行時にファイルシステムから返されるデータの非互換性により、Bcachefs 内のディレクトリの内容の取得に失敗する場合があります。[1]
この問題は、そのようなプログラムの読み書きに tmpfs などの別のファイルシステムを一時的に使用することで回避できます。