前回の記事では、btrfsによるRAID1化の手順を書きましたが、障害発生時のディスク復旧(交換)手順を確認しましたので、備忘録として残します。
前回は、下記のデバイス構成で、ミラーリングを設定しました。
- ディスク(ファイルシステム)1:/dev/sdb1
- ディスク(ファイルシステム)2:/dev/sdc1
※上記二つをbtrfsのファイルシステムとして作成。
- マウントポイント:/mnt/disk1
※上記マウントポイントをRAIDの対象に設定。
今回は、この”/dev/sdc1”が故障したと想定した場合の対応手順をいつものVirtualBoxで検証してみました。
- 新ディスク:/dev/sdd
- 故障ディスク:/dev/sdc
- /mnt/disk1内のデータ内容:
epson-inkjet-printer-escpr2_1.1.19-1lsb3.2_amd64.deb
ubuntu-20.04.1-desktop-amd64.iso
(1)/dev/sdcを /mnt/disk1から削除します。
$ sudo btrfs device remove /dev/sdc1 /mnt/disk1
ERROR: error removing device '/dev/sdc1': unable to go below two devices on raid1
→一定の要件を満たさないとエラーが発生するようです。Manのドキュメントによると、ProfileをConvertする必要があるとか。
(2)DataのプロファイルをRAID解除するため、下記のコマンドを実行します。
$ sudo btrfs balance start -mconvert=dup -dconvert=single /mnt/disk1
Done, had to relocate 5 out of 5 chunks
下記コマンドで確認すると、Singleに変更されています。
$ sudo btrfs filesystem usage /mnt/disk1
Data,single: Size:2.96GiB, Used:2.60GiB (87.70%)
(省略)
Metadata,DUP: Size:256.00MiB, Used:2.78MiB (1.09%)
(省略)
System,DUP: Size:32.00MiB, Used:16.00KiB (0.05%)
(3)再度、下記コマンドを実行します(/dev/sdcを /mnt/disk1から削除)。
$ sudo btrfs device remove /dev/sdc1 /mnt/disk1
→「btrfs filesystem usage /mnt/disk1」で確認すると、デバイスが「/dev/sdb1」のみになっていることを確認できます。
(4)fdiskで新ディスク(/dev/sdd)の新しいパーティション(/dev/sdd1)を作成し、btrfsでフォーマットして、下記のDevice addコマンドを実行します。
$ sudo btrfs device add -f /dev/sdd1 /mnt/disk1
(5)「btrfs balance start」コマンドで、RAID1化します。
$ sudo btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt/disk1
Done, had to relocate 6 out of 6 chunks
(6)「btrfs filesystem usage /mnt/disk1」コマンドで確認します。
下記の通り、RAID1化が復活しました。データも削除されずに残っていました。
$ sudo btrfs filesystem usage /mnt/disk1
(略)
Data,RAID1: Size:3.00GiB, Used:2.60GiB (86.57%)
/dev/sdb1 3.00GiB
/dev/sdd1 3.00GiB
(略)
以上です。
これで、何とかRAID1で障害が発生しても対処できそうな気がします・・^^;)
最近のコメント