A short guide on how to recover a broken DiskSuite mirror.
- Check metastat information:
# metastat -c
d30 m 34GB d31 (maint) d32- d31 s 34GB c0t0d0s3 (maint)
d32 s 34GB c0t1d0s3d20 m 4.0GB d21 (maint) d22
- d21 s 4.0GB c0t0d0s1 (maint)
d22 s 4.0GB c0t1d0s1d10 m 30GB d11 (maint) d12
- d11 s 30GB c0t0d0s0 (maint)
d12 s 30GB c0t1d0s0hsp001 h –
- Remove the broken replicas from the metadb :
# metadb -i
flags first blk block count
W p l 16 8192 /dev/dsk/c0t0d0s7
W p l 8208 8192 /dev/dsk/c0t0d0s7
a m p luo 16 8192 /dev/dsk/c0t1d0s7
a p luo 8208 8192 /dev/dsk/c0t1d0s7
. . .# metadb -d /dev/dsk/c0t0d0s7
- Replace the broken disk
- Check that the new disk is visible:
# format
Searching for disks…doneAVAILABLE DISK SELECTIONS:
- 0. c0t0d0
/pci@1c,600000/scsi@2/sd@0,0
1. c0t1d0
/pci@1c,600000/scsi@2/sd@1,0 - Copy the partition table from the healthy to the new disk:
# prtvtoc /dev/rdsk/c0t1d0s0 | fmthard -s – \
/dev/rdsk/c0t0d0s0
fmthard: New volume table of contents now in place. - Create metadb replicas (for example, 2 copies in slice 7):
# metadb -a -c2 /dev/rdsk/c0t0d0s7
- Verifying the metadb:
# metadb -i
- flags first blk block count
a u 16 8192 /dev/dsk/c0t0d0s7
a u 8208 8192 /dev/dsk/c0t0d0s7
a p luo 16 8192 /dev/dsk/c0t1d0s7
a p luo 8208 8192 /dev/dsk/c0t1d0s7 - “Metareplace” the failed slices:
# metastat | fgrep replace
Invoke: metareplace d30 c0t0d0s3
Invoke: metareplace d20 c0t0d0s1
Invoke: metareplace d10 c0t0d0s0# metareplace -e d30 c0t0d0s3
d30: device c0t0d0s3 is enabled
# metareplace -e d20 c0t0d0s1
d20: device c0t0d0s1 is enabled
# metareplace -e d10 c0t0d0s0
d10: device c0t0d0s0 is enabled - Periodically check the resyncing status:
# metastat | fgrep esync
State: Resyncing
Resync in progress: 0 % done
State: Resyncing
c0t0d0s3 0 No Resyncing Yes
State: Resyncing
Resync in progress: 19 % done
State: Resyncing
c0t0d0s1 0 No Resyncing Yes
State: Resyncing
Resync in progress: 2 % done
State: Resyncing
c0t0d0s0 0 No Resyncing Yes