Search code examples
solarisiostat

Map sd?/sdd? names to Solaris disk names?


Some commands in Solaris (such as iostat) report disk related information using disk names such as sd0 or sdd2. Is there a consistent way to map these names back to the standard /dev/dsk/c?t?d?s? disk names in Solaris?

Edit: As Amit points out, iostat -n produces device names such as eg c0t0d0s0 instead of sd0. But how do I found out that sd0 actually is c0t0d0s0? I'm looking for something that produces a list like this:

sd0=/dev/dsk/c0t0d0s0
...
sdd2=/dev/dsk/c1t0d0s4
...
Maybe I could run iostat twice (with and without -n) and then join up the results and hope that the number of lines and device sorting produced by iostat is identical between the two runs?


Solution

  • Following Amit's idea to answer my own question, this is what I have come up with:

    iostat -x|tail -n +3|awk '{print $1}'>/tmp/f0.txt.$$
    iostat -nx|tail -n +3|awk '{print "/dev/dsk/"$11}'>/tmp/f1.txt.$$
    paste -d= /tmp/f[01].txt.$$
    rm /tmp/f[01].txt.$$
    

    Running this on a Solaris 10 server gives the following output:

    sd0=/dev/dsk/c0t0d0
    sd1=/dev/dsk/c0t1d0
    sd4=/dev/dsk/c0t4d0
    sd6=/dev/dsk/c0t6d0
    sd15=/dev/dsk/c1t0d0
    sd16=/dev/dsk/c1t1d0
    sd21=/dev/dsk/c1t6d0
    ssd0=/dev/dsk/c2t1d0
    ssd1=/dev/dsk/c3t5d0
    ssd3=/dev/dsk/c3t6d0
    ssd4=/dev/dsk/c3t22d0
    ssd5=/dev/dsk/c3t20d0
    ssd7=/dev/dsk/c3t21d0
    ssd8=/dev/dsk/c3t2d0
    ssd18=/dev/dsk/c3t3d0
    ssd19=/dev/dsk/c3t4d0
    ssd28=/dev/dsk/c3t0d0
    ssd29=/dev/dsk/c3t18d0
    ssd30=/dev/dsk/c3t17d0
    ssd32=/dev/dsk/c3t16d0
    ssd33=/dev/dsk/c3t19d0
    ssd34=/dev/dsk/c3t1d0
    

    The solution is not very elegant (it's not a one-liner), but it seems to work.