久々にまともなネタが出来た。
以前、NASのためにRAID1を組んだが、とうとう壊れた模様。差し替え作業は初めてかもしれない。
mdadmを使っているが、これはオンラインのまま差し替えができるはず。やっていきましょう。
行ったストレージ交換の要点
cat /proc/mdstatとmdadm --detail RAIDデバイス名で faulty なストレージデバイスがないか確認するmdadm --remove RAIDデバイス名 ストレージデバイス名でRAIDデバイスの構成から切り離すecho 1 > /sys/block/ストレージデバイス名/device/deleteでストレージデバイスを削除してLinuxの管理から外す(?)- ストレージデバイスを物理的に差し替える
- fdiskなどで新たなストレージデバイスが認識したことを確認する
mdadm --add RAIDデバイス名 ストレージデバイス名でRAID構成に戻すcat /proc/mdstatでちゃんと同期していることを確認する
マシンを止めることなくできた。
今回はRAIDデバイス名が/dev/md1、ストレージデバイス名が/dev/sdd(sdd)です。
以下は作業ログとか駄文。
ある日のmdstatの様子を見る(監視とかしていないので、気が向いた時に見ている)
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb[1] sda[0]
1953513424 blocks super 1.2 [2/2] [UU]
md1 : active raid1 sdd[1](F) sdc[0]
1953513424 blocks super 1.2 [2/1] [U_]
unused devices: <none>
ん?
# mdadm --detail /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Sun Jan 20 07:16:16 2013
Raid Level : raid1
Array Size : 1953513424 (1863.02 GiB 2000.40 GB)
Used Dev Size : 1953513424 (1863.02 GiB 2000.40 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Sun Feb 3 01:00:08 2019
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 1
Spare Devices : 0
Name : localhost.localdomain:1 (local to host localhost.localdomain)
UUID : 7d573415:7fb6d27b:2b2553d6:c8be5452
Events : 373
Number Major Minor RaidDevice State
0 8 32 0 active sync /dev/sdc
2 0 0 2 removed
1 8 48 - faulty /dev/sdd
Oh...
あれ、少し前は元気に動いてた気がするんだけども・・・ちゃんと監視しないとダメっすね・・・
RAIDデバイスの構成から外す
とりあえず外す。/dev/md1にぶらさがっている/dev/sddがダメになっている。
# mdadm --remove /dev/md1 /dev/sdd
mdadm: hot removed /dev/sdd from /dev/md1
# dadm --detail /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Sun Jan 20 07:16:16 2013
Raid Level : raid1
Array Size : 1953513424 (1863.02 GiB 2000.40 GB)
Used Dev Size : 1953513424 (1863.02 GiB 2000.40 GB)
Raid Devices : 2
Total Devices : 1
Persistence : Superblock is persistent
Update Time : Tue Feb 5 02:22:01 2019
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
Name : localhost.localdomain:1 (local to host localhost.localdomain)
UUID : 7d573415:7fb6d27b:2b2553d6:c8be5452
Events : 374
Number Major Minor RaidDevice State
0 8 32 0 active sync /dev/sdc
2 0 0 2 removed
/dev/sddが外れた事がわかる。
この壊れた奴をもう一度追加したらどうなるんだろう?復活とかしないかな?
# mdadm --add /dev/md1 /dev/sdd mdadm: Failed to write metadata to /dev/sdd
うーん、ダメっぽい。 見たことないけど、書き込みが出来ない状態っぽいからきっともうだめなやつだろう。
デバイスを外す前準備
echo 1 > /sys/block/sdd/device/delete
これで物理的に引っこ抜いても良いみたい。
物理的に引っこ抜く
でも交換とか初めてなんだけど、電気入っているまま引っこ抜いても大丈夫かな・・・
そもそも/dev/sddってどれだろう・・・5年前に組んだやつだから覚えてない・・・
4台刺さってて/dev/sddだから端っこだろうけど・・・
まぁ、引っこ抜いた後、fdisl -lで情報が取れないやつが当たりだろう!!
~~物理的に引っこ抜く音~~
さてどうだ?
# fdisk -l | grep /dev/s 警告: GPT (GUID パーティションテーブル) が '/dev/md1' に検出されました! この fdisk ユーティリティは GPT をサポートしません。GNU Parted を使ってください。 ディスク /dev/sdb: 2000.4 GB, 2000398934016 バイト /dev/sdb1 1 243202 1953513472 8e Linux LVM ディスク /dev/sdc: 2000.4 GB, 2000398934016 バイト /dev/sdc1 1 243202 1953513472 8e Linux LVM ディスク /dev/sda: 2000.4 GB, 2000398934016 バイト /dev/sda1 1 243202 1953513472 8e Linux LVM ディスク /dev/sde: 320.1 GB, 320072933376 バイト /dev/sde1 * 1 64 512000 83 Linux /dev/sde2 64 38914 312057856 8e Linux LVM
よし。/dev/sddは居ないな。
新しいストレージに差し替え
~~物理的に差し込む音~~
換装完了!
・・・なお、換装したストレージは過去に別のマシンでRAIDで使っており、壊れた時の残骸エラーを起こしたやつ・・・
なので、壊れた時の残骸が残ってる。
いやまあ使っちゃダメなのは分かっているのだけど、RAID0で壊れた奴の片割れなので使えるんじゃないかなって・・・いやちゃんと買いなおします。今週末には・・・忙しいけど・・・
Linux側のご機嫌はいかがかな?
# fdisk -l | grep /dev/s 警告: GPT (GUID パーティションテーブル) が '/dev/md1' に検出されました! この fdisk ユーティリティは GPT をサポートしません。GNU Parted を使ってください。 ディスク /dev/sdb: 2000.4 GB, 2000398934016 バイト /dev/sdb1 1 243202 1953513472 8e Linux LVM ディスク /dev/sdc: 2000.4 GB, 2000398934016 バイト /dev/sdc1 1 243202 1953513472 8e Linux LVM ディスク /dev/sda: 2000.4 GB, 2000398934016 バイト /dev/sda1 1 243202 1953513472 8e Linux LVM ディスク /dev/sde: 320.1 GB, 320072933376 バイト /dev/sde1 * 1 64 512000 83 Linux /dev/sde2 64 38914 312057856 8e Linux LVM ディスク /dev/sdd: 2000.4 GB, 2000398934016 バイト /dev/sdd1 1 243202 1953513472 8e Linux LVM
新しい /dev/sdd が認識されてる。よしよし。
中古品を使うから無駄なトラブルを生む
mdadm --addしようとしてもDevice or resource busyでダメだった。アアン?
# mdadm --add /dev/md1 /dev/sdd mdadm: Cannot open /dev/sdd: Device or resource busy
刺したばっかりなのにマウントもせずに勝手に誰かが使うわけないだろ!!バグってんのか!!!
と思って色々コマンド叩いてたら多分、RAIDとして動こうとしてた。こわい
# mdadm --detail --scan ... INACTIVE-ARRAY /dev/md127 metadata=1.2 name=localhost.localdomain:1 UUID=d5d49c53:6a939df9:891016b8:57c97042
で、ふとmdadm --createはできるけど削除はどうするんだ?と気になって調べたら--misc --zero-superblockで初期化的な事をするとよいらしい。--removeじゃないのか。
コマンドはこんな感じ。
# mdadm --misc --zero-superblock /dev/sdd
すると、mdadm --detail --scanからも消えた。多分これで大丈夫だろう。
本当は新品を使うはずなので、こんな作業は不要なんだけども、RAIDで使ってた中古の残骸を使う場合は役に立つかな・・・
RAIDデバイスの構成に新しいストレージを戻す
さて、戻しましょう。
# mdadm --add /dev/md1 /dev/sdd mdadm: added /dev/sdd
直後「パーティションの初期化的なやつっていらなかったっけ?大丈夫かな?」と不安になるが、とりあえず同期が始まったか確認してみる。
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb[1] sda[0]
1953513424 blocks super 1.2 [2/2] [UU]
md1 : active raid1 sdd[2] sdc[0]
1953513424 blocks super 1.2 [2/1] [U_]
[>....................] recovery = 1.7% (33729600/1953513424) finish=223.4min speed=143176K/sec
同期がはじまってる。大丈夫そうだ。よかったよかった。
まぁ中古の残骸を使ってるので早めに新品に換装しないとね・・・2TBまだ売ってるかなぁ。 でも、2TB * 2個もいっぱいになってきたし、乗り換え時か。 ディスク容量を増やしたい時はどうやるんだろう。GPTパーティションならうまく拡張できるのかな。それとももう1台用意して引っ越しがよいのかな。
(追記) SMARTの値とかみればよかった