mdadmでのRAID構築までの記録3

RAID構築に関しての記事も一応3度目になりました。
故障したHDDは販売店に送って確認して頂いた所、保証期間内であったため無償交換して頂けました。タイでの洪水、HDD価格の高騰の直前だったため迅速に対応して頂けました。ArkJAPANさんに感謝です。
前回の投稿の通り、HDD3台でのRAID5は一応2日ほどかけて再構築も完了しました。新品のHDDも3台手元にある状態になりましたので、当初の計画通りHDD6台でのRAID6に移行させていこうかと思います。

先日の投稿の通りの手順で、まずは追加した3台のHDDにパーティションを作成します。
# parted /dev/sdX
(parted) mklabel gpt
としておきます。一旦partedを終了します。
(parted) quit
そして通常のコンソールで
# parted --align=min --script /dev/sdX mkpart primary ext4 0 100%


作成したHDD3台分のパーティションを、RAIDアレイに追加します。元々、/dev/sda1、/dev/sdb1、/dev/sdc1 を既に使用しており、/dev/sdd1、/dev/sde1、/dev/sdf1 を追加するものとします。

# mdadm --manage --add /dev/md0 /dev/sd[def]1 
mdadm: added /dev/sdd1 /dev/sde1 /dev/sdf1

RAIDの状態を確認します。

# cat /proc/mdstat 
Personalities : [raid1] [raid6] [raid5] [raid4] 
md0 : active raid5 sdf1[5](S) sde1[4](S) sdd1[3](S) sdc1[2] sdb1[1] sda1[0] 586082736 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU] 

追加した3台のHDDのパーティションがスペアディスクとして認識されています。スペアディスクは上記の状態ですと、/dev/sda1, /dev/sdb1, /dev/sdc1 のいずれかのディスクにて障害が発生した場合に(S)が付いているディスクを使用してリカバリーするという事になります。

この後私は手順を間違えてしまいましたので検証できていませんが、想定される正しい方法として備忘録として書いておきます。
RAID5からRAID6へ変更する場合は
  1. 未使用のディスクをRAIDにスペアディスクとして追加
  2. RAIDレベルの変更をして再構築(上記の状態からRAIDレベルを6に変更した場合スペアの1台を使用して4台でRAID6を構築したのと同じ状態にします。)
  3. mdadm --grow コマンドを使用して領域を増やす(ディスク4台使用する設定から6台使用する設定に変更する。このままではファイルシステム未使用の領域が増えるだけ)
  4. resize2fs コマンドを使用してファイルシステム未使用の領域一杯までファイルシステムの領域を拡張する
という手順が正解だったのであろうと思います。結果だけ書きますと、私は勘違いして2と3の手順を逆に行ってしまい、HDD6台でのRAID5を構築してしまい、データを全てNASに転送した後一からRAIDを作り直しました。なので、以下はコマンドの紹介といった感じになります。

手順1までは一応完了しているのでRAIDレベルを変更します。

# echo raid6 > /sys/block/md0/md/level 

# cat /proc/mdstat 
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid6 sdf1[5](S) sde1[4](S) sdd1[4] sdc1[2] sdb1[1] sda1[0] 586082736 blocks level 6, 128k chunk, algorithm 18 [4/3] [UUU_] [=>...................] recovery = 6.2% (127748/2040128) finish=3.9min speed=7984K/sec

注意しなければならないのは,RAIDレベル変更を実行した時点で変換が始まります。手順3に書いたglowコマンドもそうでした。変換が始まってしまうと上記のレベル変更のコマンドも受け付けられない状態になりました。

あくまでも予想ですが、上記コマンドにてレベル変更した時点ではHDD4台でのRAID6に変換された状態になり、スペアディスクが2台あるという状態になります。未使用のスペアディスクもRAIDに使用するために以下のコマンドを実行します。


# mdadm --grow -l 6 -n 6 /dev/md0

変換が終了したら、


# resize2fs /dev/md0

として追加した2台分の未使用領域に既にあるファイルシステムを拡張して完了です。
失敗した記録としては、私のしてしまった事は確か記憶では上記のmdadmコマンドが通らなかったので、とりあえず台数だけ増やそうとして
# mdadm --grow -n 6 /dev/md0
とやってしまい、HDD6台使用したRAID5への変換が開始されてしまった事でした。-nはHDDの台数を指定するオプションになります。一度変換が始まってしまうと「Ctrl+C」も効かない、# echo raid6 > /sys/block/md0/md/level と入力してもファイルが使用中のため書き込みできないというようなエラーが出てどうにもなりませんでした。まさかRAIDの変換中にシャットダウンとか再起動はデータの破損という最悪の事態を招きたくは無かったので実行しませんでした。変換中に色々なサイトを調べてみましたが止めてレベル変更する方法は判らずじまいでした。
HDD一つあたり3TBという大容量になりますと、操作を間違ったので止めたいと思ってもとりあえずは変換が終了するまで待つしかありませんでした。これでほぼ3日の時間を無駄にしてしまいました。



コメント

このブログの人気の投稿

オルテガの 「大衆の反逆」

Ultr@VNCの設定でハマる

DREMEL ルータービットのちょっとした改造