うちのサーバはRAID1(ミラーリング)で組んでるので、片方のHDDが落ちても安心です。
本当ですか?
cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sdb1[0] 104320 blocks [2/1] [U_] md1 : active raid1 sda3[1] 243713984 blocks [2/1] [_U] unused devices: <none>
嘘でした。超あぶなかった。
しかもこれを見ると片方のパーティションはセカンダリのHDDで、もう片方のパーティションはプライマリのHDDでしか動いていないようで、物理的なHDDとしてまともにデータが書き込まれているのは一台もない様子でした。
今もしどちらかのHDDが死んだら復旧できなかったところです。仲良くお互いに依存しあっていた番いのジュウシマツのように、失った伴侶の深い欠落感から立ち直れず、ただこんこんと、後を追うようにこの世を去ったことでしょう。
あぶなかった。
そういえば以前、再起動したらログインできなくて、コンソール接続からfsckで復旧させたことがあるのですが、たぶんそのときにraid構成がおかしくなってしまったのではないかと思いあたりました。
おそるおそる管理者宛のメールを覗いてみると、なんと1/30からmd1のプライマリHDDに対するミラーリングがとまっていて、5/6からmd0のセカンダリHDDに対するミラーリングがとまっていると、膨大なメールで管理者ユーザにお知らせしてくれていました。。
全然見てませんでした。
5/6といえば、だいたいfsckで復旧した時期だったかなと思い当たり、当時はどうしてもう片方のHDDから起動してくれないんだろうと戸惑ったのですが、そういうことだったのかと納得しました。
生きているプライマリHDDからいざ起動とようとしても、その時点ですでに3ヶ月以上片側のパーティションが更新されておらず、ファイルシステムとして矛盾したものになってしまっていたのでしょう。
あわててRAIDの再構築をおこないました。
sudo /sbin/mdadm -a /dev/md0 /dev/sda1 mdadm: re-added /dev/sda1 cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sda1[1] sdb1[0] 104320 blocks [2/2] [UU] md1 : active raid1 sda3[1] 243713984 blocks [2/1] [_U] unused devices: <none>
sudo /sbin/mdadm -a /dev/md1 /dev/sdb2 mdadm: re-added /dev/sdb2 cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sda1[1] sdb1[0] 104320 blocks [2/2] [UU] md1 : active raid1 sdb2[2] sda3[1] 243713984 blocks [2/1] [_U] [==>..................] recovery = 10.6% (25936128/243713984) finish=62.8min speed=57724K/sec unused devices: <none>
※ 本当はmd1のsda3と対にさせるのはsdb3なのですが、fsckのときの影響(?)で本来のセクタ領域が別のデバイスIDに入れ替えられてしまっていたようで、sdb2を指定しなければなりませんでしたが話がそれるので省略します。
で、再構築しているあいだに、また次に同じようなことがあったら怖いので、muninの監視プラグインにraidも追加することにしました。この場合の普通の解は「メールをちゃんと見よう」かもしれませんが、やっぱりどうせならGUIでモニタリングしたい、というのが欲というものです。転んだついでになにか掴んで立ち上がってこそ、ひとは向上していくのです。
・muninプラグイン raid
1. インストール
wget "http://exchange.munin-monitoring.org/plugins/raid/version/2/download" -O ~/raid sudo chown root:root /usr/local/munin/lib/plugins/raid sudo chmod a+x /usr/local/munin/lib/plugins/raid sudo ln -s /usr/local/munin/lib/plugins/raid /etc/munin/plugins/raid
2. 動作確認
コマンドで確認
/etc/munin/plugins/raid Name "main::rcpt" used only once: possible typo at /etc/munin/plugins/raid line 71. /etc/munin/plugins/raid md0.value 100 md0_rebuild.value 100 mdadm: cannot open /dev/md1: Permission denied md1.value 50 md1_rebuild.value 0
Name “main::rcpt” used only once: possible typo at /etc/munin/plugins/raid line 71.の対応
vi /usr/local/munin/lib/plugins/raid # line71 $rcpt = 0; ↓ $rpct = 0;
# 利用したのが6/18(1週間くらい前)にあがったばかりのバージョンだったのですが、まだチェックが甘いのでしょうか、変数名にタイポがありました。
mdadm: cannot open /dev/md1: Permission deniedの対応
sudo vi /etc/munin/plugin-conf.d/plugins.conf [raid] user root
コマンドで再確認
sudo /etc/munin/plugins/raid md0.value 100 md0_rebuild.value 100 md1.value 50 md1_rebuild.value 59
munin監視ノードの再起動
sudo /etc/init.d/munin-node.rc restart
munin監視サーバから確認
telnet localhost 4949 fetch raid localhost md0.value 100 md0_rebuild.value 100 md1.value 50 md1_rebuild.value 59 quit
3. GUIでモニタリング
# 再構築途中
青がパーティション1(md0)、赤がパーティション2(md1)。赤はセカンダリHDDのRAIDがまだ再構築されていないので1/2台の50%ラインを指しています。緑が再構築の進捗率です。開始から1時間で70%完了。おそらくこれが100%までいったら赤のラインも2/2台で100%へ移動するはずです。
ところで凡例だとmd0が青じゃなくて緑になってますね。なんかこのバージョンは変数のタイポ以外にも間違った変数をどっかであててるところがあるのでは?、といぶかしみ中。
ともあれ、muninみるのがさらに楽しくなりました。