[OpenIndiana-discuss] Zpool 4k sectors - zfs send/recv

Matt Connolly matt.connolly.au at gmail.com
Tue May 24 23:14:28 UTC 2011


I'm about to expand my storage from 2 drives in a mirror to 4 drives (2 x mirrors concatenated). After this stage 3 of my 4 drives will be Advanced format drives, so I'm looking at the zpool with block-size 4096 (ashift=9).

I will have the opportunity here to format the new drives using the 4096 byte block size, by doing this:

(starting with zpool which is a mirror on drive1 and drive2)
1. zpool create newpool block-size 4096 mirror drive3 drive4
2. zfs send -R zpool/blah | zfs recv newpool/blah
3. zpool destroy zpool
4. zpool add newpool mirror drive1 drive2

Any gotchas here I need to know about?

This is going to result in all existing data on drive3/4 mirror vdev and a pretty empty drive1/2 mirror vdev. Are there any ways to get the data redistributed across the drives?



I'm running some tests with just one filesystem onto a test pool (file backing store) and I notice that the disk usage goes up significantly, by about 30%:

root at vault:~# zfs list zpool/projects/something
NAME                            USED  AVAIL  REFER  MOUNTPOINT
zpool/projects/something  49.8M  94.0G  28.8M  /projects/something
root at vault:~# zfs list ztest/projects/soundevolution
NAME                            USED  AVAIL  REFER  MOUNTPOINT
ztest/projects/something  65.3M  1.89G  38.0M  /ztest/projects/something

The used amount goes up from 28.8M to 38.0M, which is exactly as `du -h` reports. This file system has about 3000 files in it; not massive. I've compared the `du -h ` output from the two filesystems above and here's a few changes in file size:
1k	-> 8k
1k	-> 8k
3k	-> 17k
6k	-> 17k
7k	-> 25k
5k	-> 18k
17k	-> 57k
383k	-> 839k
7.3M	-> 7.5M
8k	-> 47k

etc..

As I expect, most of the difference is in the smaller files. I am surprised, though, at how much the files are increasing in size by - I would have expected an increase of up to 4k per file (and perhaps another 4k for metadata). But 3k to 17k? 5k to 18k? 17k to 57k?

Is this normal? Curiosity makes me ask why?

And if zfs is so much less efficient with larger block sizes, is the ashift=9 thing something that only database users for example (or other users of very large files) should even consider??


Thanks for sharing your thoughts.

Matt





More information about the OpenIndiana-discuss mailing list