|
FAQ: How to setup Disk Suite(SDS) Mirrors for Root, Swap, and data via the command line.
By Colin A. Bitterfield EX-SUN Microsystems, Inc. Contact Me
Step 1: Setup proper slices
Suggestions for a 36GB drive, use the same partition table for both drives. 0 [root] 4GB 1 [swap] 4GB 2 [backup] - 3 /export/home 4GB 4 /data (Remainer) 5 open 6 open 7 [meta devices] (last 10MB of disl space) Assumptions: Drive 0: c0t0d0 Drive 1: c0t1d0
Step 2: Load OS w/SDS 4.2.1 & reboot.
Step 3: Initialize the Metadb database (w/2 replicas per drive) * See notes on database at end.
> metadb -a -f -c 2 c0t0d0s7 c0t1d0s7 > metadb
Step 4: Create Metadevices for one side of the mirror
[root] > metainit -f d10 1 1 c0t0d0s0 > metainit d20 1 1 c0t1d0s0 > metainit d0 -m d10 > metaroot d0 [swap] > metainit -f d11 1 1 c0t0d0s1 > metainit d21 1 1 c0t1d0s1 > metainit d1 -m d11 [export/home] > metainit -f d12 1 1 c0t0d0s3 > metainit d22 1 1 c0t1d0s3 > metainit d2 -m d12 [data] > metainit -f d13 1 1 c0t0d0s4 > metainit d23 1 1 c0t1d0s4 > metainit d3 -m d13 > lockfs -fa
Step 5: (Reboot the system)
Step 6: Attach the second half of the mirror
[root] > metattach d0 d20 [swap] > metattach d1 d21 [export/home] > metattach d2 d22 [data] > metattach d3 d23
Step 7. (Make sure that VFSTAB points to meta devices)
edit the file and make sure that the devices are something like: Look for [Root], Swap, Home & Data. Pay attention to swap. /dev/md/dsk/d0 /dev/md/rdsk/d0 Check for all slices. #device device mount FS fsck mount mount #to mount to fsck point type pass at boot options #/dev/dsk/c1d0s2 /dev/rdsk/c1d0s2 /usr ufs 1 yes - fd - /dev/fd fd - no - /proc - /proc proc - no - /dev/md/dsk/d1 - - swap - no - /dev/md/dsk/d0 /dev/md/rdsk/d0 / ufs 1 no - /dev/md/dsk/d2 /dev/md/rdsk/d2 /export/home ufs 1 yes - /dev/md/dsk/d3 /dev/md/rdsk/d3 /data ufs 1 yes - swap - /tmp tmpfs - yes -
Step 8. (Make sure that disk1 is bootable)
example# installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/c0t1d0s0
Step 9. (NVRAM)
Make sure that boot-device = disk0,disk1 sentenv boot-device = disk0 disk1
All Done.
Q & A:
Q. How many replica's do I need ? What happens if I only have 2 disks A. There is an issue with having only 2 disks. The system will remain operational until reboot. The system tries to get a quorum on the database replicas > 50%. This is not possible with only two disks. The system will reboot into single user mode and you will have to use metadb -d /dev/dsk/c0t0d0s0 (or whatever the replica that is bad). Then reboot one more time. When you bring the mirror back on line you will need to re-create the metadb.
Q. I have two disks that are different sizes. (i.e. (1) 18GB and (1) 36GB) what do I do ? A. Make the partition sizes larger on disk 1. The following configuration was tested using this FAQ.
Disk 0 (4GB)
Current partition table (original): Total disk cylinders available: 3880 + 2 (reserved cylinders)
Part Tag Flag Cylinders Size Blocks 0 root wm 486 - 3377 2.98GB (2892/0/0) 6246720 1 swap wu 0 - 485 512.58MB (486/0/0) 1049760 2 backup wm 0 - 3879 4.00GB (3880/0/0) 8380800 3 home wm 3378 - 3852 500.98MB (475/0/0) 1026000 4 unassigned wm 0 0 (0/0/0) 0 5 unassigned wm 0 0 (0/0/0) 0 6 unassigned wm 0 0 (0/0/0) 0 7 alternates wm 3870 - 3879 10.55MB (10/0/0) 21600
Disk 1 (9GB)
Current partition table (unnamed): Total disk cylinders available: 4924 + 2 (reserved cylinders)
Part Tag Flag Cylinders Size Blocks 0 root wm 293 - 2045 3.00GB (1753/0/0) 6295023 1 swap wu 0 - 292 513.75MB (293/0/0) 1052163 2 backup wm 0 - 4923 8.43GB (4924/0/0) 17682084 3 home wm 2046 - 2332 503.23MB (287/0/0) 1030617 4 unassigned wm 0 0 (0/0/0) 0 5 unassigned wm 0 0 (0/0/0) 0 6 unassigned wm 0 0 (0/0/0) 0 7 alternates wm 4913 - 4923 19.29MB (11/0/0) 39501
Q. How do I know if a slice/mirror has failed? A. metastat
Q. How "safe" is this procedure ? How well does it protect my system ? A.
Q. I only have one controller in the system. What are the risks ? A. If the controller fails, then none of the mirroring will help keep the system up. The controller becomes the "weakest link"
Q. How do I automate checking for slice errors? A. This is directly from the manual. Create this script and activate it nightly from cron.
# #ident "@(#)metacheck.sh 1.3 96/06/21 SMI" # # Copyright (c) 1992, 1993, 1994, 1995, 1996 by Sun Microsystems, Inc. # # # DiskSuite Commands # MDBIN=/usr/sbin METADB=${MDBIN}/metadb METAHS=${MDBIN}/metahs METASTAT=${MDBIN}/metastat # # System Commands # AWK=/usr/bin/awk DATE=/usr/bin/date MAILX=/usr/bin/mailx RM=/usr/bin/rm # # Initialization # eval=0 date=`${DATE} '+%a %b %e %Y'` SDSTMP=/tmp/sdscheck.${$} ${RM} -f ${SDSTMP} MAILTO=${*:-"root"} # default to root, or use arg list # # Check replicas for problems, capital letters in the flags indicate an error. # dbtrouble=`${METADB} | tail +2 | \ ${AWK} '{ fl = substr($0,1,20); if (fl ~ /[A-Z]/) print $0 }'` if [ "${dbtrouble}" ]; then echo "" >>${SDSTMP} echo "SDS replica problem report for ${date}" >>${SDSTMP} echo "" >>${SDSTMP} echo "Database replicas are not active:" >>${SDSTMP} echo "" >>${SDSTMP} ${METADB} -i >>${SDSTMP} eval=1 fi # # Check the metadevice state, if the state is not Okay, something is up. # mdtrouble=`${METASTAT} | \ ${AWK} '/State:/ { if ( $2 != "Okay" ) print $0 }'` if [ "${mdtrouble}" ]; then echo "" >>${SDSTMP} echo "SDS metadevice problem report for ${date}" >>${SDSTMP} echo "" >>${SDSTMP} echo "Metadevices are not Okay:" >>${SDSTMP} echo "" >>${SDSTMP} ${METASTAT} >>${SDSTMP} eval=1 fi # # Check the hotspares to see if any have been used. # hstrouble=`${METAHS} -i | \ ${AWK} ' /blocks/ { if ( $2 != "Available" ) print $0 }'` if [ "${hstrouble}" ]; then echo "" >>${SDSTMP} echo "SDS Hot spares in use ${date}" >>${SDSTMP} echo "" >>${SDSTMP} echo "Hot spares in usage:" >>${SDSTMP} echo "" >>${SDSTMP} ${METAHS} -i >>${SDSTMP} eval=1 fi # # If any errors occurred, then mail the report to root, or whoever was called # out in the command line. # if [ ${eval} -ne 0 ]; then ${MAILX} -s "SDS problems ${date}" ${MAILTO} <${SDSTMP} ${RM} -f ${SDSTMP} fi exit ${eval}
|