Btrfsファイル・システムの設定と管理

この項では、Btrfsファイル・システムの作成手順と、より効率的な使用のための管理手順について説明します。

Btrfsファイル・システムの作成

ノート:

/sbin/mkfs.*ツールは、btrfsコマンドで必要なカーネル・モジュールと同じパッケージでは提供されないことに注意してください。modinfo btrfsコマンドを使用して、ブートされているカーネルでbtrfsモジュールが使用可能かどうかを確認します。また、システムにbtrfs-progsパッケージがインストールされていない場合は、インストールする必要もあります。

mkfs.btrfsコマンドを使用して、1つ以上のブロック・デバイス全体に配置されるBtrfsファイル・システムを作成できます。デフォルトの構成では、デバイス間でファイルシステム・メタデータをミラー化します。単一のデバイスを指定すると、メタデータの1つのコピーだけを使用するように指定しないかぎり、そのデバイスでメタデータが複製されます。デバイスは、ブロック・デバイス全体、単純なディスク・パーティション、ファイル、ループバック・デバイス(メモリー内のディスク・イメージ)、マルチパス・デバイス、またはハードウェアにRAIDを実装するLUNを指定できます。

mkfs.btrfsコマンドの詳細は、mkfs.btrfs(8)マニュアル・ページを参照してください。各種のBtrfs構成を作成できます。

ファイル・システムをマウントする場合、次のようにそのコンポーネント・デバイスのいずれかによって指定できます。

sudo mkfs.btrfs -d raid10 -m raid10 /dev/sd[fghijk]
sudo mount /dev/sdf mountpoint

mkfs.btrfsコマンドは、新しいBtrfsデバイスを自動的にスキャンしてカーネルに取り込みます。カーネル内のボリュームの関連デバイスをすべてスキャンしてアセンブルするには、btrfs device scanコマンドを実行する必要があります。この操作は、btrfs device scan --forgetコマンドを使用して元に戻すことができます。ボリュームの関連デバイスをすべてアセンブルするには、 btrfs device scanコマンドの実行が必要になることがあります。

次のようにすると、マウントされているbtrfsファイル・システムのRAID構成を取得できます。

sudo btrfs filesystem df mountpoint

btrfs filesystem dfコマンドは、Btrfsファイル・システムによって使用される領域について、dfコマンドを使用するよりも正確な情報を表示することに注意してください。

また、btrfs filesystem usageコマンドを使用すると、システム上のすべてのbtrfsファイル・システムに関する情報を表示することもできます。次に例を示します。

sudo btrfs filesystem usage /btrfs
Overall:
    Device size: 1.95TiB
    Device allocated: 5.03GiB
    Device unallocated: 1.95TiB
    Device missing: 0.00B
    Used: 256.00KiB
    Free (estimated): 999.48GiB (min: 999.48GiB)
    Data ratio: 2.00
    Metadata ratio: 2.00
    Global reserve: 3.25MiB (used: 0.00B)

Data,RAID10: Size:2.00GiB, Used:0.00B (0.00%)
   /dev/nvme0n1p6 1.00GiB
   /dev/nvme0n1p7 1.00GiB
   /dev/nvme0n1p8 1.00GiB
   /dev/nvme0n1p9 1.00GiB

Metadata,RAID10: Size:512.00MiB, Used:112.00KiB (0.02%)
   /dev/nvme0n1p6 256.00MiB
   /dev/nvme0n1p7 256.00MiB
   /dev/nvme0n1p8 256.00MiB
   /dev/nvme0n1p9 256.00MiB

System,RAID10: Size:16.00MiB, Used:16.00KiB (0.10%)
   /dev/nvme0n1p6 8.00MiB
   /dev/nvme0n1p7 8.00MiB
   /dev/nvme0n1p8 8.00MiB
   /dev/nvme0n1p9 8.00MiB

Unallocated:
   /dev/nvme0n1p6 498.74GiB
   /dev/nvme0n1p7 498.74GiB
   /dev/nvme0n1p8 498.74GiB
   /dev/nvme0n1p9 498.74GiB

Btrfsファイル・システムの変更

btrfsコマンドを使用すると、デバイスを追加または削除したり、デバイス間でファイル・システムのデータとメタデータのレイアウトを再調整できます。次の表では、これらのタスクの実行に使用できる各コマンドについて説明します。

コマンド 説明

btrfs device add device mountpoint

指定されたマウント・ポイントにマウントされているファイル・システムにデバイスを追加します。次に例を示します。

btrfs device add /dev/sdd /myfs

btrfs device delete device mountpoint

マウントされているファイル・システムからデバイスを削除します。次に例を示します。

btrfs device delete /dev/sde /myfs

btrfs device delete missing mountpoint

縮退モードでマウントされているファイル・システムから障害デバイスを削除します。次に例を示します。

btrfs device remove missing /myfs

縮退モードでファイル・システムをマウントするには、mountコマンドに-o degradedオプションを指定します。

RAID構成では、デバイスの数が必要な最小数を下回る場合、障害デバイスを削除する前に置換デバイスを追加する必要があります。

btrfs filesystem balance mountpoint

デバイスを追加または削除した後に、使用可能なデバイス全体にファイル・システム・データおよびメタデータを再分散します。

Btrfsファイル・システムの圧縮とデフラグ

Btrfsファイル・システムを圧縮してその有効な容量を増加し、それをデフラグしてI/Oパフォーマンスを向上できます。

次に示す3つの圧縮タイプがサポートされています。

  • zlib

  • lzo

  • zstd

圧縮は3つの方法で有効にできます。

  • subvolumeプロパティの使用。次に例を示します。

    sudo btrfs subvolume create /btrfs/sv1 
    sudo btrfs property set /btrfs/sv1 compression zstd
  • 次のいずれかの方法でのmountオプションの使用。

    lzoタイプを使用すると、ファイル・システム全体のファイル・データが圧縮されます。

    sudo mount -o compress=lzo /dev/sdb /btrfs

    zstdタイプを使用すると、サブボリュームが圧縮されてから/btrfs1マウント・ポイントにマウントされます。

    sudo mount -o compress=zstd,subvolume=sv1 /devsdb /btrfs1 
  • defragmentの使用。次に例を示します。

    sudo btrfs filesystem defragment -czlib /btrfs1/akzo

圧縮はいつでも有効にでき、新しい書込みのみが圧縮されるか、デフラグが実行されます。

Btrfsファイル・システムは、それをデフラグすると同時に圧縮できます。

Btrfsファイル・システムをデフラグするには、次のコマンドを使用します。

sudo btrfs filesystem defragment filesystem_name

Btrfsファイル・システムをデフラグと同時に圧縮するには、次のコマンドを使用します。

sudo btrfs filesystem defragment -c filesystem_name

次のコマンドを使用して、Btrfsファイル・システム内の個々のファイル・システム・オブジェクト(ディレクトリやファイルなど)をデフラグできます。また、オプションで圧縮することもできます。

sudo btrfs filesystem defragment [-c] file_name ...  

自動デフラグメンテーションを設定するには、ファイル・システムのマウント時にautodefragオプションを指定します。ただし、大規模なデータベースや仮想マシンのイメージを対象とする自動デフラグはお薦めできません。

ノート:

コピーオンライトのコピーが含まれるファイルまたはサブボリュームをデフラグすると、ファイルとそのコピー間のリンクが破損します。たとえば、スナップショットが含まれるサブボリュームをデフラグすると、スナップショットがサブボリュームのコピーオンライト・イメージではなくなるため、サブボリュームとそのスナップショットによるディスク使用率が増加します。

Btrfsファイル・システムのサイズ調整

btrfsコマンドを使用すると、マウントされたBtrfsファイル・システムのサイズを増加できます。ただし、基礎になるデバイスに変更に応じた領域がある場合にかぎります。また、そのサイズを減らす場合にもbtrfsコマンドを使用できます(ファイル・システムに十分な空き領域がある場合)。コマンドを実行しても、基礎になるデバイスのレイアウトやサイズには影響しません。

次のようにすると、/mybtrfs1のサイズを2GB増やせます。

sudo btrfs filesystem resize +2g /mybtrfs1

次の例は、/mybtrfs3のサイズを20GBに設定する方法を示しています。

sudo btrfs filesystem resize 20g /mybtrfs3

次のコマンドでは、/mybtrfs2のサイズを4GB減らします。

sudo btrfs filesystem resize -4g /mybtrfs2