Menu

SMART and UUID issues with ZFS pools

Help
2020-05-03
2021-08-31
  • Allyn Malventano

    Using SnapRAID laid on top of four single-disk ZFS pools. (ZFS chosen for snapshot capability).
    ZFS volumes z1, z2, z3, and z4 are mounted under /z
    The pool directory on each volume is z
    z1, z2, z3 are data, z4 is parity
    smartctl is configured to point to the associated storage devices
    this is a multipath configuration, so the smartctl entries point to one of the paths to that disk

    Config:

    content /z/z1/snapraid1.content
    content /z/z2/snapraid2.content
    content /z/z3/snapraid3.content
    content /z/z4/snapraidp.content
    data d1 /z/z1/z/
    data d2 /z/z2/z/
    data d3 /z/z3/z/
    parity /z/z4/snapraid.parity
    smartctl d1 -d sat /dev/sdc
    smartctl d2 -d sat /dev/sdd
    smartctl d3 -d sat /dev/sde
    smartctl parity -d sat /dev/sdf
    

    Even with smartctl devices manually configured, smart operations fail:

    # snapraid smart
    Failed to dereference device '0:62'.
    Smart is unsupported in this platform.
    

    Log file for the above:

    version:11.3
    unixtime:1588478334
    time:2020-05-02 23:58:54
    command:smart
    argv:0:snapraid
    argv:1:-l
    argv:2:test2.log
    argv:3:smart
    conf:file:/etc/snapraid.conf
    resolve:proc:0:62: match skipped for not /dev/ mountsource for zfs z1
    resolve:proc:0:62: not found
    resolve:proc:0:63: match skipped for not /dev/ mountsource for zfs z2
    resolve:proc:0:63: not found
    resolve:proc:0:64: match skipped for not /dev/ mountsource for zfs z3
    resolve:proc:0:64: not found
    blocksize:262144
    data:d1:/z/z1/z/
    data:d2:/z/z2/z/
    data:d3:/z/z3/z/
    mode:par1
    parity:0:/z/z4/snapraid.parity
    autosave:500000000000
    filter:exclude *.unrecoverable
    resolve:proc:0:62: match skipped for not /dev/ mountsource for zfs z1
    resolve:proc:0:62: not found
    msg:fatal: Failed to dereference device '0:62'.
    msg:fatal: Smart is unsupported in this platform.
    

    Unsure what the issue is as I can successfully run the folllowing command on this system:
    smartctl -a -d sat /dev/sdc

    Note: this issue may be similar to this prior one.


    For this same configuration, SnapRAID throws the following error on syncs and other operations:

    WARNING! UUID is unsupported for disks: 'd1', 'd2', 'd3'. Not using inodes to detect move operations.
    

    blkid reports the following for these drives (E1T0?? is the multipath device alias):

    /dev/mapper/E1T04b: LABEL="z1" UUID="3299743840490668696" UUID_SUB="2292286621943018952" TYPE="zfs_member"
    /dev/mapper/E1T04a: LABEL="z2" UUID="17788732678532206416" UUID_SUB="2708041868302450296" TYPE="zfs_member"
    /dev/mapper/E1T08b: LABEL="z4" UUID="10219630101840152184" UUID_SUB="14870748647374335343" TYPE="zfs_member"
    /dev/mapper/E1T08a: LABEL="z3" UUID="6880627773759424914" UUID_SUB="17052736952299055004" TYPE="zfs_member"
    

    ...so these ZFS volumes do appear to have UUIDs, but SnapRAID is not discovering them.
    Is there a way so correct the cause of this warning or disable the warning if nothing can be done to correct it?

     

    Last edit: Allyn Malventano 2020-05-03
  • Walter Tuppa

    Walter Tuppa - 2020-05-03

    please check the FAQ. There is no UUID support for ZFS.

     
    • Allyn Malventano

      I am aware of the UUID note in the FAQ, however UUID's appear to be easily obtained for ZFS volumes, so my recommendation would be to either add the ZFS volume UUID capability or to enable the ability to bypass the warning (via config) for those using volumes without UUID support.

      Separately, I suspected that the inability to obrain SMART data might be connected to this UUID issue, which is why both issues were brought up together. I can have the /dev/mapper/ paths in the smartctl config entries and it still fails (but correctly works when calling smartctl directly). Those same mapper paths could easily be cross referenced to the associated disks via blkid as noted in my original post.

       
      • Jan Bramkamp

        Jan Bramkamp - 2021-08-31

        ZFS datasets and pools have 64 bit GUIDs which can be queried via libzfs or by popen() zfs/zpool get guid $name. The GUIDs are true UUIDs, but concatenating the pool and filesystem GUID isn't hard. A clean solution would be define a well known ZFS user property to hold the dataset UUID e.g. it.snapraid:uuid=$(uuidgen).

        Does anyone know how important UUID support is for correctness and performance?

         

Log in to post a comment.

MongoDB Logo MongoDB