なんとなくNASとして使っているCentOS7のPCにログインしたら、怪しげなログが出ていた。
user@computer$ less messages-20200614 | grep “Jun 7 04:32:54”
Jun 7 04:32:54 nas kernel: ata2.00: exception Emask 0x0 SAct 0x78200000 SErr 0x0 action 0x0
Jun 7 04:32:54 nas kernel: ata2.00: irq_stat 0x40000008
Jun 7 04:32:54 nas kernel: ata2.00: failed command: READ FPDMA QUEUED
Jun 7 04:32:54 nas kernel: ata2.00: cmd 60/00:d8:80:f7:89/04:00:dc:00:00/40 tag 27 ncq 524288 in#012 res 41/40:00:d0:f9:89/00:04:dc:00:00/00 Emask 0x409 (media error)
Jun 7 04:32:54 nas kernel: ata2.00: status: { DRDY ERR }
Jun 7 04:32:54 nas kernel: ata2.00: error: { UNC }
Jun 7 04:32:54 nas kernel: ata2.00: configured for UDMA/133
Jun 7 04:32:54 nas kernel: sd 1:0:0:0: [sdb] FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
Jun 7 04:32:54 nas kernel: sd 1:0:0:0: [sdb] Sense Key : Medium Error [current] [descriptor]
Jun 7 04:32:54 nas kernel: sd 1:0:0:0: [sdb] Add. Sense: Unrecovered read error – auto reallocate failed
Jun 7 04:32:54 nas kernel: sd 1:0:0:0: [sdb] CDB: Read(10) 28 00 dc 89 f7 80 00 04 00 00
Jun 7 04:32:54 nas kernel: blk_update_request: I/O error, dev sdb, sector 3700029904
Jun 7 04:32:54 nas kernel: ata2: EH complete
たぶん死にかかってるな、ということで交換することにした。
部屋をごそごそしていたらWD Greenが発掘されたので、これに入れ替えることにした。
うちのsdbはこんな構造になっている。
user@computer$ lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 1.8T 0 disk
├─sdb1 8:17 0 190M 0 part
│ └─md0 9:0 0 190M 0 raid1 /boot
├─sdb2 8:18 0 1.9G 0 part
└─sdb3 8:19 0 1.8T 0 part
└─md1 9:1 0 1.8T 0 raid1
├─vg0-lv0 253:0 0 100G 0 lvm /
├─vg0-lv1 253:3 0 500G 0 lvm /home
├─vg0-lv2 253:4 0 500G 0 lvm /var/shared
└─vg0-lv3 253:5 0 760.9G 0 lvm /var
上記表示には出ていないがsdaも同じ構造をしていて、mdraidでRAID1を組んでいる。RAID1は宗教なので仕方がない。
md0が/bootで、md1がそれ以外である。ちなみにファイルサーバなので、ファイルサーバ用のディスクはこれとは別にsdcとsddもある。
sdbの構造に戻ると、sdb1はmd0として定義した後そのままext4でフォーマットして使っているものの、sdb3はmd1として定義したうえで今後どうとでもなるようにLVMで均してあり、その中で/homeと/var、/var/sharedなんかがある。
sdb2は余りの領域で、ここはswapにしている。
というわけでmdからsdbを切り離す。慈悲はない。
user@computer$ sudo mdadm –manage /dev/md0 –fail /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md0
user@computer$ sudo mdadm –manage /dev/md1 –fail /dev/sdb3
mdadm: set /dev/sdb3 faulty in /dev/md1
user@computer$ cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sdd1[3] sdc1[2]
7813894471 blocks super 1.2 [2/2] [UU]
bitmap: 0/15 pages [0KB], 262144KB chunk
md0 : active raid1 sdb1[1](F) sda1[0]
194496 blocks super 1.0 [2/1] [U_]
md1 : active raid1 sdb3[2](F) sda3[0]
1951235072 blocks super 1.2 [2/1] [U_]
bitmap: 7/15 pages [28KB], 65536KB chunk
unused devices: <none>
swap以外のサイズをきっかり合わせられるように、shutdownの前にパーティション情報を取っておく。ただしきっかり合わせなくとも同期元のサイズより大きくしておけばRAID1は組めるので、大きめのディスクに意図的に交換したいときはあえて大きいサイズにする場合もある。
user@computer$ fdisk -l /dev/sdb
Disk /dev/sdb: 2000.4 GB, 2000398934016 bytes, 3907029168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
Disk label type: dos
ディスク識別子: 0x0008f4f3
デバイス ブート 始点 終点 ブロック Id システム
/dev/sdb1 * 2048 391167 194560 fd Linux raid autodetect
/dev/sdb2 3903123456 3907028991 1952768 82 Linux swap / Solaris
/dev/sdb3 391168 3903123455 1951366144 fd Linux raid autodetect
また、交換するディスクを間違わないようにシリアルナンバーを見ておく。
user@computer$ sudo hdparm -I /dev/sdb | head -n 8
/dev/sdb:
ATA device, with non-removable media
Model Number: WDC WD20EARS-00S8B1
Serial Number: WD-WC*********0
Firmware Revision: 80.00A80
Transport: Serial, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6
ここでshutdownしてディスク交換。
NASのくせにGreenかよ、と言われるかもしれないが壊れたらより大きいのに付け替えるので許して、と言おうと思ったもののNASの筐体はMicroserver N40Lでありブートディスクは2TBまでとか何かで見たのでダメかもしれない。USBブートにすればよいのですかね…
交換後、fdiskでsdbのサイズをきっかり合わせる。先頭領域の始点がfdiskの数値指定範囲だと揃えられなかったため、全体的にちょっとずつ後ろにずらす感じにしたというかせざるを得なかった。
最後にmdadmで新ディスクのパーティションをmd0とmd1に加えて終わり。
user@computer$ sudo mdadm –add /dev/md0 /dev/sdb1
user@computer$ sudo mdadm –add /dev/md1 /dev/sdb2
このあとそれぞれ自動的にrebuild動作が始まり、やがれsyncする。進捗はcat /proc/mdstat で確認。
おわり。
コメント