サーバーHDD交換

# cat /proc/mdstatのログに[U_]がありました。
サーバーを覗くと8つのRAIDパーティションのうちの
1つが [============>……..] recovery = **%
と再構築を試みています。

RAID1で構築したサーバーで、RAID1がちゃんと
機能していれば[U_U]となり、どちらかが転ければ
[U_]か[_U]になります。

リカバリが100%になりリビルドは無事終了。
何事もなく稼働していましたが、なんとなく
気持ちが悪いのと、HDDはしばらく交換しておらず、
やっておかなきゃいざという時にマゴツカヌよう
練習を兼ねてこれを機に交換することに。。。

以前にも手順は書いたことがありますが
もうちょっと詳細を。。。
以下は1TBのHDDx2でRAID1を構成している
sdbを交換する手順です。

以下のコマンドでRAIDにsdbを故障として認識させます。

# mdadm --manage /dev/md0 --fail /dev/sdb1
# mdadm --manage /dev/md1 --fail /dev/sdb2
# mdadm --manage /dev/md2 --fail /dev/sdb3
# mdadm --manage /dev/md3 --fail /dev/sdb5
# mdadm --manage /dev/md4 --fail /dev/sdb6
# mdadm --manage /dev/md5 --fail /dev/sdb7
# mdadm --manage /dev/md6 --fail /dev/sdb8
# mdadm --manage /dev/md7 --fail /dev/sdb9
# mdadm --manage /dev/md8 --fail /dev/sdb10

故障扱いの表示である(F)を確認します。

# cat /proc/mdstat(1例のみ)
 md1 : active raid1 sdb2[2](F) sda2[0]
5241848 blocks super 1.1 [2/1] [U_]
bitmap: 1/1 pages [4KB], 65536KB chun

   
以下md8まで同様に行いRAIDの一員から取り外します。

# mdadm --manage /dev/md0 --remove /dev/sdb1
 
一応sdbが表示されないことを確認します。

# cat /proc/mdstat(1例のみ) 
  md7 : active raid1 sda9[0]

   
システムを停止しHDDを交換します。  

# shutdown -h now
 

システムを起動します。

交換したsdbを調べます。

# fdisk /dev/sdb
 >p (以降省略)
 未使用であることを確認。
使用済みでパーティションが切ってある場合は
 全部削除し真っさらにしてからシステムを再起動しておく。

sdaのパーティションをsdbにまるごとコピーします。

# sfdisk -d /dev/sda | sfdisk /dev/sdb --force
 
ちゃんとコピーされたか確認します。

# fdisk /dev/sdb
  # fdisk /dev/sdaと同じ結果であること。

新しいHDD(sdb)をRAIDに参加させます。

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

<省略>

# mdadm /dev/md8 --manage --add /dev/sdb10

以下のコマンドで表示されるときには、すでに
いくつかのRAIDパーティションでリカバリが終わり
大きなパーティションである/homeあたりのリカバリ中
であることが分かるでしょう。

# cat /proc/mdstat

md6 : active raid1 sdb8[2] sda8[0]
3144696 blocks super 1.1 [2/1] [U_]
resync=DELAYED
bitmap: 1/1 pages [4KB], 65536KB chunk

md5 : active raid1 sdb7[2] sda7[0]
2096120 blocks super 1.1 [2/1] [U_]
resync=DELAYED
bitmap: 1/1 pages [4KB], 65536KB chunk

md7 : active raid1 sdb9[2] sda9[0]
911358844 blocks super 1.1 [2/1] [U_]
[============>……..] り = 62.9% (573313600/911358844) finish=56.4min speed=99834K/sec
bitmap: 3/7 pages [12KB], 65536KB chunk

md4 : active raid1 sdb6[2] sda6[0]
1048568 blocks super 1.1 [2/1] [U_]
resync=DELAYED
bitmap: 1/1 pages [4KB], 65536KB chunk

md0 : active raid1 sdb1[2] sda1[0]
524276 blocks super 1.0 [2/2] [U_U]

md3 : active raid1 sdb5[2] sda5[0]
5241848 blocks super 1.1 [2/2] [U_U]
bitmap: 1/1 pages [4KB], 65536KB chunk

md2 : active raid1 sdb3[2] sda3[0]
31456188 blocks super 1.1 [2/1] [U_]
resync=DELAYED
bitmap: 1/1 pages [4KB], 65536KB chunk

md8 : active raid1 sdb10[2] sda10[0]
6142968 blocks super 1.1 [2/1] [U_]
resync=DELAYED

md1 : active raid1 sdb2[2] sda2[0]
5241848 blocks super 1.1 [2/2] [U_U]
bitmap: 0/1 pages [0KB], 65536KB chunk

リカバリが終了したものから順番に[U_U]になります。

リカバリ中なのでサーバーのパフォーマンスが
落ちているので悪しからず。。。なんて書いて
おこうかなと思っているうちに、どぉやら
全部が[U_U]になり終了してしまったようです。

一応fdiskでsdaとsdbの構成に齟齬がないことと
どちらにもbootフラッグが立っていることを確認
しておきます。

すぐにsdaの方も同じ手順で交換しますが、sdbから
bootできなかったら運用停止時間が長引いて
悲惨ですから・・・(笑

準備万端の成果

ホットスワップでやっても良かったのですが、
今回は確実性を重視し電源を落としました。
万全の準備で行ったので、ヨーイドンでシステム停止
・HDD交換・システム起動(ケース内清掃1分含む)まで
かかった時間は5分ちょっととスムーズでした♪

注意

今回はsdbでしたが次回行うsdaの交換はひと手間
増えますのでご注意を。
設定にもよりますが、コンピュータは通常sda
(マスター)から起動しようとするので、boot
プライオリティを変更して起動させます。
BIOS(EUFI)で変更しても良いし、SATAコネクタを
入れ替えてマスター・スレーブを変更しても
良いでしょう。

【--】が【ー】に表示されてしまう問題は
シンプルコードというプラグインで解決させましたが、
以前一度だけシンプルコードで書いたコマンドがどうしても
コピペで使えなかったことがありましたのであまり
使いたくなかったのですが、毎回注釈を書くのも
面倒なので。。。

HOME

おすすめ