by rahvee » Sat Feb 16, 2013 8:27 pm
@ghaskins - You're partially right, not really. When you create a zvol, you're creating a new zfs filesystem, with its own zfs properties, and no filesystem mounted. Some of the most obvious distinctions there are, different auto-snapshot properties if you want, different compression & sync options, different blocksize (by default a zvol has 8k blocksize which more accurately represents a physical disk instead of the 128k blocksize which is default for zfs filesystem)... And a zvol automatically creates the refreservation appropriate for your volume size, for the intended purpose of ensuring the zvol won't run out of space just because some other filesystem in the pool consumes space. In a zvol, you get to bypass all the posix filesystem code, which contributes also a performance benefit.
While many people, including myself, will get by just fine by creating a zfs filesystem, and putting a vmdk file inside the filesystem, it's definitely not the same thing as creating a zvol and using a vmdk wrapper around the raw zvol. A vmdk wrapper around a zvol raw device performance, reliability, and feature set, is measurably better than a vmdk file inside a filesystem.
Still, using the vmdk file inside the zfs filesystem is a good solution (much better than what mac has built-in without zevo). So most people, including myself, will be happy to move forward this way, and just wish we could use the zvol for the marginal extra benefits that it provides. At least, without the zvol option available, I can still do COW snapshots and send/receive. Those are the biggest most important features IMHO.