CentOS RAID構成ハードディスクの管理1





1.RAIDの状態を表示

RAIDの状態は、/proc/mdstatの内容を表示すると確認できます。

cat /proc/mdstat

以下のような内容が表示されます。

Personalities : [raid1]
md0 : active raid sdb1[1] sda1[0]
        xxxx blocks [2/2] [UU]

md1 : active raid sdb2[1] sda2[0]
        xxxx blocks [2/2] [UU]

md2 : active raid sdb3[1] sda3[0]
        xxxx blocks [2/2] [UU]

unused devices:

上の例は、RAIDデバイスとして/dev/md0、/dev/md1、/dev/md2を使用している場合です。 raid1(ミラーリング)で使用しています。 この表示の中で重要なのは、それぞれのデバイスの[UU]の部分です。 RAIDデバイスに問題が発生している場合は、[U_]のように表示されます。 また、Uの数は構成するハードディスクの数で(この例は2台のHDDで構成)、3台でRAID1構成なら[UUU]となり5台でRAID6構成なら[UUUUU]などと変化します。 sd1やsdb2なども構成する元のハードディスクにより変化します。

2.RAIDデバイスの状態表示

mdadmコマンドで指定したRAIDデバイスの詳しい情報が表示されます。

mdadm --detail /dev/md2

/dev/md2などは/proc/mdstatの内容を表示させた時に表示されるRAIDデバイスを指定します。
UUIDやアクティブなデバイスの数、スペアデバイスの数などが表示されます。

3.ディスク障害時の対応

md0 : active raid sdb1[1](F) sda1[0]
        xxxx blocks [2/2] [U_]

/proc/mdstatを表示した結果が、上記のようになっていたとします。
/dev/sdbが故障していて、/dev/sdaだけで稼働していることになります。
RAID0(ストライピング)の場合は、このような状態にはならず即データ消失となります。
また、sda、sdbなど、どのドライブが故障しているかもメモしておきましょう。

対処方法は、ハードディスクの交換となります。
まず、fdiskコマンドで生きている方のハードディスクに関するパーティション情報を取得します。

fdisk -l /dev/sda

             Start     End
/dev/sda1       1       13      104391
/dev/sda2       14      ...     ...

表示内容は省略してありますが、このような内容が出力されています。
出力されている内容のうち、「sda1が1〜13」、「sda2が14〜...」といったようにデバイス名とパーティションの
開始、終了位置を記録しておきます。

万が一に備えて、重要なデータのバックアップも行っておきましょう。 2度と起動しない可能性も考慮しておきましょう。

交換用のハードディスクを用意したらPCを停止させます。

4.ハードディスク交換〜フォーマット

障害の発生したハードディスクの接続を外します。 マザーボードのSATAコネクタにはSATA1、SATA2、SATA3、...などと小さい字で番号が書かれています。 通常sdaがSATA1、sdbがSATA2に接続されていると思います(同じコントローラのSATAの場合)。 故障しているドライブ名とSATAのコネクタ番号から故障しているハードディスクを特定します。

新しいハードディスク接続します。 このとき、新しく接続したハードディスクがSATAコネクタの若い番号にならないように接続しなおします。 たとえば、SATA1とSATA2コネクタにハードディスクが接続されていたとします。 ここでSATA1コネクタに接続されていたハードディスクが故障した場合は、SATA3のコネクタに接続するか、 SATA2とSATA1の接続を交換しSATA2コネクタに新しいハードディスクを接続します。 BIOSでブートデバイスを選択できるマザーボードもあると思いますが、通常はSATAの若い番号からOSを起動しようとするので新しいハードディスクの接続には気を付けてください。

接続が完了したらPCを起動します。 起動しない場合、以下のような原因が考えられます。
(1)新しく接続したハードディスクからブートしようとしている。
(2)正常に動作しているハードディスクの接続を外してしまった。
(3)ミラーリングを構成していた正常なハードディスク側にブート情報が書き込まれていなかった。

(1)、(2)はSATAの接続を変えれば起動するはずです。
問題は(3)のパターンです。この場合は、まず障害が発生しているハードディスクも接続してブートを試みます。 それでもブートしない場合(障害が発生したハードディスクのブート領域も破損している)は経験したことがありません。 たぶん、DVD起動してレスキューモードでなんとか普及を試みると思います。

無事にブートしたらfdiskコマンドでパーティション設定を行います。
SATAの接続を変えた場合は、デバイス名の変化をfdiskコマンドで確認しておきましょう。

fdisk -l /dev/sda
fdisk -l /dev/sdb

などと実行して確認しておきましょう。
以下は、新しいディスクが/dev/sdbだとします。

fdisk /dev/sdb

対話モードに入ります。
n(新規パーティション) → p(基本パーティション) → パーティション番号 → 開始位置 → 終了位置
この順番で先ほどメモした内容と同じように設定していきます。

メモが
/dev/sda1       1       13      104391
/dev/sda2       14      ...     ...
ならば

n → p → 1 → 1 → 13
n → p → 2 → 14 → ...

と設定します。
次に各パーティションをRAID対象になるように設定します。

t(システムID設定) →  パーティション番号 → fd(Linux Raid autodetect)
上のメモならば

t → 1 → fd
t → 2 → fd
...

と設定します。
RAIDがブートドライブの場合は、そのパーティションを次のように設定します(データドライブのみなら不要です)。

a(ブートフラグ設定) → パーティション番号

たとえば

a → 1

のように設定します。
設定が終わったら、「p」で最終確認し「w」で書き込みます。

5.RAIDデバイスへの組み込み

mdadmコマンドで追加したドライブをRAIDデバイスに組み込みます。

mdadm --manage /dev/md0 --add /dev/sdb1
mdadm --manage /dev/md1 --add /dev/sdb2
mdadm --manage /dev/md2 --add /dev/sdb3

組み込むパーティションの容量が大きければ組み込めてしまいます。
間違えないように気を付けましょう。

「cat /proc/mdstat」で観察すると「recovery = ...%」と同期の進行状況が表示されます。

6.GRUBのインストール

RAIDデバイスにブート可能領域が含まれている場合は以下の手順が必要です。

grub
root (hd1,0)
setup (hd1)

root (hd0,0)
setup (hd0)

quit



RedHat、CentOSは、同じものと考えてよいです。 どちらのOSを使っていても同じ設定/操作方法です。