元RX-7乗りの適当な日々 このページをアンテナに追加 RSSフィード Twitter

RX-7(FD3S)WRX STI関連のキーワードで検索されて来られた方へ。
右サイドのカテゴリ『』をクリックすると関連する項目だけが表示されます。
日々の写真は『Flickr』で公開しています。

2006/12/16

RAID1 - mirror

ソフトウェアRAIDのデグレード(縮退)モードからの復旧


二週間程前の話。

週末にある会社のビル停電に伴って、金曜の晩に部門のサーバを止めるべくリモート接続を行い、各サービスを停止させ、シャットダウンのコマンドを発行した。


十数分後、ワークステーションルームにコンセントを抜きに行ったのだが、ダウン時にRAIDデバイスの部分でエラーが発生して止まっており、シャットダウンできていなかった。

ディスクへのアクセスもない状態だったので、止むを得ず一旦強制停止。

念のため再起動を行ってみたところ、見事にRAIDを組んでいるディスクがデグレードモード(縮退運用)で動いていた。


デグレードとはいえ問題なく運用できていたのと、ディスク自体は認識されていた(dmesgのチェック、およびそのディスクからswap領域が確保されていた)ため、週末に作戦を練って月曜の朝に対応するべしと思い、一旦電源を落として放置。(すいません^^;)


状況確認と調査

さて、月曜の朝。

電源を投入後、状況を確認。

server:~# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[0]
      154296192 blocks [2/1] [U_]

unused devices: <none>

当然、状況は変わらず。

server:~# mdadm --detail /dev/md0
/dev/md0:
        Version : 00.90.03
  Creation Time : Wed Oct 18 19:25:59 2006
     Raid Level : raid1
     Array Size : 154296192 (147.15 GiB 158.00 GB)
    Device Size : 154296192 (147.15 GiB 158.00 GB)
   Raid Devices : 2
  Total Devices : 1
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Mon Dec  4 10:37:56 2006
          State : clean, degraded
 Active Devices : 1
Working Devices : 1
 Failed Devices : 0
  Spare Devices : 0

           UUID : 2870fc35:3c013f8c:113c7dbe:9fc94036
         Events : 0.723195

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       0        0        1      removed

もう少し詳しめに状態のチェック。

上記のコマンド「mdadm --detail {デバイス名}」で確認できます。

出力で、Stateは「degraded」、Failed Devicesは「0」、一番下で、「removed」となってるあたり、ディスクが何らかの障害で一旦切り離されているように見えます。


せっかくなので、/var/log/dmesgもチェック。syslogでもOK。

md: md driver 0.90.3 MAX_MD_DEVS=256, MD_SB_DISKS=27
md: bitmap version 4.39
md: raid1 personality registered for level 1
md: md0 stopped.
md: bind<sdb1>
md: bind<sda1>
md: kicking non-fresh sdb1 from array!
md: unbind<sdb1>
md: export_rdev(sdb1)
raid1: raid set md0 active with 1 out of 2 mirrors

ふむ、ディスクの整合性が取れていないのか、詳細な原因は不明だが、起動時に自動的に復旧(リビルド)はしてくれないみたい。


復旧作業

というわけで、手動で復旧させる。

server:~# mdadm /dev/md0 --add /dev/sdb1
mdadm: re-added /dev/sdb1

上記のコマンド(mdadm)の「--add」オプションは、アレイを止めずに指定されたデバイスを追加 (hotadd) するもの。

再追加されたっぽい。

server:~# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[2] sda1[0]
      154296192 blocks [2/1] [U_]
      [>....................]  recovery =  1.7% (2729792/154296192) finish=44.6min speed=56546K/sec

unused devices: <none>

おっ、リカバリが始まった。

server:~# mdadm --detail /dev/md0
/dev/md0:
        Version : 00.90.03
  Creation Time : Wed Oct 18 19:25:59 2006
     Raid Level : raid1
     Array Size : 154296192 (147.15 GiB 158.00 GB)
    Device Size : 154296192 (147.15 GiB 158.00 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Mon Dec  4 10:42:40 2006
          State : clean, degraded, recovering
 Active Devices : 1
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 1

 Rebuild Status : 6% complete

           UUID : 2870fc35:3c013f8c:113c7dbe:9fc94036
         Events : 0.723293

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       2       8       17        1      spare rebuilding   /dev/sdb1

せっかくなので、途中経過の「mdadm --detail」をペタッと貼り付け。

Working Devicesが「2」になりました。いい感じでリビルドが進んでいます。


結果

さらに待つこと1時間弱。

server:/var/log# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[1] sda1[0]
      154296192 blocks [2/2] [UU]

unused devices: <none>

お、[UU]になって、正常にミラーリングされている状態に戻りました。

server:/var/log# mdadm --detail /dev/md0
/dev/md0:
        Version : 00.90.03
  Creation Time : Wed Oct 18 19:25:59 2006
     Raid Level : raid1
     Array Size : 154296192 (147.15 GiB 158.00 GB)
    Device Size : 154296192 (147.15 GiB 158.00 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Mon Dec  4 11:36:26 2006
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           UUID : 2870fc35:3c013f8c:113c7dbe:9fc94036
         Events : 0.724200

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       8       17        1      active sync   /dev/sdb1

一番下のRaidDevice Stateが、両方とも「active sync」になっています。


こういう状況別の「mdadm --detail」みたいな詳細な情報を見比べるのって、結構勉強になりますね。

正直、今回の私のように初めて出くわした状態のときは、実際にこうやって状況確認しながら手探りでやるしかないですもんね。

次に、RAIDデバイスに何か発生した場合は、これ見てやることにしよう。うん。


# おかしい記述とか、もっとエレガントなやり方があれば教えてくださいm(_"_)m


参考リンク

http://www.ioss.jp/sohodiy/mdadm8-1_5.html

http://www.heart-pot.co.jp/Software-RAID_HOWTO.html


Managing Raid on Linux
Managing Raid on Linux
posted with amazlet on 07.02.12
Derek Vadala
Oreilly & Associates Inc
売り上げランキング: 38857
おすすめ度の平均: 4.0

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

トラックバック - http://d.hatena.ne.jp/rx7/20061216/p1

オススメ (一部は、最近読んでいる本とも言う)
Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus) クラウド Amazon EC2/S3のすべて~実践者から学ぶ設計/構築/運用ノウハウ~ [Web開発者のための]大規模サービス技術入門 ―データ構造、メモリ、OS、DB、サーバ/インフラ (WEB+DB PRESS plusシリーズ) エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド [24時間365日] サーバ/インフラを支える技術 ~スケーラビリティ、ハイパフォーマンス、省力運用 Linux-DB システム構築/運用入門 (DB Magazine SELECTION) キャパシティプランニング ― リソースを最大限に活かすサイト分析・予測・配置 スケーラブルWebサイト 実践ハイパフォーマンスMySQL 第3版 ウェブオペレーション ―サイト運用管理の実践テクニック (THEORY/IN/PRACTICE) SQLアンチパターン インターネットのカタチ―もろさが織り成す粘り強い世界― ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化 Linuxの教科書―ホントに読んでほしいroot入門講座 (IDGムックシリーズ)