Daemon for OS X that listens for external drives being plugged in and automatically imports ZFS pools.
If you use or want to use ZFS on an external hard drive, you might find this useful :)
You'll need OpenZFSOnOSX or similar installed.
To build and install:
$ git clone https://github.com/virajchitnis/autozfs.git
$ cd autozfs
$ make install
- Open the
Automator
app and create a newFolder Action
. - Choose
/Volumes
as the folder. - Drag the
Run Shell Script
action from the left pane to the right pane and paste the location of thezpool_mount_all.py
script into the box.
In order for this service to work as expected, you need to allow autozfs
Full Disk Access
in the macOS privacy pane. This can only be done after the first disk has been plugged in. Until the zpool import for the first disk fails, autozfs
will not show up in the privacy pane.
A background daemon started via launchd
and running as root listens for "Disk Arbitration"
events. Each time it detects a disk connection it checks to see if the disk contains a ZFS partition.
If it finds a ZFS partition, it gets the name of the zpool from the partition name and imports it.
The python script for mounting all datasets simply loops through all datasets and mounts ones where the
mounted
property returns no
.
- You should be able to see a process called
autozfs
running, check Activity Monitor,ps
,htop
or whatever. - The daemon logs inane messages to
/private/var/log/autozfs.{log,err}
.
- OS X only.
- Assumes
zpool
andzfs
is installed in/usr/local/bin
. This may not be true of all systems... - Only auto-mounts USB devices, but it's an artificial restriction -- delete the USB stuff in the source and it should do Firewire/Thunderbolt/whatever just fine.
Copyright (c) 2017, Michael Sproul.
Licensed under the terms of the 3-clause BSD license.