Tuesday, April 13, 2010

Letter to the Editor of the Independent

Indigenisation spearheaded by the wrong peoplePDFPrintE-mail
Friday, 26 March 2010 08:39

I CAN describe it as a good law lacking timing, as a good law with wrong implementation, as a good law ready to be abused and as a good law spearheaded by the wrong people. So we all know vehicles are good inventions but if driven by wrong people they kill. We all know bars are good entertainment areas but if patronised by wrong people they become havens of all social ills and even murders.
Marijuana is a good drug for some ailments but in the wrong hands it becomes a dangerous drug.
To indigenise the economy is what we need to do. I wonder if indigenising Barclays Bank for instance will increase employment. I don’t think so! I don’t think everybody is cut out to be a business man.
Why should companies be forced to sell their shares to certain people even if it is not in their business interests? We thought companies would be asked to cede the 51% to their workers since we all know that these workers are mostly indigenous black people. Even this law should also say all companies should not be wholly owned by an individual whether black or white but that 51% should be distributed.
I heard Paddington Japajapa on Talking Business With Supa on ZTV saying the government should provide the funds to get the 51% stakes in the companies. So he needs the government to use taxpayers’ money to enrich him and his coterie of friends.
Why does he not advocate for a fund (this should be a loan and repayable, not free like the tractors) from the government to be availed to every Zimbabwean wishing to go into business so that he/she starts his/her own business and grow it to be like Colgate, Lever Brothers, Olivine, Barclays Bank and the like. Let us face reality here; we had Trust Bank, a bank which even the worker was proud of.
We have other banks which are operating well. These created wealth and employment so why should we try to grab Standard Chartered Bank?
Next time when Supa Mandiwanzira wants to talk about some issues on business he should avoid these fly-by-night business people whose knowledge of business is about how many crates of beer are in his bottle store.
Seriously speaking, these are not business people because anybody can just run a bottle store. When we talk about the country’s economy we need to talk about really business ventures. Bottle stores will sort themselves out because who does not know that most bottle stores are like tuck shops.
We also see that most of these people who are trying to enforce empowerment laws have benefited unfairly and are the ones who have formed many indigenous pressure groups which they are using as vehicles of looting.
Look how silent they were when Mutumwa Mawere’s empire was being annihilated; they were quiet when Nicholas Vingirai was being hounded out of the country. Did they say anything when Mtuli Ncube was abused? I don’t think so because they had nothing to gain from them. Are these not indigenous people?
I am worried that the ministers who are supposed to be making decisions on some of these issues will enforce laws that will put them in a good position to loot from foreign firms. The ordinary man/woman in the street will never benefit anything from these forced takeovers. We will keep being told of sanctions whilst the fat cats are enjoying.
Did Strive Masiyiwa not start from scratch to rise to be one of the biggest business people in the country? He battled to be where he is now with no indigenous group helping him. We need such people with business acumen, not those who have hawkish eyes ready to pounce on other people’s chickens.
We all know those in indigenous pressure groups have had a brush with the law or escaped the law due to friends in the higher echelons of power, because they are amassing and not creating wealth. They are there because they use hook and crook means and that is why most of their businesses are not growing. Some of them bought companies to strip the assets and then repackaged them into tiny entities to sell to other people ending with engineering firms being turned into tuck shops.
This indigenisation law should be revisited so that every Zimbabwean benefits.

Taruvinga Mashayamombe,
Harare.

Mashie

The man called Mashie is at most misunderstood, not controversial. He is almost conservative, he is not the wild type and will recoil when he feels some deeds or language are embarassing. He is more political than social but has fears of getting involved deeply into politics.

He reads wildly and has read books by some renowned writers and prominent people like Ndabaningi Sithole, Joshua Nkomo's Story of my life, Perhaps Tomorrow by a white farnmer who had been captured by guerillas and taken to Mozambique, Tekere is book, I also read Smith book. Perhaps Tomorrow was my best reading.

I have read on line stories about the history of the struggle for Zimbabwe's independency and also has read what I call historical fraud books mainly by ZanuPf officials. I have ready the book on Gukurahundi by the Catholic bishops conference. I have read so many magazines and newspapers. I enjoy internet postings about Zimbabwe.

He became an MDC member soon after its formation buying his membership card at what is now Zimrights offices. He though did not become too much of an active member taking a back seat most probably having been discouraged by the language of one of the NCA members who talked what Mashie was to tell him it was nonsense. The man was Brian Kagoro. How did this happen?

We went for a match for a new constitution and we gathered at Causeway Post Office building so that we much to African Unity square from there. As people prepared to much riot police descended on us and told us that the much was illegal and we were to disperse. We were given some seconds to disperse and they started beating people.

They picked Mike Auret and Grace Kwinjeh and bundled them into a land rover truck. I was one of the people who was voiceforous to match. Kagoro maybe trying to take leadership of the much felt challenged and he accused some of us of being zanupf cadres sent to disrupt the match and cause mayhem to give police excuse to beat us up. That was crap and nonsense and I told him off. I told him the whole purpose was to match for a new constitution and knowing zanupf and its state security apparatus would not allow us to match anyway so why not bite the bullet. I told him f he thinks i am a zanupf cadre then fine i also need a new constitution and would not mind being in front matching to the venue.

From the way he looked at me i found out that i may be creating some enemies and saw that this is not the type of people to lead us into a new Zimbabwe if his way of looking at others is like that, selfish.As we argued a group came through Julius Nyerere matching and suddenly our group joined in. If he was not embarrassed by this I do not know if he would be embarassed even if he wets himself.

That was the day I met Morgan Tsvangirayi. he was in his faded jeans and very simple. Little did i know he was to be the President of MDC, The President of Zimbabwe if ZanuPf had not played a coup-de -dat on him, Prime Minister in the GNU which is proving difficult to run. Many people gave a lot of speaches the people like Wurayi Zembe, Makombe, Madhuku and Tsvangirayi. I still have the t-shirt I got that day.


Wednesday, February 17, 2010

Solaris Misc 1

Installing DiskSuite

The DiskSuite packages have moved around a bit with each release of Solaris. For Solaris 2.6 and Solaris 7, the DiskSuite packages are located on the Easy Access CD. With Solaris 8, DiskSuite moved to the "Solaris 8 Software" cdrom number two, in the EA directory. Starting the Solaris 9, DiskSuite is now included with the operating system.

At the time of this writing, Solaris 8 is the most commonly deployed version of Solaris, so we'll use that as the basis for this example. The steps are basically identical for the other releases.

1. After having completed the installation of the Solaris 8 operating system, insert the Solaris 8 software cdrom number two into the cdrom drive. If volume management is enabled, it will automatically mount to /cdrom/sol_8_401_sparc_2 (depending on the precise release iteration of Solaris 8, the exact path may differ in your case):

2.             # df -k
3.             Filesystem            kbytes    used   avail capacity  Mounted on
4.             /dev/dsk/c0t0d0s0    6607349  826881 5714395    13%    /
5.             /proc                      0       0       0     0%    /proc
6.             fd                         0       0       0     0%    /dev/fd
7.             mnttab                     0       0       0     0%    /etc/mnttab
8.             /dev/dsk/c0t0d0s4    1016863    8106  947746     1%    /var
9.             swap                 1443064       8 1443056     1%    /var/run
10.         swap                 1443080      24 1443056     1%    /tmp
11.         /vol/dev/dsk/c0t6d0/sol_8_401_sparc_2
12.                               239718  239718       0   100%    /cdrom/sol_8_401_sparc_2

13. Change to the directory containing the DiskSuite packages:

# cd /cdrom/sol_8_401_sparc_2/Solaris_8/EA/products/Disksuite_4.2.1/sparc/Packages

14. Add the required packages (we're taking everything except the Japanese-specific package):

15.         # pkgadd -d .
16.          
17.         The following packages are available:
18.           1  SUNWmdg      Solstice DiskSuite Tool
19.                           (sparc) 4.2.1,REV=1999.11.04.18.29
20.           2  SUNWmdja     Solstice DiskSuite Japanese localization
21.                           (sparc) 4.2.1,REV=1999.12.09.15.37
22.           3  SUNWmdnr     Solstice DiskSuite Log Daemon Configuration Files
23.                           (sparc) 4.2.1,REV=1999.11.04.18.29
24.           4  SUNWmdnu     Solstice DiskSuite Log Daemon
25.                           (sparc) 4.2.1,REV=1999.11.04.18.29
26.           5  SUNWmdr      Solstice DiskSuite Drivers
27.                           (sparc) 4.2.1,REV=1999.12.03.10.00
28.           6  SUNWmdu      Solstice DiskSuite Commands
29.                           (sparc) 4.2.1,REV=1999.11.04.18.29
30.           7  SUNWmdx      Solstice DiskSuite Drivers(64-bit)
31.                           (sparc) 4.2.1,REV=1999.11.04.18.29
32.          
33.         Select package(s) you wish to process (or 'all' to process
34.         all packages). (default: all) [?,??,q]: 1 3 4 5 6 7
35.          
36.         Processing package instance  from 
37.         .
38.         .
39.         .
40.         postinstall: configure driver
41.          
42.                         (This may take a while.)
43.          
44.         Installation of  was successful.
45.          
46.         The following packages are available:
47.           1  SUNWmdg      Solstice DiskSuite Tool
48.                           (sparc) 4.2.1,REV=1999.11.04.18.29
49.           2  SUNWmdja     Solstice DiskSuite Japanese localization
50.                           (sparc) 4.2.1,REV=1999.12.09.15.37
51.           3  SUNWmdnr     Solstice DiskSuite Log Daemon Configuration Files
52.                           (sparc) 4.2.1,REV=1999.11.04.18.29
53.           4  SUNWmdnu     Solstice DiskSuite Log Daemon
54.                           (sparc) 4.2.1,REV=1999.11.04.18.29
55.           5  SUNWmdr      Solstice DiskSuite Drivers
56.                           (sparc) 4.2.1,REV=1999.12.03.10.00
57.           6  SUNWmdu      Solstice DiskSuite Commands
58.                           (sparc) 4.2.1,REV=1999.11.04.18.29
59.           7  SUNWmdx      Solstice DiskSuite Drivers(64-bit)
60.                           (sparc) 4.2.1,REV=1999.11.04.18.29
61.          
62.         Select package(s) you wish to process (or 'all' to process
63.         all packages). (default: all) [?,??,q]: q
64.          
65.         *** IMPORTANT NOTICE ***
66.                 This machine must now be rebooted in order to ensure
67.                 sane operation.  Execute
68.                        shutdown -y -i6 -g0
69.                 and wait for the "Console Login:" prompt.
70.         # eject cdrom
71.         # shutdown -y -i6 -g0

72. Once the system reboots, apply any DiskSuite patches. At the time of this writing, the latest recommended DiskSuite patch available from sunsolve.sun.com is 106627-18 (DiskSuite 4.2) or 108693-13 (DiskSuite 4.2.1). Note that the patch installation instructions require that a reboot be performed after the patch is installed

73. Proceed to the process of mirroring the operating system.

Mirroring the operating system

In the steps below, I'm using DiskSuite to mirror the active root disk (c0t0d0) to a mirror (c0t1d0). I'm assuming that partitions five and six of each disk have a couple of cylinders free for DiskSuite's state database replicas.

Introduction

First, we start with a filesystem layout that looks as follows:

Filesystem            kbytes    used   avail capacity  Mounted on
/dev/dsk/c0t0d0s0    6607349  826881 5714395    13%    /
/proc                      0       0       0     0%    /proc
fd                         0       0       0     0%    /dev/fd
mnttab                     0       0       0     0%    /etc/mnttab
/dev/dsk/c0t0d0s4    1016863    8106  947746     1%    /var
swap                 1443064       8 1443056     1%    /var/run
swap                 1443080      24 1443056     1%    /tmp

We're going to be mirroring from c0t0d0 to c0t1d0. When the operating system was installed, we created unassigned slices five, six, and seven of roughly 10 MB each. We will use slices five and six for the DiskSuite state database replicas. The output from the "format" command is as follows:

# format 
Searching for disks...done
 
 
AVAILABLE DISK SELECTIONS:
       0. c0t0d0 
          /pci@1f,4000/scsi@3/sd@0,0
       1. c0t1d0 
          /pci@1f,4000/scsi@3/sd@1,0
Specify disk (enter its number): 0
 
selecting c0t0d0
[disk formatted]
...
partition> p
Current partition table (original):
Total disk cylinders available: 5266 + 2 (reserved cylinders)
 
Part      Tag    Flag     Cylinders        Size            Blocks
  0       root    wm       0 - 3994        6.40GB    (3995/0/0) 13423200
  1       swap    wu    3995 - 4619        1.00GB    (625/0/0)   2100000
  2     backup    wm       0 - 5265        8.44GB    (5266/0/0) 17693760
  3 unassigned    wu       0               0         (0/0/0)           0
  4        var    wm    4620 - 5244        1.00GB    (625/0/0)   2100000
  5 unassigned    wm    5245 - 5251       11.48MB    (7/0/0)       23520
  6 unassigned    wm    5252 - 5258       11.48MB    (7/0/0)       23520
  7 unassigned    wm    5259 - 5265       11.48MB    (7/0/0)       23520
 

DiskSuite Mirroring

Note that much of the process of mirroring the root disk has been automated with the sdsinstall script. With the exception of the creation of device aliases, all of the work done in the following steps can be achieved via the following:

# ./sdsinstall -p c0t0d0 -s c0t1d0 -m s5 -m s6

1. Ensure that the partition tables of both disks are identical:

# prtvtoc /dev/rdsk/c0t0d0s2 | fmthard -s - /dev/rdsk/c0t1d0s2

2. Add the state database replicas. For redundancy, each disk has two state database replicas.

# metadb -a -f c0t0d0s5
# metadb -a c0t0d0s6
# metadb -a c0t1d0s5
# metadb -a c0t1d0s6

Note that there appears to be a lot of confusion regarding the recommended number and location of state database replicas. According the the DiskSuite reference manual:

State database replicas contain configuration and status information of all metadevices and hot spares. Multiple copies (replicas) are maintained to provide redundancy. Multiple copies also prevent the database from being corrupted during a system crash (at most, only one copy if the database will be corrupted).

State database replicas are also used for mirror resync regions. Too few state database replicas relative to the number of mirrors may cause replica I/O to impact mirror performance.

At least three replicas are recommended. DiskSuite allows a maximum of 50 replicas. The following guidelines are recommended:

· For a system with only a single drive: put all 3 replicas in one slice.

· For a system with two to four drives: put two replicas on each drive.

· For a system with five or more drives: put one replica on each drive.

In general, it is best to distribute state database replicas across slices, drives, and controllers, to avoid single points-of-failure.

Each state database replica occupies 517 KB (1034 disk sectors) of disk storage by default. Replicas can be stored on: a dedicated disk partition, a partition which will be part of a metadevice, or a partition which will be part of a logging - device.

Note - Replicas cannot be stored on the root (/), swap, or /usr slices, or on slices containing existing file systems or data.

Starting with DiskSuite 4.2.1, an optional /etc/system parameter exists which allows DiskSuite to boot with just 50% of the state database replicas online. For example, if one of the two boot disks were to fail, just two of the four state database replicas would be available. Without this /etc/system parameter (or with older versions of DiskSuite), the system would complain of "insufficient state database replicas", and manual intervention would be required on bootup. To enable the "50% boot" behaviour with DiskSuite 4.2.1, execute the following command:

# echo "set md:mirrored_root_flag=1" >> /etc/system

3. Define the metadevices on c0t0d0 (/):

# metainit -f d10 1 1 c0t0d0s0
# metainit -f d20 1 1 c0t1d0s0
# metainit d0 -m d10

The metaroot command edits the /etc/vfstab and /etc/system files:

# metaroot d0

Define the metadevices for c0t0d0s1 (swap):

# metainit -f d11 1 1 c0t0d0s1
# metainit -f d21 1 1 c0t1d0s1
# metainit d1 -m d11

Define the metadevices for c0t0d0s4 (/var):

# metainit -f d14 1 1 c0t0d0s4
# metainit -f d24 1 1 c0t1d0s4
# metainit d4 -m d14

4. Edit /etc/vfstab so that it references the DiskSuite metadevices instead of simple slices:

5.             #device           device          mount   FS      fsck    mount   mount
6.             #to mount         to fsck         point   type    pass    at boot options
7.             #
8.             fd               -                /dev/fd fd      -       no      -
9.             /proc            -                /proc   proc    -       no      -
10.         /dev/md/dsk/d1   -                -       swap    -       no      -
11.         /dev/md/dsk/d0   /dev/md/rdsk/d0  /       ufs     1       no      logging
12.         /dev/md/dsk/d4   /dev/md/rdsk/d4  /var    ufs     1       no      logging
13.         swap             -                /tmp    tmpfs   -       yes     -

14. Reboot the system:

# lockfs -fa

# sync;sync;sync;init 6

15. After the system reboots from the metadevices for /, /var, and swap, set up mirrors:

# metattach d0 d20
# metattach d1 d21
# metattach d4 d24

The process of synchronizing the data to the mirror disk will take a while. You can monitor its progress via the command:

# metastat|grep -i progress

16. Capture the DiskSuite configuration in the text file md.tab. With Solaris 2.6 and Solaris 7, this text file resides in the directory /etc/opt/SUNWmd; however, more recent versions of Solaris place the file in the /etc/lvm directory. We'll assume that we're running Solaris 8 here:

# metastat -p | tee /etc/lvm/md.tab

17. In order for the system to be able to dump core in the event of a panic, the dump device needs to reference the DiskSuite metadevice:

# dumpadm -d /dev/md/dsk/d1

18. If the primary boot disk should fail, make it easy to boot from the mirror. Some sites choose to alter the OBP "boot-device" variable; in this case, we choose to simply define the device aliases "sds-root" and "sds-mirror". In the event that the primary boot device ("disk" or "sds-root") should fail, the administrator simply needs to type "boot sds-mirror" at the OBP prompt.

Determine the device path to the boot devices for both the primary and mirror:

# ls -l /dev/dsk/c0t0d0s0 /dev/dsk/c0t1d0s0
lrwxrwxrwx   1 root     root          41 Oct 17 11:48 /dev/dsk/c0t0d0s0 -> ../..
/devices/pci@1f,4000/scsi@3/sd@0,0:a
lrwxrwxrwx   1 root     root          41 Oct 17 11:48 /dev/dsk/c0t1d0s0 -> ../..
/devices/pci@1f,4000/scsi@3/sd@1,0:a

Use the device paths to define the sds-root and sds-mirror device aliases (note that we use the label "disk" instead of "sd" in the device alias path):

# eeprom "nvramrc=devalias sds-root /pci@1f,4000/scsi@3/disk@0,0
devalias sds-mirror /pci@1f,4000/scsi@3/disk@1,0"
# eeprom "use-nvramrc?=true"

Test the process of booting from either sds-root or sds-mirror.

Once the above sequence of steps has been completed. the system will look as follows:

# metadb
        flags           first blk       block count
     a m  p  luo        16              1034            /dev/dsk/c0t0d0s5
     a    p  luo        16              1034            /dev/dsk/c0t0d0s6
     a    p  luo        16              1034            /dev/dsk/c0t1d0s5
     a    p  luo        16              1034            /dev/dsk/c0t1d0s6
 
# df -k
Filesystem            kbytes    used   avail capacity  Mounted on
/dev/md/dsk/d0       6607349  845208 5696068    13%    /
/proc                      0       0       0     0%    /proc
fd                         0       0       0     0%    /dev/fd
mnttab                     0       0       0     0%    /etc/mnttab
/dev/md/dsk/d4       1016863    8414  947438     1%    /var
swap                 1443840       8 1443832     1%    /var/run
swap                 1443848      16 1443832     1%    /tmp
 

Trans metadevices for logging

UFS filesystem logging was first supported with Solaris 7. Prior to that release, one could create trans metadevices with DiskSuite to achieve the same effect. For Solaris 7 and up, it's much easier to simply enable ufs logging by adding the word "logging" to the last field of the /etc/vfstab file. The following section is included for those increasingly rare Solaris 2.6 installations.

The following two steps assume that you are have an available (<=64MB) slice 3 available for logging.

1. Define the trans metadevice mirror (c0t0d0s3):

# metainit d13 1 1 c0t0d0s3
# metainit d23 1 1 c0t1d0s3
# metainit d3 -m d13
# metattach d3 d23

2. Make /var use the trans meta device for logging:

# metainit -f d64 -t d4 d3

Edit vfstab as follows:

/dev/md/dsk/d64 /dev/md/rdsk/d64 /var ufs 1 no -

Ensure that no volumes are syncing before running the following:

# sync;sync;sync;init 6

Mirroring Disks with Solstice DiskSuite

Introduction

This paper will present a short introduction to mirroring two disks using Solstice DiskSuite. Although not as robust as Veritas Volume Manager (VxVM) (also distributed by Sun as the "Sun Enterprise Volume Manager" (SEVM)), DiskSuite is nonetheless still a popular choice for doing basic disk mirroring. This tutorial will be presented using an actual mirroring session with comments and explanations interspersed.

Note that the following procedure is for DiskSuite 4.2, which runs on Solaris 2.6 and Solaris 7. This procedure will also work with DiskSuite 4.2.1, distributed with Solaris 8. Solstice DiskSuite is now known as Solaris Volume Manager in Solaris 9 and later. There are a few fundamental changes between the two versions, particularly in the size of state database replicas. The terms DiskSuite and Solaris Volume Manager are both used in this document to refer to the software. Where necessary, specific versions will be pointed out.

Installation

The first step to setting up mirroring using DiskSuite is to install the DiskSuite packages and any necessary patches for systems prior to Solaris 9. SVM is part of the base system in Solaris 9. The latest recommended version of DiskSuite is 4.2 for systems running Solaris 2.6 and Solaris 7, and 4.2.1 for Solaris 8.

There are currently three packages and one patch necessary to install DiskSuite 4.2. They are:

· SUNWmd (Required)

· SUNWmdg (Optional GUI)

· SUNWmdn (Optional SNMP log daemon)

· 106627-19 (obtain latest revision)

The packages should be installed in the same order as listed above. Note that a reboot isnecessary after the install as new drivers will be added to the Solaris kernel.

For DiskSuite 4.2.1, install the following packages:

· SUNWmdu (Commands)

· SUNWmdr (Drivers)

· SUNWmdx (64-Bit Drivers)

· SUNWmdg (Optional GUI)

· SUNWmdnr (Optional log daemon configs)

· SUNWmdnu (Optional log daemon)

For Solaris 2.6 and 7, to make life easier, be sure to update your PATH and MANPATH variables to add DiskSuite's directories. Executables reside in /usr/opt/SUNWmd/sbin and man pages in/usr/opt/SUNWmd/man. In Solaris 8, DiskSuite files were moved to "normal" system locations (/usr/sbin) so path updates are not necessary.

The Environment

In this example we will be mirroring two disks, both on the same controller. The first disk will be the primary disk and the second will be the mirror. The disks are:

               Disk 1: c0t0d0
        Disk 2: c0t1d0

The partitions on the disks are presented below. There are a few items of note here. Each disk is partitioned exactly the same. This is necessary to properly implement the mirrors. Slice 2, commonly referred to as the 'backup' slice, which represents the entire disk must not be mirrored. There are situations where slice 2 is used as a normal slice, however, this author would not recommend doing so.

The three unassigned partitions on each disk are configured to each be 10MB. These 10MB slices will hold the DiskSuite State Database Replicas, or metadbs. More information on the state database replicas will be presented below. In DiskSuite 4.2 and 4.2.1, a metadb only occupies 1034 blocks (517KB) of space. In SVM, they occupy 8192 blocks (4MB). This can lead to many problems during an upgrade if the slices used for the metadb replicas are not large enough to support the new larger databases.

               Disk 1:
 
        c0t0d0s0:  /
        c0t0d0s1:  swap
        c0t0d0s2:  backup
        c0t0d0s3:  unassigned
        c0t0d0s4:  /var
        c0t0d0s5:  unassigned
        c0t0d0s6:  unassigned
        c0t0d0s7:  /export
 
               Disk 2:
 
        c0t1d0s0:  /
        c0t1d0s1:  swap
        c0t1d0s2:  backup
        c0t1d0s3:  unassigned
        c0t1d0s4:  /var
        c0t1d0s5:  unassigned
        c0t1d0s6:  unassigned
        c0t1d0s7:  /export

The Database State Replicas

The database state replicas serve a very important function in DiskSuite. They are the repositories of information on the state and configuration of each metadevice (A logical device created through DiskSuite is known as a metadevice). Having multiple replicas is critical to the proper operation of DiskSuite.

· There must be a minimum of three replicas. DiskSuite requires at least half of the replicas to be present in order to continue to operate.

· 51% of the replicas must be present in order to reboot.

· Replicas should be spread across disks and controllers where possible.

· In a three drive configuration, at least one replica should be on each disk, thus allowing for a one disk failure.

· In a two drive configuration, such as the one we present here, there must be at least two replicas per disk. If there were only three and the disk which held two of them failed, there would not be enough information for DiskSuite to function and the system would panic.

Here we will create our state replicas using the metadb command:

# metadb -a -f /dev/dsk/c0t0d0s3
# metadb -a  /dev/dsk/c0t0d0s5
# metadb -a  /dev/dsk/c0t0d0s6
# metadb -a  /dev/dsk/c0t1d0s3
# metadb -a  /dev/dsk/c0t1d0s5 
# metadb -a  /dev/dsk/c0t1d0s6

The -a and -f options used together create the initial replica. The -a option attaches a new database device and automatically edits the appropriate files.

Initializing Submirrors

Each mirrored meta device contains two or more submirrors. The meta device gets mounted by the operating system rather than the original physical device. Below we will walk through the steps involved in creating metadevices for our primary filesystems.

Here we create the two submirrors for the / (root) filesystem, as well as a one way mirror between the meta device and its first submirror.

# metainit -f d10 1 1 c0t0d0s0 
# metainit -f d20 1 1 c0t1d0s0 
# metainit d0 -m d10

The first two commands create the two submirrors. The -f option forces the creation of the submirror even though the specified slice is a mounted filesystem. The second two options 1 1specify the number of stripes on the metadevice and the number of slices that make up the stripe. In a mirroring situation, this should always be 1 1. Finally, we specify the logical device that we will be mirroring.

After mirroring the root partition, we need to run the metaroot command. This command will update the root entry in /etc/vfstab with the new metadevice as well as add the appropriate configuration information into /etc/system. Ommitting this step is one of the most common mistakes made by those unfamiliar with DiskSuite. If you do not run the metaroot command before you reboot, you will not be able to boot the system!

# metaroot d0

Next, we continue to create the submirrors and initial one way mirrors for the metadevices which will replace the swap, and /var partitions.

# metainit -f d11 1 1 c0t0d0s1
# metainit -f d21 1 1 c0t1d0s1
# metainit d1 -m d11
 
# metainit -f d14 1 1 c0t0d0s4
# metainit -f d24 1 1 c0t1d0s4
# metainit d4 -m d14
 
# metainit -f d17 1 1 c0t0d0s7
# metainit -f d27 1 1 c0t1d0s7
# metainit d7 -m d17

Updating /etc/vfstab

The /etc/vfstab file must be updated at this point to reflect the changes made to the system. The / partition will have already been updated through the metaroot command run earlier, but the system needs to know about the new devices for swap and /var. The entries in the file will look something like the following:

/dev/md/dsk/d1  -       -       swap    -       no      -
/dev/md/dsk/d4  /dev/md/rdsk/d4 /var    ufs     1       yes      -
/dev/md/dsk/d7  /dev/md/rdsk/d7 /export ufs     1       yes      -

Notice that the device paths for the disks have changed from the normal style /dev/dsk/c#t#d#s#and /dev/rdsk/c#t#d#s# to the new metadevice paths, /dev/md/dsk/d# and /dev/md/rdsk/d#.

The system can now be rebooted. When it comes back up it will be running off of the new metadevices. Use the df command to verify this. In the next step we will attach the second half of the mirrors and allow the two drives to synchronize.

Attaching the Mirrors

Now we must attach the second half of the mirrors. Once the mirrors are attached it will begin an automatic synchonization process to ensure that both halves of the mirror are identical. The progress of the synchonization can be monitored using the metastat command. To attach the submirrors, issue the following commands:

# metattach d0 d20
# metattach d1 d21
# metattach d4 d24
# metattach d7 d27

Final Thoughts

With an eye towards recovery in case of a future disaster it may be a good idea to find out the physical device path of the root partition on the second disk in order to create an Open Boot PROM (OBP) device alias to ease booting the system if the primary disk fails. In order to find the physical device path, simply do the following:

# ls -l /dev/dsk/c0t1d0s0

This should return something similar to the following:

/sbus@3,0/SUNW,fas@3,8800000/sd@1,0:a

Using this information, create a device alias using an easy to remember name such as altboot. To create this alias, do the following in the Open Boot PROM:

ok nvalias altboot /sbus@3,0/SUNW,fas@3,8800000/sd@1,0:a

For more information on creating OBP device aliases, refer to the following document: TechNote: Modifying the CD-ROM nvalias on an Ultra 10 (IDE based) System" .

It is now possible to boot off of the secondary device in case of failure using boot altboot from the OBP.

For more information on DiskSuite, including configuring metatrans devices for filesystem transaction logging, see the second part of this document, Additional Solstice DiskSuite Topics .

Solstice Disksuite is a free RAID volume manager from Sun Microsystems. This article describes the method of mirroring a boot drive using Solstice Disksuite via the command line. It is best used as an example or reference rather than a complete learning tool. This article assumes that you already have a little understanding of the basic concepts of SDS. You should read the documentation from Sun SDS 4.2.1 for more information.

Typically, environments will use SDS to mirror the boot drive of a system and use VxVM(Veritas Volume Manager) to control RAID for the application data usually residing in an external disk array(s). The idea is that SDS is easier to recover from a disaster such as boot disk failure than VxVM. However, VxVM's latest versions have made improvements in its design and have alleviated a good deal of the issues involved with disaster recovery. Proper planning and management will decrease the amount of time and complexity of recovering from a disaster if the boot drives have been encapsulated by VxVM.

Solstice Disksuite comes bundled with the Solaris 8 operating system. In previous versions, you had to purchase the server media(as opposed to workstation media) that shipped with either "Internet extensions CD(Solaris 2.6)" or the "Easy Access Server 3.0 CD(Solaris 7)".

Install Solstice Disksuite 4.2.1 on Solaris 8

Insert 2 of 2 software for Solaris 8

Change directory to the source directory

# CD /cdrom/sol_8_1000_sparc_2/Solaris_8/EA/products/DiskSuite_4.2.1/sparc/Packages

Install SDS. I usually install all the packages even though I do not use the GUI.

# pkgadd -d . ; type "all"; answer "y" to continue with the installation for all questions.

Reboot the server after the successful installation.

# init 6

Prepare the drives for SDS

SDS uses metadevice state databases to store information on disk about the state of your DiskSuite configuration. The metadevice state database records and tracks changes made to your configuration. These databases must reside on a dedicated slice(in the case of a boot drive). I typically leave a small amount of unused space on the boot drive when installing Solaris for these databases. That is, I leave at least one unused slice with approximately 6 MB of free space available for SDS when installing Solaris. If you do not have any unused space and you have an unused slice, then you may borrow space from swap. Seedocumentation from Sun to perform this step.

Use format command to select the boot disk and create the slice that will hold the state database.

The output from format of my boot disk looks like the following. I have the following filesystems carved: /, swap, /var, /opt, and /export/home

Part      Tag    Flag     Cylinders        Size            Blocks
  0       root    wm       0 - 1392        3.13GB    (1393/0/0)  6563816
  1       swap    wu    1393 - 3131        3.91GB    (1739/0/0)  8194168
  2     backup    wm       0 - 7505       16.86GB    (7506/0/0) 35368272
  3        var    wm    3132 - 4870        3.91GB    (1739/0/0)  8194168
  4 unassigned    wm    4871 - 5740        1.95GB    (870/0/0)   4099440
  5       home    wm    5741 - 7479        3.91GB    (1739/0/0)  8194168
  6 unassigned    wm       0               0         (0/0/0)           0
  7 unassigned    wm       0               0         (0/0/0)           0

Notice that slice 6 and 7 are unassigned and also there are 26 unused cylinders (7480 to 7505).

Create the dedicated slice for the state databases:

partition> 6
Part      Tag    Flag     Cylinders        Size            Blocks
  6 unassigned    wm    7480 - 7504       57.52MB    (25/0/0)     117800
 
Enter partition id tag[unassigned]: 
Enter partition permission flags[wm]: 
Enter new starting cyl[0]: 7480
Enter partition size[117800b, 25c, 57.52mb, 0.06gb]: 26c
partition> p
Current partition table (unnamed):
Total disk cylinders available: 7506 + 2 (reserved cylinders)
 
Part      Tag    Flag     Cylinders        Size            Blocks
  0       root    wm       0 - 1392        3.13GB    (1393/0/0)  6563816
  1       swap    wu    1393 - 3131        3.91GB    (1739/0/0)  8194168
  2     backup    wm       0 - 7505       16.86GB    (7506/0/0) 35368272
  3        var    wm    3132 - 4870        3.91GB    (1739/0/0)  8194168
  4 unassigned    wm    4871 - 5740        1.95GB    (870/0/0)   4099440
  5       home    wm    5741 - 7479        3.91GB    (1739/0/0)  8194168
  6 unassigned    wm    7480 - 7505       59.82MB    (26/0/0)     122512
  7 unassigned    wm       0               0         (0/0/0)           0
 
partition> label
Ready to label disk, continue? y

Note: in this example the slice is 60 MB. I made this slice bigger than what is needed. This is because I intend on adding other features to this configuration at a later time and need more space. However, you should be fine with approx. 6 Mb.

The partition table of the mirrored drive should be identical to the boot drive. Simply copy the partition table of the boot drive to its mirror

# prtvtoc /dev/rdsk/c0t0d0s2 | fmthard -s - /dev/rdsk/c0t8d0s2
fmthard: New volume table of contents now in place

In this case c0t0d0s2 is the boot drive and c0t8d0s2 is the mirror. Notice that it is on the same controller. You should try to mirror drives across different controllers if at all possible. Basically, the fmthard command takes the partition table of the boot disk and replicates it to the mirror drive. Use the format command to verify that the partitions are exactly identical.

Configure Solstice Disksuite

Create at least 2 state database replicas on each disk. A state database replica stores DiskSuite configuration and state information. Before you can use DiskSuite, you must create state database replicas.

# metadb -a -f -c2 /dev/dsk/c0t0d0s6 /dev/dsk/c0t8d0s6

Where -a means adding; -f means force because this is the first time creating databases; and -c 2 means create 2 databases in each slice.

Create the mirror for / filesystem

Here we are creating a one-way mirror which for the time being is composed of 1 drive. Later we will attach the second drive to the mirror. The metainit command defines the metadevices that the mirror will use. The device numbers (d##) are arbitrary. I typically use 10's(1st set of submirrors), 20's(2nd set of submirrors), and 30's(mirror containing the submirrors).

# metainit -f d10 1 1 c0t0d0s0
# metainit d20 1 1 c0t8d0s0
# metainit d30 -m d10

The -f means force the creation. The "1 1" means we are creating a 1 way 1 slice metadevice. "metainit d30 -m d10" creates the metadevice mirror and attaches the submirror "d10" to it.

Update the /etc/vfstab for / filesystem and /etc/system. Do not try to edit /etc/vfstab or /etc/system manually - Use the metaroot command!

# metaroot d30

Take a look at your /etc/vfstab and notice that the / filesystem will be mounted on /dev/md/dsk rather than /dev/dsk.

Create the mirror for all other filesystems

Swap filesystem:
# metainit -f d11 1 1 c0t0d0s1
# metainit d21 1 1 c0t8d0s1
# metainit d31 -m d11

/var filesystem:
# metainit -f d12 1 1 c0t0d0s3
# metainit d22 1 1 c0t8d0s3
# metainit d32 -m d12

/opt filesystem:
# metainit -f d13 1 1 c0t0d0s4
# metainit d23 1 1 c0t8d0s4
# metainit d33 -m d13

/export/home filesystem:
# metainit -f d14 1 1 c0t0d0s5
# metainit d24 1 1 c0t8d0s5
# metainit d34 -m d14

Edit the /etc/vfstab to mount the new mirrors on boot.

The /etc/vfstab prior to updating it:

#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/dsk/c0t0d0s1       -       -       swap    -       no      -
/dev/md/dsk/d30 /dev/md/rdsk/d30        /       ufs     1       no      -
/dev/dsk/c0t0d0s3       /dev/rdsk/c0t0d0s3      /var    ufs     1       no      -
/dev/dsk/c0t0d0s5       /dev/rdsk/c0t0d0s5      /export/home    ufs     2       yes     -
/dev/dsk/c0t0d0s4       /dev/rdsk/c0t0d0s4      /opt    ufs     2       yes     -
swap    -       /tmp    tmpfs   -       yes     -

The /etc/vfstab after updating it:

#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/d31 -       -       swap    -       no      -
/dev/md/dsk/d30 /dev/md/rdsk/d30        /       ufs     1       no      -
/dev/md/dsk/d32 /dev/md/rdsk/d32        /var    ufs     1       no      -
/dev/md/dsk/d34 /dev/md/rdsk/d34        /export/home    ufs     2       yes
-
/dev/md/dsk/d33 /dev/md/rdsk/d33        /opt    ufs     2       yes     -
swap    -       /tmp    tmpfs   -       yes     -

Be very careful when editing this file. It is very easy to mistype something and not be able to mount that filesystem when you reboot. I suggest carefully reviewing this file before proceeding.

Suppress harmless warning messages (optional)

Typically, after a SDS install, you will receive the harmless but annoying messages on boot-up: "WARNING: forceload of misc/md_hotspares failed". This is a nuisance, so I typically suppress them by creating an empty hot spare pool:

# metainit hsp001

Reboot and allow the system to mount the mirrors.

# lockfs -fa
# init 6

Ignore the following errors on boot. Suns reason for these errors: "These warnings are harmless, and may be ignored. They are an artifact of the way drivers are loaded during the boot process when you have a mirrored root or /usr file system.":

WARNING: forceload of misc/md_trans failed
WARNING: forceload of misc/md_raid failed
WARNING: forceload of misc/md_hotspares failed

Attach the second submirror to the mirror. This will cause the data from the boot disk to be synchronized with the mirrored drive.

# metattach d30 d20
# metattach d31 d21
# metattach d32 d22
# metattach d33 d23
# metattach d34 d24

Use metastat to track progress

# metastat

d30: Mirror
    Submirror 0: d10
      State: Okay
    Submirror 1: d20
      State: Resyncing
    Resync in progress: 21 % done
    Pass: 1
    Read option: roundrobin (default)
    Write option: parallel (default)
    Size: 6563816 blocks
...
 

Enable the mirror disk to be bootable:

# installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/c0t8d0s0
# ls -l /dev/rdsk/c0t8d0s0

lrwxrwxrwx 1 root root 50 Aug 1 10:48 /dev/rdsk/c0t8d0s0 -> ../../devices/pci@1f,0/pci@1,1/ide@3/dad@1,0:a,raw

Notice the red font. This is the device path that you will use to define the alternate boot path at the ok prompt.

ok nvalias mirror /pci@1f,0/pci@1,1/ide@3/dad@1,0:a,raw

NOTE: You may have to replace the "dad" with "disk" depending on the boot prom. Issue a "show-disks" at the ok prompt to verify the correct path to the disk. Use "devalias" at the ok prompt to also give clues as to which device path to use.

In case of primary boot disk failure, boot from the alternate disk

ok boot mirror

Initial Installation of Solstice DiskSuite

The following sections describe how to get ready for a local or remote installation of Solstice DiskSuite on a SPARC or x86 machine that has never had the software installed.

How to Prepare for Local Installation

This procedure assumes that Volume Management is running on the system. This procedure should be used for both SPARC and x86 architectures.

1. Insert the CD containing the software into the CD-ROM drive.

If necessary, insert the CD into a caddy first.

2. Change to the /cdrom/cdrom0/products/DiskSuite_4.2 directory.

local# cd /cdrom/cdrom0/products/DiskSuite_4.2/`uname -p`

3. uname with the -p option places you in the directory that contains the correct version of DiskSuite for your architecture (either sparc or i386). You are now ready to install Solstice DiskSuite 4.2.

How to Prepare for Remote Installation

1. On the remote machine, insert the CD containing the software into the CD-ROM drive.

If necessary, insert the CD into a caddy first.

2. Put a line similar to one of the following into the /etc/dfs/dfstab file.

share -F nfs -o ro -d "CD-ROM Directory" /cdrom/cdrom0/products

3. This line may be different, depending on how your system is networked.

4. Export the /cdrom/cdrom0/ directory with the shareall command.

remote# shareall 

5. On the local machine, log in as root.

6. Create the directory /cdrom/cdrom0/ (if it doesn't already exist).

local# mkdir -p /cdrom/cdrom0/

7. You may choose another directory besides /cdrom/cdrom0/.

8. Mount the CD-ROM as follows.

local# mount remote_machinename:/cdrom/cdrom0/ /cdrom/cdrom0/ 

9. Change to the /cdrom/cdrom0/products/DiskSuite_4.2 directory.

local# cd /cdrom/cdrom0/products/DiskSuite_4.2/`uname -p`

10. uname with the -p option places you in the directory that contains the correct version of DiskSuite for your architecture (either sparc or i386).

11. You are now ready to install Solstice DiskSuite 4.2.

Choosing Packages

This section describes the three Solstice DiskSuite 4.2 packages.

Table 1-2 Solstice DiskSuite 4.2 Packages

Package

Contains ...

Required or Optional

SUNWmd

The base DiskSuite product

Required

SUNWmdg

DiskSuite Tool graphical user interface

Optional, but recommended

SUNWmdn

DiskSuite SNMP log daemon

Optional

Adding Packages

This section describes three methods available for installing the DiskSuite packages. To install packages with the Software Manager graphical user interface, go to "How to Add Packages Using Software Manager". To install packages with the pkgaddcommand, go to "How to Add Packages Using the pkgadd Command".

How to Add Packages Using Software Manager

This procedure assumes that root is a member of the sysadmin group (GID 14).

1. As root, start Software Manager.

# swmtool &

2. In Solaris 2.5 and later versions, Admintool is invoked.

3. Select Add from the Edit menu.

The Admintool: Set Source Media window may appear. If so, specify the path to the installation media then click OK. The default path is a mounted CD.

4. Choose the packages you want to install.

Click the box next to each software component in the Software list. There are multiple packages per component.

When you choose to install software using Admintool, the packages are installed in the proper order, regardless of the selection order.

5. Click the Add button.

A Command Tool window appears for the installation process.

6. Respond with y to any prompts about continuing the installation.

7. Ignore the following message that appears after the installation has finished.

System warning: No such file or directory, extras menu file 
/usr/lib/.text_extras_menu (Textsw package)

How to Add Packages Using the pkgadd Command

1. As root, change to the directory on which the CD-ROM is mounted.

Use the directory that you specified when preparing for a local or remote installation. Change to the/cdrom/cdrom0/products/DiskSuite_4.2/`uname -p` directory to be placed automatically in the directory that contains the distribution for your system's architecture.

# cd /cdrom/cdrom0/products/DiskSuite_4.2/`uname -p`

2. Run pkgadd to install packages.

# pkgadd -d .
3.

4. Note -

5. If the pkgadd command is not in your current path, you must specify the full path to the command (/usr/sbin/pkgadd).

6.

7. Choose the packages you want to install.

pkgadd displays the available packages and prompts you to enter the number associated with a package.

8. Respond with y to any prompts about continuing with the installation.

pkgadd installs the DiskSuite files in the /usr/opt/SUNWmd directory, as well as in other system directories. The program loops until you press q to quit.

Example -- SPARC: Adding Packages from a Local CD Using pkgadd

The example shown on the following pages demonstrates installing DiskSuite on a SPARC system running Solaris 2.6.


Note -

Do not be concerned if the screens displayed when you install this product do not appear exactly as shown in the following example.


# pkgadd -d .
 
The following packages are available:
  1  SUNWmd      Solstice DiskSuite
                 (sparc) 4.2
  2  SUNWmdg     Solstice DiskSuite Tool
                 (sparc) 4.2
  3  SUNWmdn     Solstice DiskSuite Log Daemon
                 (sparc) 4.2
 
Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: all
 
Processing package instance  from
 
Solstice DiskSuite
(sparc) 4.2
        Copyright 1998 Sun Microsystems, Inc. All rights reserved.
 
. . . (miscellaneous copyright information) . . .
 
Using  as the package base directory.
## Processing package information.
## Processing system information.
   10 package pathnames are already properly installed.
## Verifying package dependencies.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
## Checking for setuid/setgid programs.
 
This package contains scripts which will be executed with super-user
permission during the process of installing this package.
 
Do you want to continue with the installation of  [y,n,?] y
 
Installing Solstice DiskSuite as 
## Executing preinstall script.
## Installing part 1 of 1.
/etc/init.d/SUNWmd.init
/etc/init.d/SUNWmd.sync
/etc/opt/SUNWmd/lock
/etc/opt/SUNWmd/md.ctlrmap
/etc/rc2.d/S95SUNWmd.sync /kernel/drv/md
/kernel/drv/sparcv9/md
/kernel/misc/md_hotspares
/kernel/misc/md_mirror
/kernel/misc/md_notify
/kernel/misc/md_raid
/kernel/misc/md_stripe
/kernel/misc/md_trans
/kernel/misc/sparcv9/md_hotspares
/kernel/misc/sparcv9/md_mirror
/kernel/misc/sparcv9/md_notify
/kernel/misc/sparcv9/md_raid
/kernel/misc/sparcv9/md_stripe
/kernel/misc/sparcv9/md_trans
/usr/lib/drv/config_md.so.1
/usr/lib/drv/preen_md.so.1
/usr/opt/SUNWmd/lib/libap_dmd.so.1
/usr/opt/SUNWmd/lib/libssd.so.1
/usr/opt/SUNWmd/locale/C/LC_MESSAGES/SUNW_MD.po
/usr/opt/SUNWmd/man/man1m/growfs.1m
/usr/opt/SUNWmd/man/man1m/metaclear.1m
/usr/opt/SUNWmd/man/man1m/metadb.1m
/usr/opt/SUNWmd/man/man1m/metadetach.1m
/usr/opt/SUNWmd/man/man1m/metahs.1m
/usr/opt/SUNWmd/man/man1m/metainit.1m
/usr/opt/SUNWmd/man/man1m/metaoffline.1m
/usr/opt/SUNWmd/man/man1m/metaonline.1m
/usr/opt/SUNWmd/man/man1m/metaparam.1m
/usr/opt/SUNWmd/man/man1m/metarename.1m
/usr/opt/SUNWmd/man/man1m/metareplace.1m
/usr/opt/SUNWmd/man/man1m/metaroot.1m
/usr/opt/SUNWmd/man/man1m/metaset.1m
/usr/opt/SUNWmd/man/man1m/metastat.1m
/usr/opt/SUNWmd/man/man1m/metasync.1m
/usr/opt/SUNWmd/man/man1m/metattach.1m
/usr/opt/SUNWmd/man/man1m/rpc.metad.1m
/usr/opt/SUNWmd/man/man1m/rpc.metamhd.1m
/usr/opt/SUNWmd/man/man4/md.cf.4
/usr/opt/SUNWmd/man/man4/md.tab.4
/usr/opt/SUNWmd/man/man4/mddb.cf.4
/usr/opt/SUNWmd/man/man7/md.7
/usr/opt/SUNWmd/sbin/growfs
/usr/opt/SUNWmd/sbin/metaclear
/usr/opt/SUNWmd/sbin/metadb
/usr/opt/SUNWmd/sbin/metadetach
/usr/opt/SUNWmd/sbin/metahs
/usr/opt/SUNWmd/sbin/metainit
/usr/opt/SUNWmd/sbin/metaoffline
/usr/opt/SUNWmd/sbin/metaonline
/usr/opt/SUNWmd/sbin/metaparam
/usr/opt/SUNWmd/sbin/metarename
/usr/opt/SUNWmd/sbin/metareplace
/usr/opt/SUNWmd/sbin/metaroot
/usr/opt/SUNWmd/sbin/metaset
/usr/opt/SUNWmd/sbin/metastat
/usr/opt/SUNWmd/sbin/metasync
/usr/opt/SUNWmd/sbin/metattach
/usr/opt/SUNWmd/sbin/rpc.metad
/usr/opt/SUNWmd/sbin/rpc.metamhd
[ verifying class  ]
cp/tmp/solstice_disksuite_beta/root_sparc/SUNWmd/reloc/etc/opt/SUNWmd/devpath
/etc/opt/SUNWmd/devpath
cp/tmp/solstice_disksuite_beta/root_sparc/SUNWmd/reloc/etc/opt/SUNWmd/md.cf
/etc/opt/SUNWmd/md.cf
cp /tmp/solstice_disksuite_beta/root_sparc/SUNWmd/reloc/etc/opt/SUNWmd/md.tab
/etc/opt/SUNWmd/md.tab
cp/tmp/solstice_disksuite_beta/root_sparc/SUNWmd/reloc/etc/opt/SUNWmd/mddb.cf
/etc/opt/SUNWmd/mddb.cf
cp/tmp/solstice_disksuite_beta/root_sparc/SUNWmd/reloc/kernel/drv/md.conf
/kernel/drv/md.conf
[ verifying class  ]
## Executing postinstall script.
 
Installation of  was successful.
 
Processing package instance  from
 
Solstice DiskSuite Tool
(sparc) 4.2
        Copyright 1998 Sun Microsystems, Inc. All rights reserved.
 
. . . (miscellaneous copyright information) . . .
 
Using  as the package base directory.
## Processing package information.
## Processing system information.
   13 package pathnames are already properly installed.
## Verifying package dependencies.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
## Checking for setuid/setgid programs.
 
This package contains scripts which will be executed with super-user
permission during the process of installing this package.
 
Do you want to continue with the installation of  [y,n,?] y
 
Installing Solstice DiskSuite Tool as 
## Executing preinstall script.
## Installing part 1 of 1.
/etc/opt/SUNWmd/SDStool.xpm
/usr/opt/SUNWmd/lib/X11/app-defaults/Metatool
/usr/opt/SUNWmd/lib/X11/bitmaps/battery_16.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/battery_32.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/browser_icon.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/browser_icon_mask.xbm
/usr/opt/SUNWmd/lib/X11/bitmaps/concat_16.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/concat_16_insens.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/concat_32.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/concat_32_insens.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/concat_drag.xbm
/usr/opt/SUNWmd/lib/X11/bitmaps/concat_drag_mask.xbm
/usr/opt/SUNWmd/lib/X11/bitmaps/controller_16.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/controller_32.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/diskview_icon.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/diskview_icon_mask.xbm
/usr/opt/SUNWmd/lib/X11/bitmaps/drop_none.xbm
/usr/opt/SUNWmd/lib/X11/bitmaps/drop_none_mask.xbm
/usr/opt/SUNWmd/lib/X11/bitmaps/drop_not_ok.xbm
/usr/opt/SUNWmd/lib/X11/bitmaps/drop_not_ok_mask.xbm
/usr/opt/SUNWmd/lib/X11/bitmaps/drop_ok.xbm
/usr/opt/SUNWmd/lib/X11/bitmaps/drop_ok_mask.xbm
/usr/opt/SUNWmd/lib/X11/bitmaps/drop_site_selection.xbm
/usr/opt/SUNWmd/lib/X11/bitmaps/editor_icon.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/editor_icon_mask.xbm
/usr/opt/SUNWmd/lib/X11/bitmaps/fan_16.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/fan_32.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/fibre_16.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/fibre_32.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/help_icon.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/help_icon_mask.xbm
/usr/opt/SUNWmd/lib/X11/bitmaps/hsp_16.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/hsp_16_insens.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/hsp_32.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/hsp_32_insens.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/hsp_drag.xbm
/usr/opt/SUNWmd/lib/X11/bitmaps/hsp_drag_mask.xbm
/usr/opt/SUNWmd/lib/X11/bitmaps/lock_16.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/lock_32.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/log_icon.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/log_icon_mask.xbm
/usr/opt/SUNWmd/lib/X11/bitmaps/metadb_16.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/metadb_16_insens.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/metadb_32.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/metadb_32_insens.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/metadb_drag.xbm
/usr/opt/SUNWmd/lib/X11/bitmaps/metadb_drag_mask.xbm
/usr/opt/SUNWmd/lib/X11/bitmaps/mirror_16.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/mirror_16_insens.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/mirror_32.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/mirror_32_insens.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/mirror_drag.xbm
/usr/opt/SUNWmd/lib/X11/bitmaps/mirror_drag_mask.xbm
/usr/opt/SUNWmd/lib/X11/bitmaps/multi_drag.xbm
/usr/opt/SUNWmd/lib/X11/bitmaps/multi_drag_mask.xbm
/usr/opt/SUNWmd/lib/X11/bitmaps/perfview_icon.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/perfview_icon_mask.xbm
/usr/opt/SUNWmd/lib/X11/bitmaps/raid_16.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/raid_16_insens.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/raid_32.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/raid_32_insens.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/raid_drag.xbm
/usr/opt/SUNWmd/lib/X11/bitmaps/raid_drag_mask.xbm
/usr/opt/SUNWmd/lib/X11/bitmaps/slice_16.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/slice_16_insens.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/slice_drag.xbm
/usr/opt/SUNWmd/lib/X11/bitmaps/slice_drag_mask.xbm
/usr/opt/SUNWmd/lib/X11/bitmaps/spundown_16.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/spundown_32.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/trans_16.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/trans_16_insens.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/trans_32.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/trans_32_insens.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/trans_drag.xbm
/usr/opt/SUNWmd/lib/X11/bitmaps/trans_drag_mask.xbm
/usr/opt/SUNWmd/lib/X11/bitmaps/wrench_16.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/wrench_32.xpm
/usr/opt/SUNWmd/lib/X11/bitmaps/wrench_8.xpm
/usr/opt/SUNWmd/lib/X11/uid/Metatool/Editor.uid
/usr/opt/SUNWmd/lib/X11/uid/Metatool/EditorTmpl.uid
/usr/opt/SUNWmd/lib/X11/uid/Metatool/PerfMonWindow.uid
/usr/opt/SUNWmd/lib/X11/uid/Metatool/concat.uid
/usr/opt/SUNWmd/lib/X11/uid/Metatool/hsp.uid
/usr/opt/SUNWmd/lib/X11/uid/Metatool/logs.uid
/usr/opt/SUNWmd/lib/X11/uid/Metatool/md.uid
/usr/opt/SUNWmd/lib/X11/uid/Metatool/mirror.uid
/usr/opt/SUNWmd/lib/X11/uid/Metatool/physicalview.uid
/usr/opt/SUNWmd/lib/X11/uid/Metatool/popups.uid
/usr/opt/SUNWmd/lib/X11/uid/Metatool/raid.uid
/usr/opt/SUNWmd/lib/X11/uid/Metatool/slice.uid
/usr/opt/SUNWmd/lib/X11/uid/Metatool/slicer.uid
/usr/opt/SUNWmd/lib/X11/uid/Metatool/stripe.uid
/usr/opt/SUNWmd/lib/metatool-toolsmenu
/usr/opt/SUNWmd/locale/C/help/metatool/howto/Howto
/usr/opt/SUNWmd/locale/C/help/metatool/howto/help.h.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/Reference
/usr/opt/SUNWmd/locale/C/help/metatool/reference/catinfo.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/cflog.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/controllerinfo.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/devicestats.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/diskinfo.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/diskview.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/diskview.slicefilters.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/find.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/hspbrowser.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/hspfilters.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/hspinfo.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/logtofile.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/mappingselect.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/mdbrowser.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/mded.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/mdfilters.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/metadbinfo.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/mirrorinfo.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/phytolog.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/problist.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/raidinfo.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/restore.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/save.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/slicebrowser.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/slicefilters.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/sliceinfo.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/statgraphs.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/stripeinfo.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/transinfo.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/reference/trayinfo.r.hlp
/usr/opt/SUNWmd/locale/C/help/metatool/topics/Topics
/usr/opt/SUNWmd/locale/C/help/metatool/topics/glossary.t.hlp
/usr/opt/SUNWmd/man/man1m/metatool.1m
/usr/opt/SUNWmd/man/man4/metatool-toolsmenu.4
/usr/opt/SUNWmd/sbin/metatool
[ verifying class  ]
## Executing postinstall script.
 
Installation of  was successful.
 
Processing package instance  from
 
Solstice DiskSuite Log Daemon
(sparc) 4.2
        Copyright 1998 Sun Microsystems, Inc. All rights reserved.
 
. . . (miscellaneous copyright information) . . .
 
Using  as the package base directory.
## Processing package information.
## Processing system information.
   11 package pathnames are already properly installed.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
## Checking for setuid/setgid programs.
 
This package contains scripts which will be executed with super-user
permission during the process of installing this package.
 
Do you want to continue with the installation of  [y,n,?] y
 
Installing Solstice DiskSuite Log Daemon as 
## Installing part 1 of 1.
/etc/init.d/init.mdlogd
/etc/rc3.d/S25mdlogd  ]
cp /tmp/solstice_disksuite_beta/root_sparc/SUNWmdn/reloc/etc/opt/SUNWmd/\
     mdlogd.cf /etc/opt/SUNWmd/mdlogd.cf
[ verifying class  ]
 
Installation of  was successful.
 
The following packages are available:
  1  SUNWmd      Solstice DiskSuite
                 (sparc) 4.2
  2  SUNWmdg     Solstice DiskSuite Tool
                 (sparc) 4.2
  3  SUNWmdn     Solstice DiskSuite Log Daemon
                 (sparc) 4.2
 
Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: q
#

Viewing Installed Packages

You can confirm that the DiskSuite software has been installed by using the pkginfo command:

# pkginfo
system      SUNWaccr                                                                                                        System Accounting, (Root)
system      SUNWaccu                                                                                                        System Accounting, (Usr)
system      SUNWadmap                                                                                     System administration applications
 
. . . (other package information)
 
system      SUNWmd         Solstice DiskSuite
system      SUNWmdg        Solstice DiskSuite Tool
system      SUNWmdn        Solstice DiskSuite Log Daemon
 
. . . (other package information)

The -l option gives detailed information about packages:

# pkginfo -l SUNWmd
   PKGINST:  SUNWmd
      NAME:  Solstice DiskSuite
  CATEGORY:  system
      ARCH:  sparc
   VERSION:  4.2,REV=1998.05.08.11.05.59
   BASEDIR:  /
    VENDOR:  Sun Microsystems, Inc.
      DESC:  Solstice DiskSuite
    PSTAMP:  08/05/98-13:14:37
  INSTDATE:  Aug 05 1998 14:03
    VSTOCK:  258-6252-11
   HOTLINE:  Please contact your local service provider
    STATUS:  completely installed
     FILES:     95 installed pathnames
                22 shared pathnames
                25 directories
                37 executables
             22424 blocks used (approx)
  # 

Setting the Path Variables

After installing the software, you must set the environment variables PATH and MANPATH.

The general requirements are as follows:

· Modify your PATH variable to include /usr/opt/SUNWmd/sbin.

If you do not set this path, you may get other versions of the software.

· Modify your MANPATH to include /usr/opt/SUNWmd/man.

If you do not set this path, you could get man pages for the wrong release, or no man pages at all.

You can set these paths by using an editor to change your $HOME/.profile or ~/.cshrc file, as follows.

If you installed DiskSuite in the default directory, and:

· If you're using the Bourne shell, your $HOME/.profile file should have lines like this:

PATH=/usr/opt/SUNWmd/sbin:$PATH
MANPATH=/usr/opt/SUNWmd/man:$MANPATH
export PATH MANPATH

· If you're using the C shell (csh.1), the ~/.cshrc file should have lines that look something like this:

set path = (/usr/opt/SUNWmd/sbin $path) 
setenv MANPATH /usr/opt/SUNWmd/man:$MANPATH

Removing Packages

If you want to remove a DiskSuite package, you can remove the installed files using the pkgrm command. For example, to remove the SUNWmd package, type the following (as root):

# pkgrm SUNWmd

Note -

Do not remove DiskSuite files using the rm command. Using pkgrm is the only valid way to remove these files.


How to Find the System Boot Slice When Upgrading the Solaris Operating System

On machines with mirrored root file systems, the Solaris installation software will display all slices used in the root mirror as available for upgrade. The slice names may also contain different controller numbers than those used for the same slices in the system's vfstab and in the DiskSuite configuration database. BugIDs 4046177, 4043749, 4017614, and 4041649 describe this problem.

If all the upgradable slices are on the same controller, you can ignore controller number changes and choose the slice with the same target and disk number as the root slice in the system vfstab. You can display the system vfstab during the upgrade, and before choosing which slice to upgrade, by performing the following steps:

1. When the Solaris installation software displays the list of upgradable slices, either start up a subshell in the windowing system or write down the names of the slices and exit the installation program.

2. In a command shell, mount either of the slices displayed by the install software on /a:

# mount /dev/dsk/slice_name /a

3. Display the system's vfstab:

# more /a/etc/vfstab

4. Restart or resume the Solaris installation program and upgrade the slice with the same target and disk numbers as the one mounted on the root filesystem in /a/etc/vfstab.

If the slices are on different controllers, follow the procedure below to find out which slice is the boot slice.

1. When the Solaris installation software displays the list of upgradable slices, either start up a subshell in the windowing system or write down the names of the slices and exit the installation program.

2. In a command shell, mount either of the slices displayed by the install software on /a:

# mount /dev/dsk/slice_name /a

3. Display the system's vfstab:

# more /a/etc/vfstab

4. Find the root slice in the vfstab, and display its /device path:

# ls -l /a/dev/dsk/root_slice_name

5. Find the device path for each of the miniroot's slice names, using the following command:

# ls -l /dev/dsk/slice_name

6. Restart or resume the installation program and upgrade the slice that has the same /device pathname as that of the system root slice, or the pathname most similar to it. There are minor differences between the path names displayed in Solaris 7 and Solaris 2.5, 2.5.1, and 2.6, and cmdk(7D) has been replaced by sd(7D) at the ends of the pathnames of SCSI devices in Solaris 7. However, you should have little difficulty choosing the pathname most similar to that of the boot device.

If you can't figure out which slice to upgrade, contact Sun Enterprise Services.

If you choose incorrectly and upgrade the wrong slice, the system will reboot under the old version of Solaris. If that happens, rerun the upgrade on the other slice.