(更新 2018/3/19)故障ディスクの物理的取外し方
空のSATAディスク(スペア用ディスク)を取り付けてマシンを起動した。
このディスクにはパーティションも存在していない。
予め、RAID構成で使用するためのパーティションをスペアディスク作成しておく。(下記ページ参考)
http://akira-arets.blogspot.jp/2016/12/linux-create-partitions-for-linuxraid.html
予め、RAID構成で使用するためのパーティションをスペアディスク作成しておく。(下記ページ参考)
http://akira-arets.blogspot.jp/2016/12/linux-create-partitions-for-linuxraid.html
ただし、ディスクはアレイを構成しているディスクにサイズが一致したものを用いた。
(より大きければ問題がないはずである。)
(注意)下記の記事は、もともとはRAID構成用のパーティションをスペアディスクに作成せずに行った作業について書いたもので、後でパーティションを作成した場合に割り当てられるデバイス名に置換したものである。
(注意)下記の記事は、もともとはRAID構成用のパーティションをスペアディスクに作成せずに行った作業について書いたもので、後でパーティションを作成した場合に割り当てられるデバイス名に置換したものである。
# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sat Oct 8 21:17:25 2016
Raid Level : raid1
Array Size : 975454208 (930.27 GiB 998.87 GB)
Used Dev Size : 975454208 (930.27 GiB 998.87 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Mon Dec 12 00:08:14 2016
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : xxxxxxxx:xxxxxxxx:xxxxxxxx:xxxxxxxx
Events : 1359
Number Major Minor RaidDevice State
0 8 33 0 active sync /dev/sdc1
1 8 49 1 active sync /dev/sdd1
○この段階では、まだスペアディスクは存在していない。
○また、アレイを構成しているディスクが、次の二つであることもわかった。
(パーティションを構成していたので、それを示す1という数値が含まれている。)
/dev/sdc1
/dev/sdd1この結果と、fdisk -l コマンド結果と照合してみれば、アレイに関わっていないディスクデバイス名が判明する。
即ち、今回スペア用に増設したディスクのパーティションは、/dev/sdb1 であることがわかった。
(いうまでもなく、利用環境によってこの値は変化するので注意。)
■スペアディスクをアレイに追加した。
上記の方法で調べた空のディスクのパーティション(/dev/sdb1)をスペアとしてアレイに追加した。
コマンドはすぐに完了した。
(ここでは、パーティションを構成せずに使用してしまったが、後から、RAID構成用のものとして判断がつきやすいようにパーティションを作成した方がよいのかもしれない。)
# mdadm --add /dev/md0 /dev/sdb1
mdadm: added /dev/sdb1
先程のコマンドでアレイの状態を取得し、スペアの状態を抜粋した。
# mdadm --detail /dev/md0 | grep "Spare Devices"
Spare Devices : 1この段階で、スペアがアレイに一つ追加された。
東芝 DT01ACA100 1TB アマゾン限定モデル 2年保証 SATA 6Gbps対応3.5型内蔵ハードディスク 新品価格 |
(以下、テストではアレイの喪失可能性の危険が伴う。)
スペアディスクが正常に動作するのかテストする方法は、実際にアレイを構成しているディスクの機能を停止させることである。
そのためには専用コマンドを使ってアレイを構成する一つのデバイスのみ「fail」にする。
(注意)
言うまでもなく、このアレイはミラーリングRAID1なのでアレイを構成するディスクの一つ止めればもう片側のディスクだけで運用されることになる。
そして片方のディスクが壊れてしまうと、アレイは機能しなくなる。
1、まず、アレイの情報を取得した。
# cat /proc/mdstat
Personalities : [raid1]上記、[2]、[0]、[1]は、アレイ中でのデバイスインジゲーターである。
md0 : active raid1 sdb1[2](S) sdc1[0] sdd1[1]
975454208 blocks super 1.2 [2/2] [UU]
bitmap: 0/8 pages [0KB], 65536KB chunk
unused devices: <none>
既に設定したように、このミラーアレイにはスペアディスクが一つ追加されている。
そのため、アレイにはデバイスインジゲーターが2まである。(3デバイスが存在)
また、[UU]で示されている通り、ミラーアレイの構成デバイスは2台正常に動作している。
2、ミラーアレイの内の、デバイス1台をfailとしてわざと無効にした。
(注意)このコマンドで、アレイを構成していたディスク(/dev/sdd1)がフェイル状態となり、ミラーアレイは片方のディスクで動作する。
下記、/dev/sddではなく、/dev/sdd1となっていることに注意。
これは、アレイを構築する際にパーティションを作成して行ったためである。
# mdadm --manage /dev/md0 -f /dev/sdd1
mdadm: set /dev/sdd1 faulty in /dev/md0
つづいて、アレイの状態を表示させた。
これまでの設定によって、ホットスペアディスクを登録しているので、自動的に再構築作業が行われた。
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[2] sdc1[0] sdd1[1](F)
975454208 blocks super 1.2 [2/1] [U_]
[>....................] recovery = 0.0% (825344/975454208) finish=78.7min speed=206336K/sec
bitmap: 0/8 pages [0KB], 65536KB chunk
unused devices: <none>
5分ほど置いて、アレイの状態を表示させた。
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[2] sdc1[0] sdd1[1](F)
975454208 blocks super 1.2 [2/1] [U_]
[>....................] recovery = 4.9% (48410112/975454208) finish=80.8min speed=190993K/sec
bitmap: 0/8 pages [0KB], 65536KB chunk
unused devices: <none>
この結果では残り時間は、80分として算出されている。
再構築作業は進んでいるが時間がかかることがわかる。
この再構築中にアレイを構成しているディスク1台が故障してしまうと、アレイは喪失してしまうことになる。
再構築作業はバックグラウンドで行われている。
その間、下記、3の手順に進み、fail状態のディスクをremoveした。
そうしてさらに、この再構築が完了するまで待った。
3、「fail」としたディスクを「remove」した。
上記の再構築状態を示す結果には「sdd1[1](F)」としてfailにされたデバイス情報が残っている。
再構築が開始されたことと、fail状態になっていることを確認したらremoveコマンドを実行した。
次のコマンドを実行して、removeした。
# mdadm --manage /dev/md0 -r sdd1
mdadm: hot removed sdd1 from /dev/md0再びアレイの状態を表示させた。
# cat /proc/mdstat
Personalities : [raid1]今度は、先程のfailとなったディスクが表示されなくなった。
md0 : active raid1 sdb[2] sdc1[0]
975454208 blocks super 1.2 [2/1] [U_]
[===>.................] recovery = 17.5% (171365248/975454208) finish=72.6min speed=184371K/sec
bitmap: 0/8 pages [0KB], 65536KB chunk
unused devices: <none>
これでアレイからremoveされた。
4、「remove」済みディスクを簡易に初期化した。
上記で、アレイからremoveしたディスク(/dev/sdd1)について調べると、まだRAIDシステム用のパーティションが残っている。
# fdisk -l
Disk /dev/sdd: 1000.2 GB, 1000204886016 bytes, 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
Disk label type: dos
ディスク識別子: 0x00017ea8
デバイス ブート 始点 終点 ブロック Id システム
/dev/sdd1 2048 1951172607 975585280 fd Linux raid autodetect
すでに、アレイからremoveしたディスクなので、RAIDシステム用の情報を消去した。
# mdadm --zero-superblock /dev/sdd1
しかし、パーティション自体は消えていなかったので、必要ならばさらにパーティションも削除した。
# parted /dev/sdd
GNU Parted 3.1(parted) p
/dev/sdd を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
モデル: ATA TOSHIBA DT01ACA1 (scsi)
ディスク /dev/sdd: 1000GB
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: msdos
ディスクフラグ:
番号 開始 終了 サイズ タイプ ファイルシステム フラグ
1 1049kB 999GB 999GB primary raid
(parted) rm 1
(parted) p
モデル: ATA TOSHIBA DT01ACA1 (scsi)
ディスク /dev/sdd: 1000GB
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: msdos
ディスクフラグ:
番号 開始 終了 サイズ タイプ ファイルシステム フラグ
(parted)
実際にremove済みディスクを取り外すためには、マシンの電源を落す必要があるだろう。
しかし、再構築が完了するまでは待った。
今回はテスト目的であったので、再びこのディスクはスペアに回すことにした。
■再構築完了後、状態を表示した。
# cat /proc/mdstat
Personalities : [raid1]再び、ミラーアレイの状態が正常になっていることがわかった。
md0 : active raid1 sdb[2] sdc1[0]
975454208 blocks super 1.2 [2/2] [UU]
bitmap: 0/8 pages [0KB], 65536KB chunk
unused devices: <none>
■不要なディスクを筐体から取り外す。
RAIDアレイから切り離しても、ディスクからは動作音が聞こえる。
このまま放置せずに、マシン筐体から取り外すことにした。
次の手順にしたがって、ターゲットのディスクのシリアル番号を得て、
その番号から実際のディスク本体を見つけ、取り外すことができた。
予め、上記で判明している取り外すべきディスクのデバイス名をメモしておく。
この際、間違ったディスクを取り外して、システムに不整合を生じさせないように、
細心の注意を必要とする。
http://akira-arets.blogspot.jp/2018/03/linux-whichdiskisthediskiwantremove.html
ディスクの物理的な取り外しには、マシンのシャットダウン、電源オフが必要だった。
【Amazon.co.jp限定】TOSHIBA HDD 内蔵ハードディスク 3.5インチ 4TB Enterprise Cloud HDD MC04ACA400/AFP SATA3.0 1年保証 新品価格 |
<参考>
・RedHat / CentOS : Managing software RAID with mdadm
< http://thegeekdiary.com/redhat-centos-managing-software-raid-with-mdadm/ > 2016年12月12日
・Adding a hot spare to an md device
< http://prefetch.net/blog/index.php/2007/03/11/adding-a-hot-spare-to-an-md-device/ > 2016年12月12日
・Mdstat
< https://raid.wiki.kernel.org/index.php/Mdstat > 2016年12月12日
・RAID構成ハードディスク交換
< https://centossrv.com/centos5-raid-3.shtml > 2016年12月12日
・SoftwareRAID
< https://wiki.debian.org/SoftwareRAID > 2016年12月15日
・RAID superblock formats
< https://raid.wiki.kernel.org/index.php/RAID_superblock_formats > 2016年12月15日