Ready NAS Ultra 4 のディスクが1本飛んでしまったので、ディスク交換してみました。
RAID は本来自動設定なのですが md で実現されているので、僕は普段はシェルから手動管理するようにしています。
mdadm を使うのが久しぶりすぎてやり方をすっかり忘れてしまっていました。
以下、作業メモ。
† まずは状況把握
状況把握しないとどうにもならないので mdstat を読み取って中身を確認します。
パーティションに (F) がついているのが障害ディスクなので、sda が壊れていることが分かります。
# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md3 : active raid1 sdc3[0] sdd3[1]
3902295928 blocks super 1.2 [2/2] [UU]
md2 : active raid1 sda3[0](F) sdb3[1]
1948792752 blocks super 1.2 [2/1] [_U]
md1 : active raid1 sda2[0](F) sdd2[5] sdc2[4] sdb2[1]
524276 blocks super 1.2 [4/3] [_UUU]
md0 : active raid1 sda1[0](F) sdd1[5] sdc1[4] sdb1[1]
4193268 blocks super 1.2 [4/3] [_UUU]
このときに追加で smartctl -a /dev/sda のようにして SMART 値を読み取ってもよいと思います。
今回の例では代替セクタがたくさん発生していて、一目でディスクが壊れていることがわかりました。
† ディスクの切り離し
ディスクを交換するには、故障したディスクをアレイから切り離してやる必要があります。
アレイはパーティションごとに組まれているので、md# ごとに壊れたディスクのパーティション(今回は sda# というもの)を切り離していきます。
# mdadm --manage /dev/md0 --remove /dev/sda1
mdadm: hot removed /dev/sda1 from /dev/md0
# mdadm --manage /dev/md1 --remove /dev/sda2
mdadm: hot removed /dev/sda2 from /dev/md1
# mdadm --manage /dev/md2 --remove /dev/sda3
mdadm: hot removed /dev/sda3 from /dev/md2
切り離しが完了するとこんな感じになります。
# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md3 : active raid1 sdc3[0] sdd3[1]
3902295928 blocks super 1.2 [2/2] [UU]
md2 : active raid1 sdb3[1]
1948792752 blocks super 1.2 [2/1] [_U]
md1 : active raid1 sdd2[5] sdc2[4] sdb2[1]
524276 blocks super 1.2 [4/3] [_UUU]
md0 : active raid1 sdd1[5] sdc1[4] sdb1[1]
4193268 blocks super 1.2 [4/3] [_UUU]
† ディスクを新しい物と交換してみたが・・・
ここで古いディスクをベイから取り外して、新しいディスクと交換してみたのですが・・・一向に認識される気配がありません。
仕方ないので、Linux で強制的にホットスワップする方法を参考にディスクの再認識をかけてみました。# の部分は数字が入りますが、この数字については dmesg などであらかじめ確認しておきます。
# echo 1 > /sys/class/scsi_device/#:0:0:0/device/delete
# echo 0 - 0 > /sys/class/scsi_host/host#/scan
上記の作業が済むと RedyNAS 側の OS がディスクを認識してくれて、自動的にパーティション設定が走って自動的にリビルドが始まりました。
ここまでくればあとは待つだけです。本来は fdisk などを使ってパーティションを設定し、その後 md にパーティションを追加してやるという手順になります。
# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md3 : active raid1 sdc3[0] sdd3[1]
3902295928 blocks super 1.2 [2/2] [UU]
md2 : active raid1 sda3[2] sdb3[1]
1948792752 blocks super 1.2 [2/1] [_U]
resync=DELAYED
md1 : active raid1 sda2[6] sdd2[5] sdc2[4] sdb2[1]
524276 blocks super 1.2 [4/3] [_UUU]
resync=DELAYED
md0 : active raid1 sda1[6] sdd1[5] sdc1[4] sdb1[1]
4193268 blocks super 1.2 [4/3] [_UUU]
[>....................] recovery = 1.9% (83200/4193268) finish=66.3min speed=1031K/sec
unused devices: <none>