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

RAIDを構築する

RAIDについて諸々

ハードRAIDとソフトRAID

RAIDの種類と選択について

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

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

起動設定とメンテナンス

ハードディスクの交換

RAID再構築の準備

RAIDの再構築(raidtools)

RAIDの再構築(mdadm)


”raidtools”の基本は初期設定ファイル"/etc/raidtab"

WBEL3 および CentOS3 インストール を行うときに RAID の構築を行うと、自動的に raidtools が用いられてRAIDが構築されます。

raidtoolsは コマンド 名ではなく、例えばRAIDの停止(raidstop)、開始(raidstart)、再構築(mkraid)などのいくつかのRAID操作用のコマンドを集めたパッケージです。

raidtoolsのコマンドを用いてRAIDを操作する場合、必ず参照されるのがRAID構成を記述した初期設定ファイル "/etc/raidtab" です。

WBEL3やCentOS3のDiskDruidは OS インストール のときにraidtoolsを呼び出しますが、このとき GUI のインストール画面で設定したパラメータが/etc/raidtabに記述され、その情報に従ってRAIDが構築されているわけです。

従ってOSのインストール終了後にRAIDの設定を確認したり、設定を変更したりする場合にはこの "/etc/raidtab" を直接参照したり、書き換えたりする必要があります。

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

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

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

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

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

[tanaka@web1 tanaka]$ nano /etc/raidtabEnter


raiddev       /dev/md3
raid-level         1
nr-raid-disks        2
chunk-size         64k
persistent-superblock    1
nr-spare-disks       0
  device     /dev/hda3
  raid-disk   0
  device     /dev/hdb3
  raid-disk   1
raiddev       /dev/md1
raid-level         1
nr-raid-disks        2
chunk-size         64k
persistent-superblock    1
nr-spare-disks       0
  device     /dev/hda1
  raid-disk   0
  device     /dev/hdb1
  raid-disk   1

raiddev       /dev/md8
raid-level         1
nr-raid-disks        2
chunk-size         64k
persistent-superblock    1
nr-spare-disks       0
  device     /dev/hda8
  raid-disk   0
  device     /dev/hdb8
  raid-disk   1
raiddev       /dev/md9
raid-level         1
nr-raid-disks        2
chunk-size         64k
persistent-superblock    1
nr-spare-disks       0
  device     /dev/hda9
  raid-disk   0
  device     /dev/hdb9
  raid-disk   1
raiddev       /dev/md5
raid-level         1
nr-raid-disks        2
chunk-size         64k
persistent-superblock    1
nr-spare-disks       0
  device     /dev/hda5
  raid-disk   0
  device     /dev/hdb5
  raid-disk   1
raiddev       /dev/md7
raid-level         1
nr-raid-disks        2
chunk-size         64k
persistent-superblock    1
nr-spare-disks       0
  device     /dev/hda7
  raid-disk   0
  device     /dev/hdb7
  raid-disk   1
raiddev       /dev/md6
raid-level         1
nr-raid-disks        2
chunk-size         64k
persistent-superblock    1
nr-spare-disks       0
  device     /dev/hda6
  raid-disk   0
  device     /dev/hdb6
  raid-disk   1
raiddev       /dev/md2
raid-level         1
nr-raid-disks        2
chunk-size         64k
persistent-superblock    1
nr-spare-disks       0
  device     /dev/hda2
  raid-disk   0
  device     /dev/hdb2
  raid-disk   1

設定ファイルの内容はとても長いのですが、それは 構築中のLinuxサーバー が、8個のRAIDデバイスに分かれているからです。

ここからRAIDの設定を一つだけ抜粋(上の オレンジ で示した部分)して、説明を加えたものを以下に示します。

説明のないパラメータは、特に考える必要のない部分です。
定石としての 設定値と解釈してください。
raiddev       /dev/md1    ←ファイルシステムで扱われるRAIDデバイスの名称
raid-level         1   ←RAIDレベル(RAID1:ミラーリングモードの意)
nr-raid-disks        2   ←RAIDを構成するディスク(パーティション)の数(2つ)
chunk-size         64k
persistent-superblock    1
nr-spare-disks       0   ←故障時の予備ディスク(パーティション)の数(なし)
  device     /dev/hda1    ←一つ目の構成ディスク(パーティション)名
  raid-disk   0         ←一つ目の構成ディスクの認識番号(0)
  device     /dev/hdb1    ←二つ目の構成ディスク(パーティション)名
  raid-disk   1         ←二つ目の構成ディスクの認識番号(1)

WBEL3やCentOS3上でRAIDを構成したり、解除したりという操作は、実際には mkraid raidhotadd などの コマンド を使って行うことになります。

LinuxのRAIDの解説書
オススメです

ただRAIDの操作は、うっかりパーティションの指定などを間違えるとファイルシステム全体を壊すことにもなりかねない、危険なものだということは、容易にお解かりだと思います。

実は "/etc/raidtab" はその安全対策の鍵といえる設定ファイルで、ここに記述されたもの以外のRAID構成は、どんなコマンドを使っても決して構築できないようになっているわけです。

従って、システム上でRAIDを操作するときは、

1."/etc/raidtab"を修正する。

2.その設定に合わせてRAIDの操作コマンドを実行する。

という手順で行わなければならないことを覚えておいてください。

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

このページの先頭へ↑

RAIDを再構築する

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

すると、

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

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

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

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

という手順を、

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

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

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

RAID デバイス の再構築は、 raidhotadd コマンド で行います。一般書式は、

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

となります。

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

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

[root@web1 root]# raidhotadd /dev/md1 /dev/hdb1Enter
[root@web1 root]#

一見何事も起こっていないようですが、 raidhotadd コマンドはバックグラウンドで働いてRAIDの再構築を行いますから、何もエラーが出なければ大丈夫です。

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

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

[root@web1 root]# raidhotadd /dev/md1 /dev/hdb1Enter
[root@web1 root]# cat /proc/mdstatEnter
Personalities : [raid1]
read_ahead 1024 sectors
Event: 10
md9 : active raid1 hda9[0]
   104320 blocks [2/1] [U_]

md8 : active raid1 hda8[0]
   4867584 blocks [2/1] [U_]

        中略

md2 : active raid1 hda2[0]
   2096384 blocks [2/1] [U_]

md1 : active raid1 hdb1[2] hda1[0]
   104320 blocks [2/1] [U_]
   [=====>...............] recovery = 28.4% (30008/104320) finish=0.0min speed=15004K/sec
unused devices: <none>
[root@web1 root]# cat /proc/mdstatEnter
Personalities : [raid1]
read_ahead 1024 sectors
Event: 10
md9 : active raid1 hda9[0]
   104320 blocks [2/1] [U_]

md8 : active raid1 hda8[0]
   4867584 blocks [2/1] [U_]

        中略

md2 : active raid1 hda2[0]
   2096384 blocks [2/1] [U_]

md1 : active raid1 hdb1[2] hda1[0]
   104320 blocks [2/1] [U_]
   [=============>.......] recovery = 66.6% (70060/104320) finish=0.0min speed=10008K/sec
unused devices: <none>
[root@web1 root]# cat /proc/mdstatEnter
Personalities : [raid1]
read_ahead 1024 sectors
Event: 11
md9 : active raid1 hda9[0]
   104320 blocks [2/1] [U_]

md8 : active raid1 hda8[0]
   4867584 blocks [2/1] [U_]

        中略

md2 : active raid1 hda2[0]
   2096384 blocks [2/1] [U_]

md1 : active raid1 hdb1[1] hda1[0]
   104320 blocks [2/2] [UU]   ←RAIDの再構築が終了しました

unused devices: <none>
[root@web1 root]#

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

[root@web1 root]# raidhotadd /dev/md2 /dev/hdb2Enter
[root@web1 root]# raidhotadd /dev/md3 /dev/hdb3Enter
[root@web1 root]# raidhotadd /dev/md5 /dev/hdb5Enter
[root@web1 root]# raidhotadd /dev/md6 /dev/hdb6Enter
[root@web1 root]# raidhotadd /dev/md7 /dev/hdb7Enter
[root@web1 root]# raidhotadd /dev/md8 /dev/hdb8Enter
[root@web1 root]# raidhotadd /dev/md9 /dev/hdb9Enter
[root@web1 root]#

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

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

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

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

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

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

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

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

関連セクションへ 関連セクション・ 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