久々にまともなネタが出来た。
以前、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の値とかみればよかった