2つの分岐を持つBTRFS RAID-1ファイルシステムがあります。別の読み取りエラーのため、ディスクを交換する必要があります。
したがって、計画は次のようになります。
- 3番目の足を追加してください - >結果は次のとおりです。三方鏡
- 欠陥のあるディスクを取り出します。 ->結果は次のとおりです。双方向ミラー
だから、次の手順を実行しました。
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には特別な代替サブコマンドがあります。
btrfs replace start /dev/left /dev/new_device /mnt/foo
マニュアルページの行間を読み取ると、コマンドはbtrfs-replace
2つの既存のブランチを使用できる必要があります(たとえば、両方のブランチに読み取りエラーがある場合など)。しかし、両方のエラーセットは互いに分離されています。
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
。