ミラー環境でマスターの先頭潰して起動したらGRUBはちゃんとブートしてくれるかテスト

さて、最初のインターフェイスにドライブがない場合は、ドライブマッピングが変わってうまく起動できることはわかった。
ドライブがあるのに、そこから起動できない場合はどうなるのだろうか。
これ、昨日間違ってやっちゃったことと同じだけどね(^^;。
あの時は、sdbだった。
sdaではどうか?


まずはバックアップ。

root@redmine:~# dd if=/dev/sda of=mdr_sda.img bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 9.3881e-05 s, 5.5 MB/s
root@redmine:~# dd if=/dev/sdb of=mdr_sdb.img bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 7.9434e-05 s, 6.4 MB/s

実行。

root@redmine:~# dd if=/dev/zero of=/dev/sda bs=512 count=1

再起動。

root@redmine:~# shutdown -r now

おお、ちゃんと上がってきた。
ドライブマッピングも正常。

root@redmine:~#  ls -d /sys/bus/scsi/devices/?\:0\:0\:0/block/* | awk 'BEGIN { FS="/"} {print $8 "\t" $6}'
sda	2:0:0:0
sdb	3:0:0:0

RAIDデグレードしている。

root@redmine:~# cat /proc/mdstat 
Personalities : [raid1] 
md1 : active (auto-read-only) raid1 sdb5[1]
      5998528 blocks [2/1] [_U]
      
md0 : active raid1 sdb1[1]
      482384832 blocks [2/1] [_U]
      
unused devices: <none>


MBRを書き戻す。

root@redmine:~# dd if=mdr_sda.img of=/dev/sda bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.00347861 s, 147 kB/s

書き戻しを確認。

root@redmine:~# fdisk -l /dev/sda

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0000f5f2

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1       60055   482384896   fd  Linux raid autodetect
/dev/sda2           60055       60802     5998593    5  Extended
/dev/sda5           60055       60802     5998592   fd  Linux raid autodetect

パーティションを再認識させるのに、ドライブを抜き差しする。

root@redmine:~# echo 1 > /sys/class/scsi_device/2\:0\:0\:0/device/delete 
[  296.897402] sd 2:0:0:0: [sda] Synchronizing SCSI cache
[  296.897916] sd 2:0:0:0: [sda] Stopping disk
[  297.323307] ata3.00: disabled

ドライブを抜く。

[  345.260316] ata3: exception Emask 0x10 SAct 0x0 SErr 0x4010000 action 0xe frozen
[  345.260432] ata3: irq_stat 0x00400040, connection status changed
[  345.260514] ata3: SError: { PHYRdyChg DevExch }
[  345.260600] ata3: hard resetting link
[  345.984026] ata3: SATA link down (SStatus 0 SControl 300)
[  345.984038] ata3: EH complete

ドライブを入れる。

[  377.949502] ata3: exception Emask 0x10 SAct 0x0 SErr 0x4050002 action 0xe frozen
[  377.949618] ata3: irq_stat 0x00400040, connection status changed
[  377.949701] ata3: SError: { RecovComm PHYRdyChg CommWake DevExch }
[  377.949792] ata3: hard resetting link
[  387.968025] ata3: softreset failed (device not ready)
[  387.968111] ata3: hard resetting link
[  389.192041] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[  389.212699] ata3.00: ATA-8: SAMSUNG HA500LJ, CW300-11, max UDMA7
[  389.212706] ata3.00: 976773168 sectors, multi 0: LBA48 NCQ (depth 31/32), AA
[  389.214844] ata3.00: configured for UDMA/133
[  389.214858] ata3: EH complete
[  389.215058] scsi 2:0:0:0: Direct-Access     ATA      SAMSUNG HA500LJ  CW30 PQ: 0 ANSI: 5
[  389.215508] sd 2:0:0:0: [sda] 976773168 512-byte logical blocks: (500 GB/465 GiB)
[  389.215668] sd 2:0:0:0: [sda] Write Protect is off
[  389.215675] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00
[  389.215743] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[  389.216160]  sda: sda1 sda2 < sda5 >
[  389.250219] sd 2:0:0:0: [sda] Attached SCSI disk

なんか一発目は認識に失敗したみたいだけど、リセット入って認識した。
RAIDを再構築する。

root@redmine:~# mdadm --manage --add /dev/md1 /dev/sda5
mdadm: re-added /dev/sda5
root@redmine:~# mdadm --manage --add /dev/md0 /dev/sda1
mdadm: re-added /dev/sda1

とりあえず、リビルド中だが、正常に戻った。

root@redmine:~# cat /proc/mdstat 
Personalities : [raid1] 
md1 : active raid1 sda5[0] sdb5[1]
      5998528 blocks [2/2] [UU]
      
md0 : active raid1 sda1[2] sdb1[1]
      482384832 blocks [2/1] [_U]
      [>....................]  recovery =  0.3% (1705728/482384832) finish=103.3min speed=77533K/sec
      
unused devices: <none>