zfs raidz overhead

Eugene M. Zheganin emz at norma.perm.ru
Tue Feb 21 08:45:44 UTC 2017


 

Hi. 

There's an interesting case described here:
http://serverfault.com/questions/512018/strange-zfs-disk-space-usage-report-for-a-zvol
[1] 

It's a user story who encountered that under some situations zfs on
raidz could use up to 200% of the space for a zvol. 

I have also seen this. For instance: 

[root at san1:~]# zfs get volsize gamestop/reference1
 NAME PROPERTY VALUE SOURCE
 gamestop/reference1 volsize 2,50T local
 [root at san1:~]# zfs get all gamestop/reference1 
 NAME PROPERTY VALUE SOURCE
 gamestop/reference1 type volume -
 gamestop/reference1 creation чт нояб. 24 9:09 2016 -
 gamestop/reference1 used 4,38T -
 gamestop/reference1 available 1,33T -
 gamestop/reference1 referenced 4,01T -
 gamestop/reference1 compressratio 1.00x -
 gamestop/reference1 reservation none default
 gamestop/reference1 volsize 2,50T local
 gamestop/reference1 volblocksize 8K -
 gamestop/reference1 checksum on default
 gamestop/reference1 compression off default
 gamestop/reference1 readonly off default
 gamestop/reference1 copies 1 default
 gamestop/reference1 refreservation none received
 gamestop/reference1 primarycache all default
 gamestop/reference1 secondarycache all default
 gamestop/reference1 usedbysnapshots 378G -
 gamestop/reference1 usedbydataset 4,01T -
 gamestop/reference1 usedbychildren 0 -
 gamestop/reference1 usedbyrefreservation 0 -
 gamestop/reference1 logbias latency default
 gamestop/reference1 dedup off default
 gamestop/reference1 mlslabel -
 gamestop/reference1 sync standard default
 gamestop/reference1 refcompressratio 1.00x -
 gamestop/reference1 written 4,89G -
 gamestop/reference1 logicalused 2,72T -
 gamestop/reference1 logicalreferenced 2,49T -
 gamestop/reference1 volmode default default
 gamestop/reference1 snapshot_limit none default
 gamestop/reference1 snapshot_count none default
 gamestop/reference1 redundant_metadata all default 

[root at san1:~]# zpool status gamestop
 pool: gamestop
 state: ONLINE
 scan: none requested
 config:

 NAME STATE READ WRITE CKSUM
 gamestop ONLINE 0 0 0
 raidz1-0 ONLINE 0 0 0
 da6 ONLINE 0 0 0
 da7 ONLINE 0 0 0
 da8 ONLINE 0 0 0
 da9 ONLINE 0 0 0
 da11 ONLINE 0 0 0

 errors: No known data errors 

or, another server (overhead in this case isn't that big, but still
considerable): 

[root at san01:~]# zfs get all data/reference1
 NAME PROPERTY VALUE SOURCE
 data/reference1 type volume -
 data/reference1 creation Fri Jan 6 11:23 2017 -
 data/reference1 used 3.82T -
 data/reference1 available 13.0T -
 data/reference1 referenced 3.22T -
 data/reference1 compressratio 1.00x -
 data/reference1 reservation none default
 data/reference1 volsize 2T local
 data/reference1 volblocksize 8K -
 data/reference1 checksum on default
 data/reference1 compression off default
 data/reference1 readonly off default
 data/reference1 copies 1 default
 data/reference1 refreservation none received
 data/reference1 primarycache all default
 data/reference1 secondarycache all default
 data/reference1 usedbysnapshots 612G -
 data/reference1 usedbydataset 3.22T -
 data/reference1 usedbychildren 0 -
 data/reference1 usedbyrefreservation 0 -
 data/reference1 logbias latency default
 data/reference1 dedup off default
 data/reference1 mlslabel -
 data/reference1 sync standard default
 data/reference1 refcompressratio 1.00x -
 data/reference1 written 498K -
 data/reference1 logicalused 2.37T -
 data/reference1 logicalreferenced 2.00T -
 data/reference1 volmode default default
 data/reference1 snapshot_limit none default
 data/reference1 snapshot_count none default
 data/reference1 redundant_metadata all default
 [root at san01:~]# zpool status gamestop
 pool: data
 state: ONLINE
 scan: none requested
 config:

 NAME STATE READ WRITE CKSUM
 data ONLINE 0 0 0
 raidz1-0 ONLINE 0 0 0
 da3 ONLINE 0 0 0
 da4 ONLINE 0 0 0
 da5 ONLINE 0 0 0
 da6 ONLINE 0 0 0
 da7 ONLINE 0 0 0
 raidz1-1 ONLINE 0 0 0
 da8 ONLINE 0 0 0
 da9 ONLINE 0 0 0
 da10 ONLINE 0 0 0
 da11 ONLINE 0 0 0
 da12 ONLINE 0 0 0
 raidz1-2 ONLINE 0 0 0
 da13 ONLINE 0 0 0
 da14 ONLINE 0 0 0
 da15 ONLINE 0 0 0
 da16 ONLINE 0 0 0
 da17 ONLINE 0 0 0

 errors: No known data errors 

So my question is - how to avoid it ? Right now I'm experimenting with
the volblocksize, making it around 64k. I'm also suspecting that such
overhead may be the subsequence of the various resizing operations, like
extening the volsize of the volume or adding new disks into the pool,
because I have a couple of servers with raidz where the initial
disk/volsize configuration didn't change, and the referenced/volsize
numbers are pretty much close to each other. 

Eugene. 

Links:
------
[1]
http://serverfault.com/questions/512018/strange-zfs-disk-space-usage-report-for-a-zvol


More information about the freebsd-fs mailing list