BTRFS RAID-1ファイルシステムでデバイスを交換するには?

BTRFS RAID-1ファイルシステムでデバイスを交換するには?

2つの分岐を持つBTRFS RAID-1ファイルシステムがあります。別の読み取りエラーのため、ディスクを交換する必要があります。

したがって、計画は次のようになります。

  1. 3番目の足を追加してください - >結果は次のとおりです。三方鏡
  2. 欠陥のあるディスクを取り出します。 ->結果は次のとおりです。双方向ミラー

だから、次の手順を実行しました。

btrfs dev add /dev/new_device /mnt/foo
btrfs balance /mnt/foo

私はbtrfsが三方ミラーを作ることが正しいことをしたと思います。

別のオプションは、バランスの取れたフィルタを使用することです。しかし、ファイルシステムはすでにRAID-1なので必要ありませんか?

btrfs fi show次のように印刷されているので少し心配です。

バランスをとる前に:

    Total devices 3 FS bytes used 2.15TiB
    devid    1 size 2.73TiB used 2.16TiB path /dev/left
    devid    2 size 2.73TiB used 2.16TiB path /dev/right
    devid    3 size 2.73TiB used 0.00B path /dev/new_device

バランス期間:

    Total devices 3 FS bytes used 2.15TiB
    devid    1 size 2.73TiB used 1.93TiB path /dev/left
    devid    2 size 2.73TiB used 1.93TiB path /dev/right
    devid    3 size 2.73TiB used 458.03GiB path /dev/new_device

私の言うことは、これはbtrfsが既存のRAID-1グループの半分を単一のディスクにバランスさせるようです...そうですか?

それで、私の質問は、3方向ミラーを得るためにバランスの取れたフィルタを指定する必要がありますか?

添付:btrfsはn方向ミラーリングをサポートしていますか? ㅏbtrfs Wikiの注意事項そうではありませんが、おそらく昔ながらですか?良い人、cksは最近、双方向制限に関する記事を掲載しました。

ベストアンサー1

現在のbtrfs確かにサポートするN方向ミラー

Btrfsには特別な代替サブコマンドがあります。

btrfs replace start /dev/left /dev/new_device /mnt/foo

マニュアルページの行間を読み取ると、コマンドはbtrfs-replace2つの既存のブランチを使用できる必要があります(たとえば、両方のブランチに読み取りエラーがある場合など)。しかし、両方のエラーセットは互いに分離されています。

btrfs 代替コマンドはバックグラウンドで実行されます。statusたとえば、サブコマンドでステータスを確認できます。

btrfs replace status /mnt/foo
45.4% done, 0 write errs, 0 uncorr. read errs

あるいは、raid-1ファイルシステムにデバイスを追加し、既存のブランチを削除することもできます。

btrfs dev add /dev/mapper/new_device /mnt/foo
btrfs dev delete /dev/mapper/right  /mnt/foo

addデバイスを追加するだけですぐに返す必要があります(btrfs fi show確認するにはaを実行してください)。

以下は、delete残りのすべてのデバイスで各拡張機能を使用できるように、残りのデバイス間のバランスをトリガーする必要があります。したがって、命令が長時間実行される可能性があります。この方法は、質問で説明されている状況を処理するのにも適しています。

システムログには、スパムの追加と削除と比較してbtrfs replace低レベルの情報メッセージが含まれています。また、完了するのにはるかに長い時間がかかります(たとえば、3TB SATAドライブ、80%FS使用量のテストシステムでは2〜3倍かかりました)。

btrfs fi resize最後に、実際の交換後に新しいデバイスが元のデバイスよりも大きい場合は、利用可能なディスク容量全体を利用するために各デバイスで実行する必要があります。上の例はreplace次のとおりです。

btrfs fi resize <devid>:max /mnt/foo

devid返されたデバイスIDを示しますbtrfs fi show

おすすめ記事