RAID5のディスク交換作業メモ

ソフトウェアRAID5構成のファイルサーバのディスクが1台ダメになったので交換作業を行った。
今回は新しいHDDを一台買ってきたのだが、いつもと違う作業が必要みたいなので作業をメモしておく。

今回の作業一覧

  1. RAID5アレイを組んでるOS用の領域を違うところに移動
    1. HW RAIDカードを使ってRAID1アレイを作成
    2. そこにCentOSをインストール
    3. そこから従来のRAID5アレイを認識させる
  2. RAID5アレイのディスク交換
    1. 故障HDDを取り外す
    2. 新しいHDD設置→フォーマット
  3. 今までRAID5領域にOSを入れていた名残を削除
  4. パーティション切り直し&再構成
  5. RAID5のデータ用アレイのサイズを拡大

図にしてみる

従来のは1TB*4台。/boot以外の/も含む形。

OSは別HDDへ。従来のHDD*4はデータ専用に。

OSのインストール

RAID5アレイのHDDを接続しないでハードウェアRAIDカードと新しいHDD2台を入れてOSをインストールするだけ。
RAIDカード関係のソフトウェアのインストール作業はメモから省略。
インストール完了後にRAID5のアレイのディスクを接続して、

# mdadm --detail --scan

の結果を/etc/mdadm.confに書き込む。

RAID5アレイのディスク交換

故障したHDDをアレイから外す

# mdadm --manage /dev/md1 --fail /dev/sdb2
# mdadm --manage /dev/md1 --remove /dev/sdb2

電源を切って、新しいHDDを取り付ける。
で、ここでパーティションを切るのだが、今回購入したHDDはWesternDigitalのWD10EARS。
Advanced Formatなるものが導入されているらしい。

Windows7とかだとうまくやってくれるらしいが、今回の対象はCentOS5.5。
http://calves.jugem.jp/?eid=1009
このへんを参考にパーティションを切る必要がある。

# parted /dev/sdb
GNU Parted 1.8.1
/dev/sdb を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) unit kib
(parted) print
エラー: /dev/sdb を開けません。ディスクラベルが認識できません。
(parted) mkpart
エラー: /dev/sdb を開けません。ディスクラベルが認識できません。
(parted) quit

パーティションテーブルがないの忘れてた・・・

とりあえずfdiskでテーブルだけ作成。fdiskコマンド叩いてwで終わるだけ。

# fdisk -H 224 -S 56 /dev/sdb

partedでやってもよかった。

# parted /dev/sdb
(parted) mklabel msdos

パーティションを切る

# parted /dev/sdb
/dev/sdb を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) unit kib
(parted) print

モデル: ATA WDC WD10EARS-22Y (scsi)
ディスク /dev/sdb: 976762584kiB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos

番号  開始        終了          サイズ        タイプ      ファイルシステム  フラグ

(parted) mkpart
パーティションの種類?  primary/プライマリ/extended/拡張? p
ファイルシステムの種類?  [ext2]?
開始? 32
終了? 976762584
(parted) set 1 raid on
(parted) print

モデル: ATA WDC WD10EARS-22Y (scsi)
ディスク /dev/sdd: 976762584kiB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos

番号  開始     終了          サイズ        タイプ      ファイルシステム  フラグ
 1    32.0kiB  976762584kiB  976762552kiB  プライマリ                    raid

(parted) quit
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。

忘れるとマズいのは領域のシステムIDをraidに設定しておくこと。

(parted) set 1 raid on

これを忘れると大変なことに…(後述)

あとは新しいディスクをアレイに追加してやると再構成が始まる。

# mdadm --manage /dev/md1 -add /dev/sdb1

なんとなく経過を観察。

$ watch -n 1 cat /proc/mdstat

RAIDアレイ拡大

再構成が終わったところで今まで/としてシステム領域にしていた部分は他のHDDに移した(OS入れ直した)ので、旧システム領域をすべてstorage用のRAIDアレイにしてしまうことにする。

手順としては以下の通り。

  1. ディスクをアレイから外す
  2. パーティション切り直し
  3. アレイに追加
  4. 再構成

これをアレイを構成している残りのディスクで行う。

あとは
http://hanzubon.jp/node/231
を参考にアレイを拡大。

# mdadm --grow /dev/md0 -z max
# resize2fs /dev/md1

とりあえずこれで完成。
途中で起こった作業ミスは別エントリにまとめた。
http://d.hatena.ne.jp/polaroidoon/20100912