Over the years that I've worked on Solaris, I've come to know and
love libnvpair
. We use it all over the place, from the kernel and up
to bits of userspace. If I was reimplementing fwflash
today, I'd use
libnvpair
rather than <sys/queue.h>
.
One of the things that you might not be aware of is that we ship python bindings for this library, and while they're not perfect, they are very, very useful. Let's have a look at how you can delve into one particular feature of your Solaris system: the zpool cache.
Before we start, you need to know that /etc/zfs/zpool.cache
is NOT
AN INTERFACE, if you edit that file you could muck up your zpool
configurations, and this post is just an example of how we can extract
nvlist data.
With that warning proclaimed, let's have a look at this file.
On our Solaris media server I have a large pool called
soundandvision
to store our photos along with music and movies that
I've ripped from CDs, DVDs and Blu-Rays over the years. Here's what
zpool status
tells me about this right now:
$ zpool status soundandvision pool: soundandvision state: DEGRADED status: One or more devices has been removed by the administrator. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Online the device using 'zpool online' or replace the device with 'zpool replace'. scan: resilvered 1.60T in 6h36m with 0 errors on Thu Jul 6 22:07:18 2017 config: NAME STATE READ WRITE CKSUM soundandvision DEGRADED 0 0 0 mirror-0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 c0t5000039FF3F0D8D9d0 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 c0t5000CCA248E72F12d0 ONLINE 0 0 0 c0t5000CCA248E728B6d0 ONLINE 0 0 0 mirror-2 DEGRADED 0 0 0 c0t5000039FF3F0D2F0d0 ONLINE 0 0 0 spare-1 DEGRADED 0 0 0 c0t5000039FE2DF1C15d0 REMOVED 0 0 0 c0t5000C50067485F33d0 ONLINE 0 0 0 spares c0t5000C50067485F33d0 INUSE errors: No known data errors
Yes, I do need to pop along to my local PC bits shop and replace that removed disk. What can we find out about that disk, though?
Wow, I really left this post incomplete, didn't I!