「Bcachefs」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎ヒントとテクニック: リンクを追加)
 
(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 ユーザースペースツールは {{AUR|bcachefs-tools-git}} から入手できます。
 
Bcachefs ユーザースペースツールは {{AUR|bcachefs-tools-git}} から入手できます。
   
== Setup ==
+
== セットアップ ==
   
=== Single drive ===
+
=== シングルドライブ ===
   
# bcachefs format /dev/sda
+
#bcachefs format /dev/sda
# mount -t bcachefs /dev/sda /mnt
+
#mount -t bcachefs /dev/sda/mnt
   
=== Multiple drives in RAID0/1 ===
+
=== 複数のドライブ===
   
  +
Bcachefs は、RAID0 と同様に、デフォルトでデータをストライプ化します。冗長性は '''replicas''' オプションを介して処理されます。{{ic|1=--replicas=2}} を備えた 2 台のドライブは RAID1 に相当し、{{ic|1=--replicas=2}} を備えた 4 台のドライブは RAID10 に相当します。
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/sda1:/dev/sdb1 /mnt
+
# 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 \
--group=ssd /dev/sda /dev/sdb
+
--label=ssd.ssd1 /dev/sda \
--group=hdd /dev/sdc /dev/sdd /dev/sde /dev/sdf \
+
--label=ssd.ssd2 /dev/sdb \
--data_replicas=1 --metadata_replicas=2 \
+
--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 \
--background_target=hdd \
+
--promote_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)
  +
*(foreground)compression、background_compression(None、lz4、gzip、zstd)
  +
* foreground_target、background_target、promote_target
   
The following can also be set on a per directory or per file basis with {{ic|1=bcachefs setattr ''file'' --option=value}}
+
以下は、 {{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.}}
 
   
=== Adding a device ===
+
=== デバイスの追加 ===
   
 
# 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.}}
 
   
=== Removing a device ===
+
=== デバイスの削除 ===
  +
  +
まず、少なくとも 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.
 
   
== See also ==
+
== 参照 ==
   
  +
* [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年2月12日 (月) 16:35時点における最新版

関連記事

Bcachefs は、BtrfsZFS の機能をよりクリーンなコードベース、より安定性、より高速、GPL 互換のライセンスを提供することを目的とした次世代の CoW ファイルシステムです。

Bcache は、主に Kent Overstreet によって開発されています。

インストール

カーネル 6.7 (2024年1月) で Bcachefs はアップストリーム カーネル にマージされ、linux パッケージで利用できるようになりました。他のカーネルパッケージは 6.7 より古いバージョンをベースにしている可能性があり、Bcachefs 用の特別なパッチが必要です。

Bcachefs ユーザースペースツールは bcachefs-tools-gitAUR から入手できます。

セットアップ

シングルドライブ

#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 を介してオプションを変更すると、ファイルシステムのスーパーブロックに保存され、それらのドライブのデフォルトになります。マウントオプションはこれらのデフォルトを上書きします。

ノート: sysfs を使用できるようにするには、ファイルシステムをマウントする必要があります。 fsck を除くすべての操作はライブファイルシステムで可能です
  • 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 などの別のファイルシステムを一時的に使用することで回避できます。

参照