Oba-Q's Free Space >  サーバーネットワーク > CentOS > 片割れがDOWN@RAIDアレイ

片割れがDOWN@RAIDアレイ

本人も5年ぶりくらいにひいた風邪でグジュグジュで
ありましたが、サーバーからのラブレターで、RAID1で
ミラーリングしているHDDの片割れもDOWNしたらしい
ことを知りました。

# cat /proc/mdstat の結果

Personalities : [raid1]
md6 : active raid1 sdb8[1] sda8[0]
3144696 blocks super 1.1 [2/2] [UU]
bitmap: 1/1 pages [4KB], 65536KB chunk

md4 : active raid1 sdb6[1] sda6[0]
1048568 blocks super 1.1 [2/2] [UU]
bitmap: 1/1 pages [4KB], 65536KB chunk

md0 : active raid1 sdb1[2] sda1[0]
524276 blocks super 1.0 [2/2] [UU]

md2 : active raid1 sda3[0]
31456188 blocks super 1.1 [2/1] [U_]
bitmap: 1/1 pages [4KB], 65536KB chunk

md5 : active raid1 sda7[0]
2096120 blocks super 1.1 [2/1] [U_]
bitmap: 1/1 pages [4KB], 65536KB chunk

md3 : active raid1 sda5[0]
5241848 blocks super 1.1 [2/1] [U_]
bitmap: 1/1 pages [4KB], 65536KB chunk

md7 : active raid1 sdb9[1] sda9[0]
911358844 blocks super 1.1 [2/2] [UU]
bitmap: 2/7 pages [8KB], 65536KB chunk

md8 : active raid1 sdb10[1] sda10[0]
6142968 blocks super 1.1 [2/2] [UU]

md1 : active raid1 sdb2[1] sda2[0]
5241848 blocks super 1.1 [2/2] [UU]
bitmap: 1/1 pages [4KB], 65536KB chunk

md2・md3・md5のRAIDアレイ構成からsdbが仲間はずれ・・
一応

# mdadm -D /dev/md2

などとやってみましたが、結果はTotal DevicesやActive
Devicesが1個しか検出されません。
なにかの拍子でこうなるけど、自然復帰や再度RAIDアレイに
追加してやると直ることもあるので、まずは悪あがきを。
sdaは全て活きていて、sdb3(md2)・sdb5(md3)・sdb7(md5)が
死んでるので以下を実行してみる。。。

# mdadm –manage /dev/md2 -add /dev/sdb3
# mdadm –manage /dev/md3 -add /dev/sdb5
# mdadm –manage /dev/md5 -add /dev/sdb7

で、活き返ったのはmd5に参加するsdb7だけでした。
1回やってダメなら絶対深追いしてはなりませぬ。
かえって事態を悪化させてしまうことになりかねません。
1台交換決定ということで。

該当サーバーはこのBLOGも発信しているもので、つまり拙生の
個人的使用なものであるため、ホットスワップでやる必要はなく、
ちょうどやる予定だった清掃も含め、作業はシャットダウンして
行いました。

まずは以下の要領でsdbの関わるパーティションをRAIDアレイから
切り放してしまいます。

# mdadm /dev/md0 –manage –fail /dev/sdb1
故障と認識させSYNCを禁じます。

# mdadm /dev/md0 –manage –remove /dev/sdb1
 RAIDアレイの構成から取り除きます。 

拙生の場合はsdb10(md8)まであるので、この作業を延々と続けます。
これが終了したらシャットダウンさせます。

交換したHDDをsdbとして、再度sdaとRAID1を構築するには、
sdaと全く同じパーティションを切らなくてはいけません。
fdiskのPで表示されるsdaのパーティションのシリンダ数で
sdbを切ってやり、フォーマットするのは結構手間のいる作業です。
しかもCentOSが属するRedHat系は、インストール時にGUIで
RAID構築をすると、シリンダ数が1-50・50-100のように
切れ目が同じ50となるため、これをfdiskで切ろうとすると
1-50の次は51から始めないとダメ!って怒られてしまいます。

そんな時拙生は以下のお気に入りsfdiskコマンドで、sdaの
パーティションをsdbに一気に丸ごとコピーしてしまいます。

# sfdisk -d /dev/sda | sfdisk /dev/sdb –force

ものぐさにはこの世に勝るコマンドなし!って感じですね。w

後は

# mdadm /dev/md0 –manage –add /dev/sdb1
# mdadm /dev/md1 –manage –add /dev/sdb2
# mdadm /dev/md2 –manage –add /dev/sdb3

のごとく、sdbのすべてのパーティションをRAIDアレーへの
組み込みを全部終わるまで繰り返します。

注意としては、HDDのプライマリパーティションは4つまでで、
それ以上はプライマリの一つを拡張パーティションとして
切ることになります。
拙生の場合はsdb1~sdb3までがプライマリ、sdb4は拡張
パーティションの全体であり、さらにそれを細かく切ったものが
sdb5・sdb6・・・・のように続きます。
つまりsdb4はRAIDアレーに参加するわけではないので、
md3以降に参加するのはsdb5以降になるので間違ってはいけません。

めでたく復旧して【!万歳!】かと思いきや、syncの状況確認で

# cat /proc/mdstat

を何度か実行していると、一度UUに戻ったアレイが_Uに・・・^^;;
なんと今度はsdaのパーティションの1つがコケました。

そうなんです。
同時期に購入した同ロッドのHDDは、同じような時期にコケて
おかしくはないのです。
拙生は1台取り替えたら、数日中にもう1台も交換するのですが、
おかしくなって慌てて取り替えたのは今回が初めてですね。
ま、ギリギリセーフということで事なきを得ました。
両方一緒だったらと思うとぞっとしますね。
ラッキーだったのは風邪のために仕事で外に出ていなかったことです。

昔はRAID1の構成にCentOSなどをインストールしても、GRUBだけは
指定した片方にしかインストールされず、もう一方をgrubコマンドで
hd0に指定してインストールしておかなければ、GRUBがインストール
されている方が逝かれたら起動しなくなってしまいましたが、
grub2だと勝手にインストールしてくれますねぇ。
プラットホームやRAID・LVMのサポート、パーティション・テーブルや
ファイルシステムのサポートが格段に充実して、もうGRUB2以外は
使う気になれません。
慣れ親しんだGRUB (Grand Unified Bootloader) Legacy の時代に
幕が下りたということなのでしょう。

もう一つだけ
パーティションの話の際に必ず(しつこく)付け加えるのですが、
交換するHDDは必ず容量が同じか大きくなくては駄目です。
少しでも容量足りないと、同じパーティションは切れないので
構成することは不可能です。
1TBや2TBと表示があっても、メーカーやロッドにより若干容量が
違うので要注意です。
ノウハウとして、2TBなら1.8とか1.9しか使わないことで、微妙な
容量の違いを吸収できます。
必要なら大きい分は後から

# mdadm –grow /dev/md7 –size=max

のごとく拡大できますので、あまりケチらないように。w
ただし2TB以上のHDDを使いこなすには、MBRなどをよく
勉強してからでないと痛い目にあいます。
Logical Block Addressingでアクセスできるセクタ数40億に
論理セクターの512Bを掛けると2TBという限界が見えてくる・・・
などというお話は次回にということで。。。
ま、32bitの壁ってやつですな。

* 以前にも書きましたがaddやgrowなど複数文字の前は【-】になっていますが
  実際のコマンドは【-】が2つ並んでいます。
  WordPressのエディタが勝手に変換しちゃいます。
  例外もありますが、オプションでdなど単数文字の場合は【-】は1個、
  複数文字の場合は【-】が2つであることがほとんどです。
 

This entry was posted in CentOS, サーバーネットワーク. Bookmark the permalink.

Comments are closed.