ZFS and glabel

Ivailo A. Tanusheff ITanusheff at postbank.bg
Mon Nov 17 12:57:28 UTC 2014

Dear all,

I run to an interesting issue and I would like to discuss it with all of you.
The whole thing began with me trying to identify available HDD to include in a zfs pool through a script/program. 
I assumed that the easiest way of doing this is using glabel. For example:

root at FreeBSD:~ # glabel status
                                      Name  Status  Components
gptid/248e758c-e267-11e3-95bb-08002796202b     N/A  ada0p1
           diskid/DISK-VBdd471206-91164057     N/A  ada5
           diskid/DISK-VBe98b5e75-0d8cf6dc     N/A  ada8
           diskid/DISK-VB7d006584-01beca12     N/A  ada6
           diskid/DISK-VB721029c3-66a60156     N/A  ada7
           diskid/DISK-VB31481dbb-639540a1     N/A  ada2
           diskid/DISK-VB95921208-4eb19f41     N/A  ada4

So far it is OK and if I create pool like zpool create xxx ada4 then the line for ada4 will disappear from the glabel status.
As far as I remember though it is not recommended to use production pools based on the device naming, so I wanted to switch to gpt lable, i.e.  diskid/DISK-VB95921208-4eb19f41.
When I recreate pool like:
zpool create xxx           diskid/DISK-VB95921208-4eb19f41    the pool is created without problems, but the device does not disappear from the glabel status list, thus making my program running wrong.
Is this a problem with the zfs implementation, my server or the general idea is wrong?

BTW, if I label the disk additionally, like: 
glabel create VB95921208-4eb19f41 ada4
zpool create xxx label/VB95921208-4eb19f41

The glabel status again shows the right information. The problem with the latest approach is that if someone executes:
glabel destroy -f VB95921208-4eb19f41

The result becomes:
pool: xxx
 state: UNAVAIL
status: One or more devices are faulted in response to IO failures.
action: Make sure the affected devices are connected, then run 'zpool clear'.
   see: http://illumos.org/msg/ZFS-8000-HC
  scan: none requested

        NAME                   STATE     READ WRITE CKSUM
        xxx                    UNAVAIL      0     0     0
          6968348230421469155  REMOVED      0     0     0  was /dev/label/VB95921208-4eb19f41

And the data is practically unrecoverable.

So my questions are:
- Is there a way to make glabel to show the right data when I use diskid/DISK-VB95921208-4eb19f41     
- Which is the most proper way of creating vdevs - with disk name (ada4), diskid (diskid/DISK-VB95921208-4eb19f41) or manual labeling? 
- How may I found which disks are free, if the diskid approach is the best solution?


Ivailo Tanusheff


This communication is confidential. If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution or taking any action in reliance on the contents of this information is strictly prohibited and may be unlawful. If you have received this communication by mistake, please notify us immediately by responding to this email and then delete it from your system.
Eurobank Bulgaria AD is not responsible for, nor endorses, any opinion, recommendation, conclusion, solicitation, offer or agreement or any information contained in this communication.
Eurobank Bulgaria AD cannot accept any responsibility for the accuracy or completeness of this message as it has been transmitted over a public network. If you suspect that the message may have been intercepted or amended, please call the sender.

More information about the freebsd-fs mailing list