metaview - pretty print Solstice DiskSuite metadevice status

In my line of work as a Data Storage engineer I use Solstice DiskSuite (aka ODS, SDS, SVM) pretty much every day of the week (and weekends when needed). One of it's many utilities is the metastat command which simply prints the status of it's metadevices.

Sample metastat output:

# metastat

d0: Mirror
    Submirror 0: d20
      State: Okay       Thu 07 Jun 2001 06:03:48 PM BST
    Submirror 1: d10
      State: Needs maintenance Sun 16 Dec 2001 11:35:50 PM BST
[...]
d20: Submirror of d0
    State: Okay         Thu 07 Jun 2001 06:03:48 PM BST
    Size: 10241505 blocks
    Stripe 0:
      Device     Start  Dbase  State        Hot Spare  Time
      c1t1d0s0       0  No     Okay                    Thu 07 Jun 2001 06:03:31 PM BST
[...]

Whilst metastat provides nice output, I wanted something that would give me a quick overview of all metadevices and associated mirrors, so I created the metaview script to do exactually that.

For example:

# metaview
                ======PRIMARY MIRROR====== ======SECONDARY MIRROR====
MetaDev  Size   MetaDev State Device       MetaDev State Device
d10       16 GB d11     OK    c0t0d0s0     d12     OK    c1t1d0s0
d20       32 GB d21     OK    c0t0d0s1     d22     OK    c1t1d0s1
d30       16 GB d31     OK    c0t0d0s3     d32     OK    c1t1d0s3
d40       16 GB d41     OK    c0t0d0s4     d42     OK    c1t1d0s4
d50       16 GB d51     OK    c0t0d0s5     d52     OK    c1t1d0s5
d60       40 GB d61     OK    c0t0d0s6     d62     OK    c1t1d0s6
d70       99 GB d73     OK    emcpower25a  d71     OK    emcpower28a

Below are some addditional outputs with metadevices in various states:

Sample output - metadevice in LAST ERRED state

                ======PRIMARY MIRROR====== ======SECONDARY MIRROR====
MetaDev  Size   MetaDev State Device       MetaDev State Device
d10       12 GB d11     OK    c0t0d0s0     d12     OK    c1t1d0s0
d101      67 GB d102    ERRED c0t2d0s0
d20       12 GB d21     OK    c0t0d0s1     d22     OK    c1t1d0s1
d30       12 GB d31     OK    c0t0d0s3     d32     OK    c1t1d0s3
d40       12 GB d41     OK    c0t0d0s4     d42     OK    c1t1d0s4
d50       12 GB d51     OK    c0t0d0s5     d52     OK    c1t1d0s5
d60      7.8 GB d61     OK    c0t0d0s6     d62     OK    c1t1d0s6

Sample output - metadevice RESYNCING

                ======PRIMARY MIRROR====== ======SECONDARY MIRROR====
MetaDev  Size   MetaDev State Device       MetaDev State Device
d10       15 GB d11     OK    c1t0d0s0     d12     OK    c0t1d0s0
d140      15 GB d141    OK    c1t0d0s4     d142    OK    c0t1d0s4
d150      15 GB d151    OK    c1t0d0s5     d152    OK    c0t1d0s5
d20       31 GB d22     OK    c1t1d0s1     d21     OK    c0t0d0s1
d30       15 GB d31     OK    c1t0d0s3     d32     SYNC  c0t1d0s3
d40      3.0 GB d42     OK    c1t1d0s6     d41     SYNC  c0t0d0s6
d50       40 GB d100    OK    c1t2d0s4     d101    OK    c0t3d0s4

Sample output - devices in SYNC, FAULT LAST ERRED state

                ======PRIMARY MIRROR====== ======SECONDARY MIRROR====
MetaDev  Size   MetaDev State Device       MetaDev State Device
d10       12 GB d11     OK    c1t0d0s0     d12     OK    c2t1d0s0
d20       19 GB d23     OK    c1t0d0s1     d22     SYNC  c2t1d0s1
d30       12 GB d31     OK    c1t0d0s3     d32     SYNC  c2t1d0s3
d40       12 GB d41     FAULT c1t0d0s4
d50       12 GB d51     OK    c1t0d0s5
d60       67 GB d61     OK    c1t2d0s6     d62     OK    c2t3d0s6
d70      499 GB d71     ERRED emcpower0a
d80       49 GB d81     OK    emcpower3a
d90       99 GB d91     FAULT emcpower2a
Todo
  • Modify the script to show % percentage done on SYNC entries.
Download

The script is freely available for download here.