6.4. 複数のデバイスの統合ボリューム管理
多くのデバイスでは、その上に btrfs ファイルシステムを作成できます。また、ファイルシステムの作成後にデバイスを追加することもできます。デフォルトでは、メタデータは 2 つのデバイス間でミラーリングされ、データは存在するすべてのデバイス間でストライプ化されますが、1 つのデバイスのみが存在する場合、メタデータはそのデバイス上で複製されます。
6.4.1. 複数のデバイスを使用したファイルシステムの作成
- raid0
- raid1
- raid10
- dup
- single
-m single オプションは、メタデータの重複を行わないように指示します。これは、ハードウェア RAID を使用する場合に望ましい場合があります。
注記
RAID 10 では、正しく実行するために 4 つ以上のデバイスが必要です。
例6.1 RAID 10 btrfs ファイルシステムの作成
4 つのデバイスにファイルシステムを作成します (メタデータミラーリング、データのストライプ化)。
# mkfs.btrfs /dev/device1 /dev/device2 /dev/device3 /dev/device4
ミラーリングせずにメタデータをストライプ化します。
# mkfs.btrfs -m raid0 /dev/device1 /dev/device2
データとメタデータの両方に raid10 を使用します。
# mkfs.btrfs -m raid10 -d raid10 /dev/device1 /dev/device2 /dev/device3 /dev/device4
1 つのドライブで、メタデータを複製しないでください。
# mkfs.btrfs -m single /dev/device
ドライブのサイズが異なる場合は、single オプションを使用して、各ドライブの全容量を使用します。
# mkfs.btrfs -d single /dev/device1 /dev/device2 /dev/device3
作成済みのマルチデバイスファイルシステムに、新しいデバイスを追加するには、次のコマンドを使用します。
# btrfs device add /dev/device1 /mount-point
btrfs モジュールを再起動または再読み込みした後、btrfs device scan コマンドを使用して、すべてのマルチデバイスファイルシステムを検出します。詳細は、「btrfs デバイスのスキャン」 を参照してください。
6.4.2. btrfs デバイスのスキャン
btrfs device scan を使用して、
/dev
の下にあるすべてのブロックデバイスをスキャンし、btrfs ボリュームをプローブします。ファイルシステムで複数のデバイスを実行している場合は、btrfs モジュールを読み込んだ後に実行する必要があります。
すべてのデバイスをスキャンするには、次のコマンドを使用します。
# btrfs device scan
1 つのデバイスをスキャンするには、以下のコマンドを使用します。
# btrfs device scan /dev/device
6.4.3. btrfs ファイルシステムへの新しいデバイスの追加
btrfs filesystem show コマンドを使用して、すべての btrfs ファイルシステムと、それらに含まれるデバイスを一覧表示します。
btrfs device add コマンドは、マウントされたファイルシステムに新しいデバイスを追加するために使用されます。
btrfs filesystem balance コマンドは、割り当てられたエクステントを既存デバイスすべてに分散(取り除く)します。
新規デバイスを追加するには、以下のコマンドを一緒に実行します。
例6.2 btrfs ファイルシステムへの新しいデバイスの追加
最初に、btrfs ファイルシステムを作成してマウントします。btrfs ファイルシステムの作成に関する詳細は 「btrfs ファイルシステムの作成」 を、btrfs ファイルシステムのマウント方法に関する詳細は 「btrfs ファイルシステムのマウント」 を参照してください。
# mkfs.btrfs /dev/device1 # mount /dev/device1
次に、マウントした btrfs ファイルシステムに、2 番目のデバイスを追加します。
# btrfs device add /dev/device2 /mount-point
これらのデバイスのメタデータとデータは、引き続き
/dev/device1
にのみ保存されます。すべてのデバイスに分散するには、バランスを調整する必要があります。
# btrfs filesystem balance /mount-point
ファイルシステムのバランスを調整するには、ファイルシステムのデータとメタデータをすべて読み込み、新しいデバイス全体でそれを書き換えるため、しばらく時間がかかります。
6.4.4. btrfs ファイルシステムの変換
非 RAID ファイルシステムを RAID に変換するには、デバイスを追加し、チャンク割り当てプロファイルを変更するバランスフィルターを実行します。
例6.3 btrfs ファイルシステムの変換
既存の単一デバイスシステム(この場合は
/dev/sdb1
)を 2 つのデバイス(raid1 システム)に変換して、単一のディスク障害から保護するには、次のコマンドを使用します。
# mount /dev/sdb1 /mnt # btrfs device add /dev/sdc1 /mnt # btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt
重要
メタデータがシングルデバイスのデフォルトから変換されない場合は、DUP のままになります。これは、ブロックのコピーが別々のデバイスにあることを保証するものではありません。データが変換されていない場合、冗長コピーはありません。
6.4.5. btrfs デバイスの削除
btrfs device delete コマンドを使用して、オンラインデバイスを削除します。安全に削除するために、使用中のエクステントをファイルシステム内の他のデバイスに再配布します。
例6.4 btrfs ファイルシステム上のデバイスの削除
まず、いくつかの btrfs ファイルシステムを作成してマウントします。
# mkfs.btrfs /dev/sdb /dev/sdc /dev/sdd /dev/sde # mount /dev/sdb /mnt
ファイルシステムに一部のデータを追加します。
最後に、必要なデバイスを削除します。
# btrfs device delete /dev/sdc /mnt
6.4.6. btrfs ファイルシステムでの障害が発生したデバイスの置き換え
スーパーブロックを引き続き読み取ることができる場合は、障害が発生したデバイスを削除するために 「btrfs デバイスの削除」 を使用できます。ただし、デバイスが見つからないか、スーパーブロックが破損している場合は、ファイルシステムを劣化モードでマウントする必要があります。
# mkfs.btrfs -m raid1 /dev/sdb /dev/sdc /dev/sdd /dev/sde ssd is destroyed or removed, use -o degraded to force the mount to ignore missing devices # mount -o degraded /dev/sdb /mnt 'missing' is a special device name # btrfs device delete missing /mnt
コマンド btrfs device delete missing は、ファイルシステムのメタデータで記述されているが、ファイルシステムがマウントされたときには存在しない最初のデバイスを削除します。
重要
見つからないデバイスを含め、特定の RAID レイアウトに必要なデバイスの最小数を下回ることは不可能です。障害が発生したデバイスを削除するために、新しいデバイスを追加する必要がある場合があります。
たとえば、2 つのデバイスを持つ raid1 レイアウトの場合、デバイスに障害が発生した場合は、以下を行います。
- 動作が低下したモードでのマウント
- 新しいデバイスの追加
- 不足しているデバイスの削除
6.4.7. /etc/fstab
での btrfs ファイルシステムの登録
initrd
がない場合や、btrfs デバイススキャンを実行していない場合は、ファイルシステムのすべてのデバイスを明示的に mount コマンドに渡すことで、マルチボリューム btrfs
ファイルシステムを マウント できます。
例6.5 /etc/fstab
エントリーの例
適切な
/etc/fstab
エントリーの例を以下に示します。
/dev/sdb /mnt btrfs device=/dev/sdb,device=/dev/sdc,device=/dev/sdd,device=/dev/sde 0
UUID (Universally Unique Identifier) の使用も機能し、デバイスパスを使用するよりも安定していることに注意してください。