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
。
答え2
使用するのがreplace
好ましい解決策です。2~3倍速い。balance
。 (device remove
最初に再調整してください。変換タイプを使用しないため、速度が遅くなる可能性soft
があります。)
これにより、障害が発生したディスクがカーネルI / Oをブロックするのを防ぎます。
私は次のことをしました。
- ダウングレードされたファイルシステムが次の
noauto
場所にあることを確認してください。/etc/fstab
- マシンの再起動(I/Oの中断により約20分かかります)
障害が発生したドライブで btrfs fs を含む LVM VG を無効にします。
sudo vgchange -an <failed-vg>
失敗したデバイスを無効にします。
echo 1 | sudo tee /sys/block/sdb/device/delete
ファイルシステムのマウント
-o rw,degraded
(ノート:degraded
のみ利用可能一度)失敗の理由は次の
devid
とおりです。btrfs filesystem show /mountpoint
btrfs replace start -B <devid> /dev/new-disk /mountpoint
私がこれを書いている間:
replace status
30秒ごとに0.1%の体力進行率を表示します。iostat -d 1 -m <target-dev>
ディスプレイは約145MB / sです(Seagateでは160MB / sを宣伝します)。
答え3
btrfs replace
これを提案するには欠点がある。使用率が低い場合でも、より大きなデバイスをより小さなデバイスに置き換えることはできません。たとえば、1TB HDDを500GB SSDに置き換えるシナリオは機能せず、追加/削除オプションのみが許可されます。
唯一の利点は、SSDへの書き込みが非常に高速です。することができます)。削除)。