Btrfs は、Linux 用のオープンソースの汎用ファイル システムです。この名前は、B ツリーを使用して内部ファイル システム構造を格納することに由来します。ファイルシステムには、「Butter F S」や「B-tree F S」など、さまざまな名前が使用されています。 Btrfs の開発は 2007 年に Oracle で開始され、現在、多くの企業 (Red Hat、Fujitsu、Intel、SUSE など) が開発作業に貢献しています。 Btrfs はメインラインの Linux カーネルに含まれています。
コピー オン ライト データとメタデータ
– Btrfs は、最大ファイル サイズ 50 TB、最大ファイル システム サイズ 50 TB のエクステント ベースのファイル ストレージを提供します。
– すべてのデータとメタデータはコピー オン ライトです。これは、データのブロックがディスク上で変更されないことを意味します。 Btrfs は単にブロックをコピーし、そのコピーを別の場所に書き出すだけです。
– 元の場所を更新しないことで、停電時の部分的な更新やデータの破損のリスクを排除できます。
– コピーオンまた、Btrfs の -write の性質により、データのレプリケーション、移行、バックアップ、復元などのファイル システム機能も容易になります。
Btrfs スナップショット
– Btrfs を使用すると、読み取り可能および書き込み可能なスナップショットの両方を作成できます。
– スナップショットは、特定の時点で作成された Btrfs サブボリューム全体のコピーです。
– スナップショットは通常のディレクトリとして表示され、アクセスできます。
– 書き込み可能なスナップショットを使用すると、ファイル システムを以前の状態にロールバックできます。アップグレードによって問題が発生した場合は、スナップショットを作成し、システム アップグレードを実行して、スナップショットで再起動できます。すべてのスナップショットはデフォルトで書き込み可能ですが、読み取り専用スナップショットを作成するオプションもあります。
– 読み取り専用スナップショットはバックアップに役立ち、バックアップが完了したら削除できます。
内蔵 RAID サポート
– Btrfs には、RAID-0、RAID-1、および RAID-10 レベルの RAID サポートも組み込まれています。
– Btrfs の RAID は、mdadm コマンドを使用して作成されたソフトウェア RAID デバイスのようなマルチディスク RAID ではありません。ブロック デバイスをミラーリングしないため、ブロック RAID でもありません。
– Btrfs の RAID は、ブロックごとに「x」個のコピーがあることを保証します。たとえば、RAID-1 の場合、Btrfs は 2 つの異なるデバイスにすべてのコピーを 2 つ保存するだけです。
– Btrfs はすべてのメタデータとデータの CRC を維持するため、データの完全性を破損から保護するためにすべてがチェックサムされます。 RAID-1 または RAID-10 構成では、最初の読み取りでチェックサムが失敗した場合、データは別のコピーから取り出されます。
オンラインのサイズ変更と最適化
– Btrfs にはオンラインでのサイズ変更と最適化機能があります。
– ファイル システムがオンラインのままで、デバイスを追加または削除できます。
– デバイスが削除されると、そのデバイスに保存されているエクステントは、他のデバイスに再配布されます。
– Btrfs がオンラインのときにデバイスを交換することもできます。 Btrfs は新しいディスク全体でエクステントのバランスを取り直してから、Btrfs アレイから古いディスクを削除できます。
透過圧縮
– Btrfs には透過的な圧縮があり、現在 2 つの圧縮方法をサポートしています:zlib とLZO (デフォルト)。
– LZO はより優れた圧縮率を提供しますが、zlib はより高速な圧縮を提供します。
– Btrfs は、ブロックを圧縮できるかどうかを判断できるため、可能な場合にのみ圧縮します。
– 圧縮を有効にし、マウント オプションを使用して圧縮方法を指定します。たとえば、LZO または zlib 圧縮を有効にするには:
# mount –o compress=lzo|zlib [device] [mount_point]
– Btrfs に常にデータを圧縮させることもできます:
# mount -o compress-force [device] [mount_point]
ssd を使用すると Btrfs のパフォーマンスが向上します
– Btrfs は自動的にソリッド ステート ドライブ (SSD) を検出し、回転メディアのすべての最適化をオフにします。
– たとえば、回転するディスクでは、シークを減らすために関連データを近くに保存することが重要です。これには、回転するディスクで良好なデータ局所性を得るために CPU サイクルが必要ですが、これは SSD ではそれほど重要ではありません。
– TRIM サポートは、SSD の最適化でもあります。どのブロックが不要になり、上書きできるようになったかを SSD に伝えます。
小さなファイルの効率的なストレージ
– Btrfs は、小さなファイルに効率的なストレージを提供します。
– すべての Linux ファイル システムは、ストレージをブロック サイズ (4 KB など) でアドレス指定します。他のファイル システムでは、4 KB より小さいファイルは残りのスペースを浪費します。
– Btrfs はこれらの小さいファイルをメタデータに直接保存するため、小さなファイルを作成および読み取るときに、他のファイル システムよりもパフォーマンスが大幅に向上します。
パフォーマンスを向上させるために Btrfs ファイル システムを調整する方法