このページではRAIDで運用している自宅サーバーRAIDの復旧mdadmで行う方法について初心者/ビギナー向けに解説します。
お便利サーバー.com+相互リンクサイト内をキーワードで検索
OSをRAID構成でインストール

RAIDを構築する

RAIDについて諸々

ハードRAIDとソフトRAID

RAIDの種類と選択について

RAIDでOSをインストール(〜CentOS5)

RAIDでOSをインストール(CentOS6)

起動設定とメンテナンス

ハードディスクの交換

RAID再構築の準備

RAIDの再構築(raidtools)

RAIDの再構築(mdadm)


初期設定ファイル"/etc/mdadm.conf"について

WBEL4 CentOS4 及びCentOS5の インストール を行うときに RAID の構築を行うと、自動的に mdadm が用いられてRAIDが構築されます。

mdadmの設定ファイルは、 デフォルト では "/etc/mdadm.conf" となっています。

ただこの/etc/mdadm.confは、raidtoolsで扱う設定ファイル "/etc/raidtab" と意味が異なる点に注意してください。

raidtoolsの設定ファイル/etc/raidtabはRAIDの仕様を絶対的に規定するもので、記述されていない構成のRAIDは構築できないようになっています。つまり/etc/raidtabはRAIDの構築にあたっては前もって必ず準備しておかなければなりません /etc/raidtabについて

一方mdadmにおける/etc/mdadm.confにはそういう「ガチガチ」の制約があるわけではなく、

「必要ならばそれを参照してRAIDを構築しなければならないような扱い方もできるし、不要ならば全く無視してRAID構築を行うこともできる。」

という柔軟な仕様になっています。もちろん、自由な操作が可能であることと引き換えに、操作ミスによる失敗の危険も高いということですが...。

このパートでは 「破損したRAIDを元の状態に戻す。」 という作業を行うだけですから、/etc/mdadm.confを利用する必要はありません。

ちなみに "mdadm" を使ったRAIDデバイスの追加や修復、解除の方法についてはこちら OSにRAIDデバイスを追加する のセクションで詳しく説明していますので、合わせてご覧ください。

しかし既存のシステムに新しいRAIDを追加したり、RAIDの構成を変更したり、という作業を行う場合には、操作を間違えないように予め/etc/mdadm.confを記述(作成)しておき、これを「RAID構成を規定する設定ファイル」として利用すべきでしょう。

試しに、この コンテンツ 構築中のLinuxサーバー "/etc/mdadm.conf" を実際に見てみましょう。

以下は、WBEL4、CentOS4及びCentOS5のインストール後の設定 インストール後にすべきこと(WBEL4) インストール後にすべきこと(CentOS4) インストール後にすべきこと(CentOS5) のセクションで、上から順に SSHクライアント の導入 SSHクライアントでサーバーに接続する(WBEL4) SSHクライアントでサーバーに接続する(CentOS4) SSHクライアントでサーバーに接続する(CentOS5) まで完了していることを前提に説明しています。
まだそこまで進んでいない場合は、まずはそちらを先に済ませてから以下をご覧ください。

SSHクライアントなどから適当な ユーザーアカウント 構築中のLinuxサーバー ログイン SSHクライアントでサーバーに接続する(WBEL4) SSHクライアントでサーバーに接続する(CentOS4) SSHクライアントでサーバーに接続する(CentOS5) し、 nanoエディタ "/etc/mdadm.conf" を開いてみましょう nanoエディタでファイルを開く

このセクションで行う作業はあくまで RAID構成を元の状態に戻す だけですから、この/etc/mdadm.confの内容を書き換える必要はありません。

そこで、誤って内容を書き換えてしまわないように一般のユーザーアカウントから参照するようにしましょう。

WBEL4及びCentOS4では、大体次のような内容になっています。

[tanaka@web1 ~]$ nano /etc/mdadm.confEnter


# mdadm.conf written out by anaconda
DEVICE partitions
MAILADDR root
ARRAY /dev/md3 super-minor=3
ARRAY /dev/md1 super-minor=1
ARRAY /dev/md5 super-minor=5
ARRAY /dev/md9 super-minor=9
ARRAY /dev/md6 super-minor=6
ARRAY /dev/md8 super-minor=8
ARRAY /dev/md7 super-minor=7
ARRAY /dev/md2 super-minor=2

CentOS5は以下のような内容です。

# mdadm.conf written out by anaconda
DEVICE partitions
MAILADDR root
ARRAY /dev/md3 level=raid1 num-devices=2 uuid=4f5183e9:a9581018:7bf7db9a:25326038
ARRAY /dev/md9 level=raid1 num-devices=2 uuid=4d769607:7c304dd1:3c4edfaf:134be1b6
ARRAY /dev/md8 level=raid1 num-devices=2 uuid=c2b6cfab:7ab18b44:ba603e5e:d4c3d1cf
ARRAY /dev/md6 level=raid1 num-devices=2 uuid=2e0814db:d39085d3:98953f06:f0b362dd
ARRAY /dev/md5 level=raid1 num-devices=2 uuid=c02e5571:0c5664fc:9f7334c1:4b22a21b
ARRAY /dev/md7 level=raid1 num-devices=2 uuid=3ceac180:6850742e:84629096:0d205dbb
ARRAY /dev/md1 level=raid1 num-devices=2 uuid=d538f642:d090693a:8b8b175b:388fad75
ARRAY /dev/md2 level=raid1 num-devices=2 uuid=ee59fcf2:b23009ef:f1fbc19b:801a4c0e

先頭の オレンジ の行にコメント行で、

「"mdadm.conf"は"anaconda"によって書き出された。」

記述されていますが、実は "anaconda" というのはWBEL及びCentOSの OS のインストールプログラムのことです。

つまりこの/etc/mdadm.confは、WBEL4やCentOS4、CentOS5のインストール作業中にインストールプログラム自身が記述したことを表しています。

ただご覧のとおり、WBEL4やCentOS4ではその内容は非常に簡素な「覚え書き」に過ぎませんから、ここでもう少し詳しい設定情報を記録しておくと後々便利です。

詳しいRAID情報を見るためには、 root アカウント からmdadm コマンド を実行する必要がありますので、 su コマンドで ユーザーアカウント をrootに変更してから以下のようにコマンドを実行してください。

"mdadm --datail --scan"を実行すると、"/etc/mdstat"の情報 /etc/mdstatについて を元にして現在稼働中の詳細なRAID情報を出力します。
[tanaka@web1 ~]$ su -Enter
Password: "root"のパスワードを入力します。Enter
[root@web1 ~]# mdadm --detail --scan
ARRAY /dev/md2 level=raid1 num-devices=2 UUID=609e9c17:dec46c7f:7f122217:6d32270b
  devices=/dev/hda2,/dev/hdb2
ARRAY /dev/md3 level=raid1 num-devices=2 UUID=3a59a830:b1f25d62:247e70ff:542f6ae1
  devices=/dev/hda3,/dev/hdb3
ARRAY /dev/md5 level=raid1 num-devices=2 UUID=d9d715d7:53d47bff:c10986bd:a4e9017b
  devices=/dev/hda5,/dev/hdb5
ARRAY /dev/md6 level=raid1 num-devices=2 UUID=f5b654b9:2b0c96b9:0811a6e2:4051ae4b
  devices=/dev/hda6,/dev/hdb6
ARRAY /dev/md7 level=raid1 num-devices=2 UUID=c1c0cc94:ef802f78:8e9bd653:3b910e76
  devices=/dev/hda7,/dev/hdb7
ARRAY /dev/md8 level=raid1 num-devices=2 UUID=39ff31b0:244d2f97:9b186cf9:8470be1f
  devices=/dev/hda8,/dev/hdb8
ARRAY /dev/md9 level=raid1 num-devices=2 UUID=2c94608d:5bbbfd83:b6752da4:9ba03a66
  devices=/dev/hda9,/dev/hdb9
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=6666543c:79c70d56:a1d8c153:92c794f3
  devices=/dev/hda1,/dev/hdb1
[root@web1 ~]#

ちなみにこれは障害の発生していない状態での出力結果です。 "/dev/hdb" に障害があって認識されていないようなときは、以下のようになります。

[root@web1 ~]# mdadm --detail --scan
ARRAY /dev/md2 level=raid1 num-devices=2 UUID=609e9c17:dec46c7f:7f122217:6d32270b
  devices=/dev/hda2
ARRAY /dev/md3 level=raid1 num-devices=2 UUID=3a59a830:b1f25d62:247e70ff:542f6ae1
  devices=/dev/hda3
ARRAY /dev/md5 level=raid1 num-devices=2 UUID=d9d715d7:53d47bff:c10986bd:a4e9017b
  devices=/dev/hda5
ARRAY /dev/md6 level=raid1 num-devices=2 UUID=f5b654b9:2b0c96b9:0811a6e2:4051ae4b
  devices=/dev/hda6
ARRAY /dev/md7 level=raid1 num-devices=2 UUID=c1c0cc94:ef802f78:8e9bd653:3b910e76
  devices=/dev/hda7
ARRAY /dev/md8 level=raid1 num-devices=2 UUID=39ff31b0:244d2f97:9b186cf9:8470be1f
  devices=/dev/hda8
ARRAY /dev/md9 level=raid1 num-devices=2 UUID=2c94608d:5bbbfd83:b6752da4:9ba03a66
  devices=/dev/hda9
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=6666543c:79c70d56:a1d8c153:92c794f3
  devices=/dev/hda1
[root@web1 ~]#

先に説明したとおり、この出力内容は「障害のあるRAIDを元に戻す」という作業だけであれば必要なものではありませんが、RAID構成の変更などを行いたい場合には重要な情報になることがありますので、出力のリダイレクト 出力のリダイレクトについて を使って適当なファイルに書き出しておきましょう。

[root@web1 ~]# mdadm --detail --scan > mdadm.conf.web1
[root@web1 ~]#

これで現在のRAID構成の設定は "/root/mdadm.conf.web1" として保存されました。

CentOS5の場合には最初から正常稼動時の "mdadm --detail --scan" の出力結果が "/etc/mdadm.conf" に記録されていますので、特に保存しておく必要はないでしょう。

関連セクションへ 関連セクション・ OSにRAIDデバイスを追加

このページの先頭へ↑

RAIDを再構築する

ここで改めて 正常時の/proc/mdstat で保存しておいた正常稼動時の状態 "/tanaka/mdstat" と、現在の "/proc/mdstat" を比較してみてください。

"mdadm" を使ったRAIDデバイスの追加や修復、解除の方法についてはこちら OSにRAIDデバイスを追加する のセクションで詳しく説明していますので、合わせてご覧ください。

すると、

「"/dev/hda?"と"/dev/hdb?"から構成されていた"/dev/md?"から、"/dev/hdb?"が欠損してデグレーデッドの動作をしている。」

ということが確認できるはずです。

すると、この コンテンツ の内容に従って 構築中のLinuxサーバー の場合であれば、

「/dev/hda?だけでデグレーデッドの動作をしている/dev/md?に、/dev/hdb?を追加してRAID1を再構築する。」

という手順を、

「?=1〜3,5〜9(4は拡張 パーティション なので作業不要)」

について実行すれば良いことがわかるはずです。

既に前のステップの ハードディスクの交換 RAID再構築の準備 で新しいハードディスクのフォーマットとパーティションの作成は終わっているはずですから、あとは mdadm コマンドでRAIDデバイスの再構築を行えばOKです。

この場合mdadmコマンドは、

mdadm --manage [RAIDデバイス名] --add [追加するパーティション名] Enter

と実行します。

コマンドの実行は root アカウント から行います。

では早速実行してみましょう。

[root@web1 ~]# mdadm --manage /dev/md1 --add /dev/hdb1Enter
mdadm: hot added /dev/hdb1
[root@web1 ~]#

一見何事も起こっていないようですが、このように

"mdadm: hot added /dev/hdb1"

とメッセージが表示されればバックグラウンドでRAIDの再構築が行われますから、何もエラーが出なければ大丈夫です。

SSHクライアント 上では表示されませんが、RAIDの構築が終わると実機の画面上に大量のメッセージが表示されます。
「エラーが起こったのでは!。」と驚くかもしれませんが、大丈夫です。
実機上で何かキー操作を行えば、ちゃんと プロンプト に戻ることができます。

RAIDが再構築される様子は、リアルタイムに /proc/mdstat に出力されてますから、 cat コマンドなどで状況を確認することができます。

[root@web1 ~]# mdadm --manage /dev/md1 --add /dev/hdb1Enter
mdadm: hot added /dev/hdb1
[root@web1 ~]# cat /proc/mdstatEnter
Personalities : [raid1]
md2 : active raid1 hda2[0]
   2096384 blocks [2/1] [U_]

md3 : active raid1 hda3[0]
   1020032 blocks [2/1] [U_]

        中略

md9 : active raid1 hda9[0]
   104320 blocks [2/1] [U_]

md1 : active raid1 hdb1[2] hda1[0]
   104320 blocks [2/1] [U_]
   [=======>.............] recovery = 36.2% (38656/104320) finish=0.1min speed=6442K/sec
unused devices: <none>
[root@web1 ~]# cat /proc/mdstatEnter
Personalities : [raid1]
md2 : active raid1 hda2[0]
   2096384 blocks [2/1] [U_]

md3 : active raid1 hda3[0]
   1020032 blocks [2/1] [U_]

        中略

md9 : active raid1 hda9[0]
   104320 blocks [2/1] [U_]

md1 : active raid1 hdb1[1] hda1[0]
   104320 blocks [2/2] [UU]   ←RAIDの再構築が終了しました
unused devices: <none>
[root@web1 ~]#

どれか一つのRAIDで再構築がうまくいったら、他のRAIDデバイスでも同様に再構築を行います。

[root@web1 ~]# mdadm --manage /dev/md2 --add /dev/hdb2Enter
mdadm: hot added /dev/hdb2
[root@web1 ~]# mdadm --manage /dev/md3 --add /dev/hdb3Enter
mdadm: hot added /dev/hdb3
[root@web1 ~]# mdadm --manage /dev/md5 --add /dev/hdb5Enter
mdadm: hot added /dev/hdb5
[root@web1 ~]# mdadm --manage /dev/md6 --add /dev/hdb6Enter
mdadm: hot added /dev/hdb6
[root@web1 ~]# mdadm --manage /dev/md7 --add /dev/hdb7Enter
mdadm: hot added /dev/hdb7
[root@web1 ~]# mdadm --manage /dev/md8 --add /dev/hdb8Enter
mdadm: hot added /dev/hdb8
[root@web1 ~]# mdadm --manage /dev/md9 --add /dev/hdb9Enter
mdadm: hot added /dev/hdb9
[root@web1 ~]#

再構築指示は、前に実行したRAIDの再構築が終了していなくても次々に実行してかまいません。

RAIDの再構築は一つずつしか行われませんが、システムがきちんと整理して「予約」という形で再構築コマンドを受け付け、順々に処理を実行してくれるからです。

再構築するRAIDデバイスの容量にもよりますが、数十 GB 、数百GBのRAIDデバイスの再構築には数十分ないし数時間を要します。

この再構築の間でも、 構築中のLinuxサーバー のシステムは基本的に通常どおりの動作を行うことができますから、基本的には通常どおり稼動させてかまいません。

もちろん、RAIDの再構築はそれなりに ホスト機 に動作負荷を与えていますので、再構築がすべて終了するまでは、できればプログラムの アップデート 作業 yumによるプログラムアップデート(WBEL4) yumによるプログラムアップデート(CentOS4) yumによるプログラムアップデート(CentOS5) など、 サーバー に対して大量のデータが出入りするような作業は避けたほうが良いでしょう。

LinuxOS ソフトウェア RAIDは意外に「タフ」で、例えばこの再構築中にホスト機の再起動を行うことも可能ですし、停電でいきなり電源が落ちてしまってもかなりの確率できちんと元に戻ることができます。

もちろん、できるだけこういうシチュエーションは避けたほうが良いことはいうまでもありません。

さて、後はお茶でも飲みながら、 /proc/mdstat が元の状態 正常稼動中の/proc/mdstatの状態 に戻るまでのんびりと待ちましょう。

ところで、 "mdadm" を使ったRAIDデバイスの追加や修復、解除の方法についてはこちら OSにRAIDデバイスを追加する のセクションで詳しく説明していますので、興味のある方は合わせてご覧ください。

関連セクションへ 関連セクション・ OSにRAIDデバイスを追加

このページの先頭へ↑

ブートローダーのインストールを忘れずに

RAID の再構築が終わったら、忘れずに行わなければならない作業が ブートローダ インストール です。

新しく追加した側の ハードディスク には、当然ブートローダーはインストールされていませんので、これを忘れてしまうと、次に反対側のハードディスクが故障してしまったときに ホスト機 が起動できなくなってしまいます。

作業は SSHクライアント からリモート接続した状態でも行うことができます。

方法は 片方のハードディスクでも起動できるようにする で説明したとおりです。新しく追加したハードディスクに対して grub のインストール作業を行ってください。

関連セクションへ 関連セクション・ OSにRAIDデバイスを追加

このサイトは既に更新を終了していますが、今のところ店じまいの予定はありません。 リンクフリー ですので、趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。
Powered by Apache
”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。
www.centos.org - The Community ENTerprise Operating System