An example of mirroring the root disks with DiskSuite on Solaris 9. Step by step instructions on how to mirror 2 internal root disks with the bundled version of DS.
With a default install (Entire Group plus/minus OEM) of Solaris 9, you should have Solaris Volume Manager installed. It’s basically disksuite with a few niceties. I believe one of them is viewing the volumes in MB instead of cylinders. Don’t quote me on that.
Vi /etc/lvm/md.tab and follow the example below:
# Root Mirror MetaDevices # MetaDevice for c1t0d0s0 (boot disk root slice) /dev/md/dsk/d11 1 1 /dev/dsk/c1t0d0s0 # MetaDevice for c1t1d0s0 (bootmirror disk root slice) /dev/md/dsk/d12 1 1 /dev/dsk/c1t1d0s0 # MetaDevice for a mirror using boot disk to start with /dev/md/dsk/d10 -m /dev/md/dsk/d11 # Swap Mirror Metadevices # MetaDevice for c1t0d0s1 (boot disk swap) /dev/md/dsk/d21 1 1 /dev/dsk/c1t0d0s1 # MetaDevice for c1t1d0s1 (bootmirror disk swap) /dev/md/dsk/d22 1 1 /dev/dsk/c1t1d0s1 # MetaDevice for Swap Mirror /dev/md/dsk/d20 -m /dev/md/dsk/d21 # /export Mirror Metadevices # MetaDevice for c1t0d0s5 /dev/md/dsk/d31 1 1 /dev/dsk/c1t0d0s7 # MetaDevice for c1t1d0s5 /dev/md/dsk/d32 1 1 /dev/dsk/c1t1d0s7 # MetaDevice for Export Mirror /dev/md/dsk/d30 -m /dev/md/dsk/d31 # /usr Mirror Metadevices # MetaDevice for c1t0d0s3 /dev/md/dsk/d41 1 1 /dev/dsk/c1t0d0s3 # MetaDevice for c1t1d0s3 /dev/md/dsk/d42 1 1 /dev/dsk/c1t1d0s3 # MetaDevice for /usr Mirror /dev/md/dsk/d40 -m /dev/md/dsk/d41 # /var Mirror Metadevices # MetaDevice for c1t0d0s4 /dev/md/dsk/d51 1 1 /dev/dsk/c1t0d0s4 # MetaDevice for c1t1d0s3 /dev/md/dsk/d52 1 1 /dev/dsk/c1t1d0s4 # MetaDevice for /var Mirror /dev/md/dsk/d50 -m /dev/md/dsk/d51
Now create your metadatabase. It holds info about your volumes. This is similar to encapsulation under Veritas.
[root@server /]# metadb -af -c 4 /dev/dsk/c1t0d0s6 [root@server /]# metadb -af -c 4 /dev/dsk/c1t1d0s6
Make sure that the database replicas were created.
[root@server /]# metadb flags first blk block count a u 16 8192 /dev/dsk/c1t0d0s6 a u 8208 8192 /dev/dsk/c1t0d0s6 a u 16400 8192 /dev/dsk/c1t0d0s6 a u 24592 8192 /dev/dsk/c1t0d0s6 a u 16 8192 /dev/dsk/c1t1d0s6 a u 8208 8192 /dev/dsk/c1t1d0s6 a u 16400 8192 /dev/dsk/c1t1d0s6 a u 24592 8192 /dev/dsk/c1t1d0s6
Initialize your metadevices. You don’t have to force each one but I did for quicker Bash shortcuts (up arrow).
[root@server /]# metainit -f /dev/md/dsk/d11 d11: Concat/Stripe is setup [root@server /]# metainit -f /dev/md/dsk/d12 d12: Concat/Stripe is setup [root@server /]# metainit -f /dev/md/dsk/d10 d10: Mirror is setup [root@server /]# metainit -f /dev/md/dsk/d21 d21: Concat/Stripe is setup [root@server /]# metainit -f /dev/md/dsk/d22 d22: Concat/Stripe is setup [root@server /]# metainit -f /dev/md/dsk/d20 d20: Mirror is setup [root@server /]# metainit -f /dev/md/dsk/d31 d31: Concat/Stripe is setup [root@server /]# metainit -f /dev/md/dsk/d32 d32: Concat/Stripe is setup [root@server /]# metainit -f /dev/md/dsk/d30 d30: Mirror is setup [root@server /]# metainit -f /dev/md/dsk/d41 d41: Concat/Stripe is setup [root@server /]# metainit -f /dev/md/dsk/d42 d42: Concat/Stripe is setup [root@server /]# metainit -f /dev/md/dsk/d40 d40: Mirror is setup [root@server /]# metainit -f /dev/md/dsk/d51 d51: Concat/Stripe is setup [root@server /]# metainit -f /dev/md/dsk/d52 d52: Concat/Stripe is setup [root@server /]# metainit -f /dev/md/dsk/d50 d50: Mirror is setup
Here, metaroot modifies vfstab to boot / off the d10 metadevice
[root@server /]# metaroot d10
Then manually change /dev/dsk/c1t0d0s1 for swap to read /dev/md/dsk/d20
#device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # fd - /dev/fd fd - no - /proc - /proc proc - no - /dev/md/dsk/d20 - - swap - no - /dev/md/dsk/d10 /dev/md/rdsk/d10 / ufs 1 no - /dev/md/dsk/d40 /dev/md/rdsk/d40 /usr ufs 1 no - /dev/md/dsk/d50 /dev/md/rdsk/d50 /var ufs 1 no - /dev/md/dsk/d30 /dev/md/rdsk/d30 /export ufs 2 yes - swap - /tmp tmpfs - yes -
Reboot to check your progress. If your server comes up, continue while doing a happy dance.
Root’s fine
[root@server /]# df -lk / Filesystem kbytes used avail capacity Mounted on /dev/md/dsk/d10 5039370 336115 4652862 7% /
Swap’s fine
[root@server /]# swap -l swapfile dev swaplo blocks free /dev/md/dsk/d20 85,20 16 2097392 2097392
Do the following for every mirror pair, here I attach d11 to d12 as d10 (d11 is assumed by our previous config file).
[root@server /]# metattach d10 d12 d10: submirror d12 is attached
[…]
[root@server /]# metastat|grep Resync State: Resyncing Resync in progress: 2 % done State: Resyncing
Best idea to let one synch go at a time. Watch status with:
while true; do metastat|grep %; sleep 1; done
When you don’t see Resync progress anymore, the mirrors are sync’d. Then we check to see how our new mirrors are doing:
[root@server /]# metastat d40: Mirror Submirror 0: d41 State: Okay Pass: 1 Read option: roundrobin (default) Write option: parallel (default) Size: 6142014 blocks (2.9 GB) d41: Submirror of d40 State: Okay Size: 6142014 blocks (2.9 GB) Stripe 0: Device Start Block Dbase State Reloc Hot Spare c1t0d0s3 0 No Okay Yes d30: Mirror Submirror 0: d31 State: Okay Pass: 1 Read option: roundrobin (default) Write option: parallel (default) Size: 51314418 blocks (24 GB) d31: Submirror of d30 State: Okay Size: 51314418 blocks (24 GB) Stripe 0: Device Start Block Dbase State Reloc Hot Spare c1t0d0s5 0 No Okay Yes d20: Mirror Submirror 0: d21 State: Okay Pass: 1 Read option: roundrobin (default) Write option: parallel (default) Size: 2097414 blocks (1.0 GB) d21: Submirror of d20 State: Okay Size: 2097414 blocks (1.0 GB) Stripe 0: Device Start Block Dbase State Reloc Hot Spare c1t0d0s1 0 No Okay Yes d10: Mirror Submirror 0: d11 State: Okay Pass: 1 Read option: roundrobin (default) Write option: parallel (default) Size: 10238616 blocks (4.9 GB) d11: Submirror of d10 State: Okay Size: 10238616 blocks (4.9 GB) Stripe 0: Device Start Block Dbase State Reloc Hot Spare c1t0d0s0 0 No Okay Yes d50: Mirror Submirror 0: d51 State: Okay Pass: 1 Read option: roundrobin (default) Write option: parallel (default) Size: 1022706 blocks (499 MB) d51: Submirror of d50 State: Okay Size: 1022706 blocks (499 MB) Stripe 0: Device Start Block Dbase State Reloc Hot Spare c1t0d0s4 0 No Okay Yes d52: Concat/Stripe Size: 1022706 blocks (499 MB) Stripe 0: Device Start Block Dbase Reloc c1t1d0s4 0 No Yes d42: Concat/Stripe Size: 6142014 blocks (2.9 GB) Stripe 0: Device Start Block Dbase Reloc c1t1d0s3 0 No Yes d32: Concat/Stripe Size: 51314418 blocks (24 GB) Stripe 0: Device Start Block Dbase Reloc c1t1d0s5 0 No Yes d22: Concat/Stripe Size: 2097414 blocks (1.0 GB) Stripe 0: Device Start Block Dbase Reloc c1t1d0s1 0 No Yes d12: Concat/Stripe Size: 10238616 blocks (4.9 GB) Stripe 0: Device Start Block Dbase Reloc c1t1d0s0 0 No Yes Device Relocation Information: Device Reloc Device ID c1t1d0 Yes id1,ssd@w20000004cf9f2e91 c1t0d0 Yes id1,ssd@w20000004cf99e53f