For installation of the OS, apps et cetera
Give one disk to JHFS+.
If you're limited to two disks and one is hard, use the hard disk.
For integrity of user data
Give at least one other disk to ZFS.
Why not HFS Plus?
A little HFS test – a command-line presentation by @jolly of DIY Fusion Drive fame – demonstrates HFS Plus failure in one situation.
In other situations: corruption of data may go unnoticed, and be propagated through all backups, to the point of no recovery.
Such corruption may be undetectable by utilities such as Disk Utility and Alsoft DiskWarrior (that's the nature of HFS Plus). Effects on end users range from subtle to extreme; and without positive identification of files that are corrupted, it can be extraordinarily difficult to pinpoint the source of a problem.
See for example the accepted answer to a question in Server Fault, ZFS Data Loss Scenarios –
… I've never lost data with ZFS.
I have experienced everything else …
If the disk is hard (rotational)
Avoid a mixture of file systems that includes HFS Plus:
Since HFS+ has a single global lock for all metadata updates (held across the I/O) it is highly sensitive to disk latencies. …
(My current use of JHFS+ and ZFS on a Seagate Momentus® XT ST750LX003-1AC154 solid state hybrid – internal to a MacBookPro5,2 with 8 GB memory – is good enough, but could perform better without that mixture on the single disk.)
With three or more disks, just one solid state, and Mountain Lion
Give one slice of the SSD to a CoreStorage LVG, then pool that with your JHFS+ startup volume. Aim: Fusion Drive-like behaviour.
Give a different slice of the SSD to ZFS. Either:
zpool add poolname cache /dev/disknslicen or
- give the slice to CoreStorage the add that CoreStorage to your ZFS pool.
Approach (1) is well established for performance gains through level 2 adaptive replacement cache. Brendan's blog » L2ARC Screenshots (2009-01-30) reminds us that rebooting the operating system causes L2ARC to go cold and:
We are also working on a persistent L2ARC, so if a server does reboot
it can begin warm, which will be available in a future update.
Approach (2) aims to bring auto-tiering to ZFS without a go-cold at reboot. A routine check of integrity of data (
scrub) might demote data from the high performance tier … if so, I wonder whether another routine can mitigate the effects of demotion – an incremental
zfs send… (backup) should read, from the ZFS pool, recently written blocks; and so CoreStorage should promote things to the preferred tier.
Multiple pools sharing a single SSD
The accepted answer to a question in Server Fault observes:
It's not a good idea to share an SSD between pools for reasons of data integrity and performance. …
However, the subject for that question was ZFS - how to partition SSD for ZIL or L2ARC use? (2011-02-22) – predating ZEVO, Fusion Drive etc.. Under ZEVO resilience to untimely loss of L2ARC (2012-11-04) my initial guess is that with multiple pools sharing a single SSD, the L2ARC part of that SSD need not pose a risk to integrity of data.
(I have no experience with ZIL.)
Personally: for the past few months I have used ZEVO ZFS for my home directory, with CoreStorage to encrypt the ZFS dataset and the startup volume. Different passwords, so (better than FileVault 2) no other administrator of the machine can access my data.
Apple Disk Utility is currently too bugged to present a true overview, so here are alternative views.
The one solid state hybrid drive in the laptop:
Plus an external hard disk drive (StoreJet) and its cache vdev (Verbatim, USB flash drive) for level 2 adaptive replacement cache:
Hint: the cache device can be physically removed whilst actively using the hard disk drive. No harm should result; this is one of the beauties of ZFS.
Generally: if the idea of mixing two pool technologies (Apple CoreStorage plus ZFS) puts your head in Here be dragons! territory then:
- set aside thoughts of mixtures
- for ZFS, do at least take a look at MacZFS or fuller-featured ZEVO.
@bmike will probably wish for a tl;dr addition to this answer … a diagram might make the whole caboodle easier to digest.