ZFS confusion

Kaya Saman kayasaman at gmail.com
Mon Jan 27 09:59:31 UTC 2014

Many thanks Trond for the response....

I was getting worried for a sec there :-)

On 01/27/2014 09:08 AM, Trond Endrestøl wrote:
> On Sat, 25 Jan 2014 19:12-0000, Kaya Saman wrote:
> [...]
> No one's answered this, so I'll just give you my 2 cents.
> Triple parity means you're using storage capacity equivalent of three
> drives for parity alone. If you use five drives in total, this gives
> you 2 drives worth of real data and 3 drives worth of parity. In other
> words, you should really consider using a lot more drives when using
> triple parity, say nine drives.

So, basically if I have (just as silly example); 5x drives of 100MB 
capacity, this would equal 500MB in total.

Meaning that only 200MB would be usable.....

Having just done a quick experiment:

zpool create test_pool raidz3 /tmp/disk1 /tmp/disk2 /tmp/disk3 
/tmp/disk4 /tmp/disk5

I get:

test_pool    476M   304K   476M     0%  1.00x  ONLINE  -

then writing a 300M file to pool:

dd if=/dev/zero of=/test_pool/file bs=300M count=1
dd: /test_pool/file: No space left on device

test_pool    476M   396M  79.8M    83%  1.00x  ONLINE  -

du -sch /test_pool/file
157M    /test_pool/file
157M    total


So I guess, now I have to ask; when building a disk pool, what's the 
best option to go for between capacity and redundancy?

In my case I gradually want to expand my storage when I need it, so to 
maximize capacity RAID0 would be the easiest. This doesn't give me any 
redundancy however, unless I use RAID1+0 but then I loose physical 
capacity due to the mirrors.

Would it be better to create a raidz1 pool then just add raidz1 pools to 
the master as time goes by?

As in:

zpool create test_pool raidz1 /tmp/disk1 /tmp/disk2 /tmp/disk3 
/tmp/disk4 /tmp/disk5

zpool add test_pool raidz1 /tmp/disk6 /tmp/disk7 /tmp/disk8 /tmp/disk9 

dd if=/dev/zero of=/test_pool/file bs=600M count=1                    
1+0 records in
1+0 records out
629145600 bytes transferred in 190.069986 secs (3310073 bytes/sec)

Then running a 'zpool list' gets:

test_pool    952M   751M   201M    78%  1.00x  ONLINE  -

So virtually out of:

     NAME             STATE     READ WRITE CKSUM
     test_pool        ONLINE       0     0     0
       raidz1-0       ONLINE       0     0     0
         /tmp/disk1   ONLINE       0     0     0
         /tmp/disk2   ONLINE       0     0     0
         /tmp/disk3   ONLINE       0     0     0
         /tmp/disk4   ONLINE       0     0     0
         /tmp/disk5   ONLINE       0     0     0
       raidz1-1       ONLINE       0     0     0
         /tmp/disk6   ONLINE       0     0     0
         /tmp/disk7   ONLINE       0     0     0
         /tmp/disk8   ONLINE       0     0     0
         /tmp/disk9   ONLINE       0     0     0
         /tmp/disk10  ONLINE       0     0     0

errors: No known data errors

I have 8 disks usable with 2x disks for parity.... if my understanding 
is correct.



More information about the freebsd-questions mailing list