“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
Mirroring the root_disk under solaris SVM
1. Mirroring of boot Disk and two separate partitions which are placed on two other disks :-
So in all there are Four disks :-
1. Disk 0 and Disk 1(Mirror)
/ 10 GB
Swap 8 GB
/usr 10 GB
/var 5 GB
/tmp 5 GB
2. Disk 2 and Disk 3 (Mirror)
/oracle 20 GB
/archive 20 GB
We will assume that the OS is already installed on the Server and /, swap, /usr, /var and
/tmp partitions are already in place.
STEP 1) Important precaution:
Copy /etc/vfstab and /etc/system before you go ahead:
cp -p /etc/system /etc/system.orig."date"
cp -p /etc/vfstab /etc/vfstab.orig."date"
In case /etc/system gets messed up, we can still use the command boot
-a from the OK prompt and specify by using:
/etc/system.orig."date"
STEP 2) We will use disk 1 for mirroring the root disk ie Disk 0.
3) Create a small slice of 100 Mbyte (10 Mbyte is also fine) for storing
volume databases on the "rootdisk" and label the disk.
ONLY Required if there is no space left on the disk!!!!!!!!
If you have free space on disk 0 then skip to step 4
If you don't have any space on your root disk, create a small slice by
deleting and re-adding swap space.
2. Make sure that there is not a lot of activity on the box while you do
this.
3.1) To list your swap, use: swap -l
(It's good if you have more than one slice configured as swap.)
3.2) Execute:
swap –d /dev/dsk/c1t0dos1
Change your partition table to incorporate a new slice by reducing the
size or cylinder length of the swap partition.
3.3) Execute:
swap –a /dev/dsk/c1t0dos1
STEP 4) The VTOC (volume table of contents) on the root disk and root
mirror must be the same. Copy the VTOC using prtvtoc and fmthard.
# prtvtoc /dev/rdsk/c?t?d?s2 | fmthard -s - /dev/rdsk/c?t?d?s2
STEP 5) Create metadatabases on the small slice created on rootdisk:
# metadb -f -a -c3 c1t0d0s7 (Slice 7 is my small slice here)
# metadb -a -c3 c0t1d0s7 (Slice 7 on rootmirror)
STEP 6) Now we can create a mirror for each and every slice in the
partition table.
For root or / partition:
# metainit -f d11 1 1 c0t0d0s0
# metainit d12 1 1 c0t1d0s0
(create a md d10 and attach one submirror)
# metainit d10 -m d11
Info Only!(sets up system files for root (/) metadevice, that is,
changes to /etc/system and /etc/vfstab)
3. # metaroot d10
# lockfs -fa (clear improper file locks on all mounted UFS file
systems)
STEP 7) Naming convention for other metadisks follow. (Note for those
who are new to this software: We will not do metaroot and lockfs steps
on other file systems.)
The submirrors will be named d11, d12 and so on.
In d12, 1 is the submirror number, and 2 is the slice number.
If we have swap on partition/slice 1, we would do this:
# metainit -f d21 1 1 c0t0d0s1
# metainit d22 1 1 c0t1d0s1
# metainit d20 -m d21
STEP 8) Repeat for as many file systems you have on your boot disk.
STEP 9) Make changes to your /etc/vfstab. The md entry for root will
already be updated by the metaroot command.
A sample copy of /etc/vfstab looks like this:
#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/dsk/c1t1d0s1 - - swap - no -
/dev/md/dsk/d20 - - swap - no -
/dev/md/dsk/d10 /dev/md/rdsk/d10 / ufs 1 no -
##/dev/dsk/c1t1d0s7 /dev/rdsk/c1t1d0s7 /export/home ufs 2 yes -
/dev/md/dsk/d70 /dev/md/rdsk/d70 /export/home ufs 2 yes -
##/dev/dsk/c1t1d0s3 /dev/rdsk/c1t1d0s3 /opt/uc4 ufs 2 yes -
/dev/md/dsk/d30 /dev/md/rdsk/d30 /opt/uc4 ufs 2 yes -
swap - /tmp tmpfs - yes -
NOTE : Repeat Step 4, 7, 8 and 9 for the partitions on the other disks ie /oracle and
/archive etc….
STEP 10) Configure your dump device using dumpadm.
4. STEP 11) Make the following entry in the /etc/system file, in the mdd info
section:
set md:mirrored_root_flag=1
When the root disk becomes unavailable, the database copies stored
on the root disk are also unavailable.
Solaris Volume Manager software expects more than 50 percent of the
databases to be available to boot up normally or else it may complain
about the insufficient number of database replicas. The preceding
change is made in order for Solaris Volume Manager software to boot
up with at least 50 percent of the copies.
STEP 12) Execute:
sync; sync; init 6
STEP 13) Once the system comes up, attach the other submirror:
# metattach d0 d20
(Note: It's "metattach" and not "metaattach")
# metattach d1 d21
and so on.
STEP 14) To see whether the FS syncing is done or not, do this:
metastat | grep progress
STEP 15) Determine the device path to the boot devices for both the
primary and mirror:
ls -l /dev/dsk/c0t1d0s0 /dev/dsk/c0t0d0s0
lrwxrwxrwx 1 root root 43 Dec 23 17:51 /dev/dsk/c0t0d0s0 ->
../../devices/pci@1c,600000/scsi@2/sd@0,0:a
lrwxrwxrwx 1 root root 43 Dec 23 17:51 /dev/dsk/c0t1d0s0 ->
../../devices/pci@1c,600000/scsi@2/sd@1,0:a
# eeprom "nvramrc=devalias rootdisk /pci@1c,600000/scsi@2/disk@1,0
devalias rootmirror /pci@1c,600000/scsi@2/disk@0,0"
5. (Please note the change "sd" to "disk" in using ls -l output.)
# eeprom "use-nvramrc?=true"
You can also change the boot-device values so that the system tries to
boot from the mirror in case one of them is not available.
# eeprom boot-device="rootdisk rootmirror net"
STEP 16) Once the syncing is complete, test your system by removing
the root disk.