# Mac OS X and ZFS

So, I'm running the ZFS beta seed on Mac OS X.

It's a beta, but in my opinion, beta in filesystems are solid. This isn't... yet. First off, I've had about 20 panicks in the last 8 hours of running it. Not good. This alone means it is alpha to me. The beta aspects of it don't bother me so much and I see its potential.

### Basic setup

I resized my internal 160GB boo drive to 100 and 60. (60 being blank).
 /usr/sbin/zpool create internal disk0s3 /usr/sbin/zfs create internal/homes /usr/sbin/zfs create internal/homes/jesus /usr/sbin/zfs create internal/homes/jesus/src /usr/sbin/zfs create internal/homes/jesus/Documents /usr/sbin/zfs create internal/homes/jesus/Library rsync -av ~jesus/src/ /Volumes/internal/homes/jesus/src/ rsync -av ~jesus/Documents/ /Volumes/internal/homes/jesus/Documents/ rsync -av ~jesus/Library/ /Volumes/internal/homes/jesus/Library/ ### [ BOOM ] ### (again and again and again -- sent many reports to Apple) /usr/sbin/zfs destroy internal/homes/jesus/Library rm -rf /Users/jesus/src rm -rf /Users/jesus/Documents /usr/sbin/zfs set mountpoint=/Users/jesus/src internal/homes/jesus/src /usr/sbin/zfs set mountpoint=/Users/jesus/Documents internal/homes/jesus/Documents

### Problems from the get-go

The zpool worked and the creation of the homes FS worked. The others created, but didn't mount. I had to run zfs mount manually to get them to work. Notably, on next reboot (after an import glitch) they all auto-mount fine.

The flurry of panicks during my attempts to sync my ~/Library/ was disappointing. No data loss occurred and no corruption happened. So, it was the "best kind" of panick (if there is such a thing). My src and Documents is about 9GB and that copied over without any issues. Anyway, it should be obvious that I backed everything up before I started.

### Boot up / Shutdown

First, there is no bootup integration to see previously imported zpools. Also, when I try to import the zpool it thinks it is from a different system and I have to use -f... very odd. Anyway, my zpool is call "internal," so I create a StartupItems dir called ZFS and had it /usr/sbin/zpool import -f internal on boot and /usr/sbin/zpool export internal on shutdown. Of course, normally we wouldn't export the pool on shutdown, but as it thinks it is owned by someone else when I boot next, I thought it safer that way.

### Backups

One of the reasons I wanted ZFS is that snapshot capabilities. In addition to snapshots proper, zfs send allows one to push a full (or incremental) snapshot to a stream. Zetaback is a sweet tool to do automatic network-based backups of ZFS volumes. It is very efficient and quite exploratory in nature. However, zfs send just produces: internal error: Bad file descriptor which means "unimlemented." A beta-ism -- at least it didn' panick.

One of the shining points (arguably) of Mac OS X is Spotlight. And while you might not use Spotlight directly, you likely use it indirectly. Mac OS X manages these on a per-volume basis and something in ZFS confuses it substantially.

 # mdutil -s / /: \tIndexing enabled. # mdutil -s /Volumes/internal /Volumes/internal: \tIndexing enabled. # mdutil -s /Volumes/internal/homes /Volumes/internal/homes: \tIndexing and searching disabled. # mdutil -v -i on /Volumes/internal/homes /Volumes/internal/homes: \tIndexing and searching disabled.

As you can see, you cannot enable metadata indexing and searching on zfs filesystems within a pool. This (to me) sounds like a simple fix, but still it makes moving my Documents to ZFS unappealing.

### Summary

I'm excited to see where this is going. I sure do like ZFS on Solaris. I'd like to see Mac OS X with tight integration. I don't care so much about the system disk being ZFS (though it would be nice), it's the user directories that could really make it shine.