我がサーバーはUbuntuで動作していますが,古いディスクで組んだRAIDアレイを使用しているため新しいディスクと交換してみました.
前提
ここでは,ディスクが壊れたので再構築するのではなく,まだ動作している古くディスクを交換することを目的としています.
つまり壊れている場合はこの記事は参考になりませんのでご注意ください.
また,Ubuntuが自動的に作成してくれたアレイのため他の環境とは違うこともあるのかも?
新しいディスクを接続
現在のアレイのディスクは
/dev/md0
/dev/sdc
シーゲート/31000時間/dev/sdd
シーゲート/900時間/dev/sde
東芝/900時間
となっており3万時間のsdcを交換してみます.
新旧が同時に動く必要があるため今回は新しいディスクをUSBボックスを利用してサーバーに接続しました.SATAポートが余ってる人は別にダイレクトにつないで大丈夫です.
接続すると/dev/sdg
となりました.
というわけでアレイに追加
|
|
# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid5 sdg[4](S) sde[3] sdc[0] sdd[1]
7813772288 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
bitmap: 3/30 pages [12KB], 65536KB chunk
追加されたsdgは(S)となっているとおりスペアとして登録されました.
交換
次は古いものと交換してみましょう.
ここで,UbuntuでRAIDを組んだときに生成される/swap.imgをswapoffしておくことをおすすめします.
同期中はディスクIOが高負荷状態になり,ディスクを使用しているプロセスが度々キルされます. そこでext4系のモジュールがキルされることがあり,swapのある状態だと固まってしまいました.
当然ですが,他の重いアプリ等も落としておきましょう.7200rpmのディスクだとこういう苦労は不要かもしれないですが,私はすべて5400rpmかつ最低グレードのディスクを使用しております故…….
準備が整ったら交換させます.
|
|
sdcは交換されるディスク,sdgが新しいディスクです.
mdadm: Marked /dev/sdc (device 0 in /dev/md0) for replacement
mdadm: Marked /dev/sdg in /dev/md0 as replacement for device 0
こんな感じで表示され,同期が始まります.
進捗を見る場合
# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid5 sdg[4](R) sde[3] sdc[0] sdd[1]
7813772288 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
[>....................] recovery = 0.0% (1640284/3906886144) finish=555.5min speed=117163K/sec
bitmap: 3/30 pages [12KB], 65536KB chunk
unused devices: <none>
こんな感じで.
sdgが(R)になっており,状態が変わっている事がわかります.
ここでは残り500分程度となっていますが,前述のフリーズや普通に速度が低下した事によって丸1日かかりました.
RAIDアレイにOSを入れてはいけない…
同期終了
終わったら/proc/mdstat
が以下のようになります
前述のフリーズによって名前が変わっていますがここではsdbが3万時間の交換対象です.
写真の通り(F)になっており,Failなディスクとして扱われる様になりました.
mdadm --misc --detail /dev/md0
の表示は以下の通り
無事ディスクが切り替わりました.
ここで,いきなり古いディスクを外してはいけません.
mdadm -r /dev/md0 /dev/sdb
によって安全に取り外しを行います.
おわりに
これでディスクの交換は終了です.
USBからSATAに切り替えて再起動できるか試してみると良いでしょう.
場合によっては/etc/mdadm/mdadm.conf
を変更しないといけない場合があるらしいのですが,この環境だと不要でした.