Changing the WWN on a SPARCstorage Array

There are times when it is advantageous to change the World-Wide Number (WWN) for a particular SPARCstorage Array (SSA), such as after replacing the array controller.

Until the release of Solaris 2.4 HW 3/95 this entailed a delicate sequence of steps to modify the device tree enough to recognize the new array controller, download the old address and then restore the original devices and links to the array disks.

Now that the SSA drivers are bundled in the O/S (Sol2.4 3/95 and higher), this operation can be completed much more easily using the cdrom shell. The only difficulties are obtaining the old WWN and the fact that the cdrom shell does not include the ssaadm(1M) or ssacli(1M) utilities. Not to worry, we can do this.

UPDATE: As of Solaris 2.5 HW 1/96 and Solaris 2.5.1, the ssaadm command is available in the cdrom shell in /usr/sbin. If booted from these releases of the O/S, you no longer need to mount /usr or /opt to gain access to these tools. You will still need to mount / if you do not know the old WWN for the SSA.

The Procedure

  1. Boot from the cdrom and mount O/S
    ok> boot cdrom -sw                  ; boot the single-user cdrom shell
    # mount -o ro /dev/dsk/c0t0d0s0 /a  ; provides RO access to root
    1. In the case of a single large / (no separate /usr, /opt, etc) this is all you need to mount. Otherwise, also mount 'usr' and 'opt' on /a/usr and /a/opt. Use the /a/etc/vfstab for reference.
    2. Use of the "-o ro" mount will prevent superblock consistency problems in the case of mirrored system disks.>
  2. Obtain the old WWN value. List one (any one) of the disks in the storage array. For example:
    # cd /a/dev/rdsk
    # ls -l c2t1d3s0
    In this example, the "c2" is the OLD controller. You will get an output that looks like the following:
    lrwxrwxrwx   1 root     root          94 Mar 19 10:28 c2t1d3s0 -> ../../devices/iommu@0,10000000/sbus@0,10001000/SUNW,soc@2,0/
                         ^^^^ ^^^^^^
    	             xxxx yyyyyy
    The WWN is 12 digits long, and is in the form xxxx00yyyyyy. The 4 characters immediately before the comma are the first 4 characters of the WWN. The 6 numbers after the comma are the last 6 digits of the WWN. Place two zeros between these values. For the above example, the WWN would be
  3. 80000078cf18.
  4. Locate the new array controller.
    # ls -l /dev/dsk/c*t0d0s2 | grep NWWN
    where NWWN is the four digits appearing in the SSA display a match will come from controller N
  5. Download the old address to the new controller.
    # /a/opt/SUNWssa/bin/ssacli -s -w 80000078cf18 download cN
    # /a/usr/sbin/ssaadm download -w 80000078cf18 cN
    UPDATE: If booting from Solaris 2.5 HW 1/96 or higher
    # /usr/sbin/ssaadm download -w 80000078cf18 cN
  6. Reset the system.
    # umount <anything mounted under /a>
    # halt
    The old school of thought was that pushing Reset on the back of the SSA would be sufficient at this point. However, experience has proven that the best way to assure that the change has registered is to power cycle the array. Therefore, please power cycle the array at this point.
    ok> boot
    This should NOT require a reconfiguration, and should have you right back where you started before the SSA controller was replaced.