Using ZFS as (an iSCSI) target for Mac OS X Time Machine
Tuesday Jan 27, 2009
Inspired by this and then this blog entry, I thought it was now time for me to get my own experience with iSCSI.
Here's the result:
- On my eco-friendly server running OpenSolaris 2008.11, I created a new ZFS volume (not a ZFS file system!) with iSCSI sharing switched on:
$ zfs create -o shareiscsi=on -V 180G pool2/mac-tm cannot share 'pool2/mac-tm': iscsitgtd failed request to share filesystem successfully created, but not shared
- Well, that did not work well. Better search and install the iSCSI packages first:
$ pkg search -rl iscsi | nawk '{print $NF}' | \ nawk 'BEGIN{FS="@"}{print $1}' | sort -u PACKAGE pkg:/SUNWiscsi pkg:/SUNWiscsitgt $ pkg install SUNWiscsi SUNWiscsitgt DOWNLOAD PKGS FILES XFER (MB) Completed 2/2 18/18 0.86/0.86 PHASE ACTIONS Install Phase 74/74 PHASE ITEMS Reading Existing Index 9/9 Indexing Packages 2/2 - Then, I wanted to delete (destroy, in ZFS speak) and create the zvol again:
$ zfs destroy pool2/mac-tm cannot destroy 'pool2/mac-tm': volume has children use '-r' to destroy the following datasets: pool2/mac-tm@zfs-auto-snap:frequent-2009-01-23-12:15#
- OK, I understand that an automated snapshot had already been created in the meantime. Destroy the zvol with its snapshots, and create the zvol again:
$ zfs destroy -r pool2/mac-tm $ zfs create -o shareiscsi=on -V 180G pool2/mac-tm
- Check if the shareiscsi property is on for our volume:
$ zfs get shareiscsi pool2/mac-tm NAME PROPERTY VALUE SOURCE pool2/mac-tm shareiscsi on local
- List all defined iSCSI targets:
$ iscsitadm list target Target: pool2/mac-tm iSCSI Name: iqn.1986-03.com.sun:02:3f4f551a-41ab-4a3a-adf9-ea3ce5c2789c Connections: 0 - Looks great! On the MacBook Pro running Mac OS X 10.5.6, I installed the globalSAN iSCSI initiator software (version 3.3.0.43) from Studio Network Solutions, after downloading from this link.
- Then I rebooted the Mac (as required by the globalSAN iSCSI software).
- Next step was to mount the iSCSI drive:

a) Click on the globalSAN iSCSI icon to display its control panel:
b) Click on the + symbol in the lower left corner to get the following popup:
c) Enter the IP address or host name of the OpenSolaris server, leave the port number as it is, and enter the target name (the last column in the line starting with iSCSI Name: in the output of the iscsitadm list target command on your OpenSolaris server - in our case, it's iqn.1986-03.com.sun:02:3f4f551a-41ab-4a3a-adf9-ea3ce5c2789c ), and press the OK button. The iSCSI control panel will then look like:
d) Click the Connected switch at the end of the iSCSI target line (the line which starts with iqn) to get the following popup:
e) Press the Connect button to connect to that iSCSI target. As we did not specify CHAP or Kerberos authentication, the connect will work without user and password. For a walkthrough and more on CHAP authentication, click this link.
After pressing the Connect button, the control panel will look like:
At this time, the newly created volume will show up in Disk Utility. Note that I clicked on the Persistent button to build the connection again after a reboot - I didn't try rebooting to check, but believe it will work. - Then, I created a Mac OS X volume in Disk Utility.

a) Click on the disk drive and then on the Erase tab, enter a new name for the volume (or leave it as it is), and press the Erase... button. The following screen will displayed to show the progesss:
After the erase is completed, the new volume will show up in the left part of the Disk Utility (For this screen shot, I created the volume again after providing the name ZFS-180GB for the volume. Not sure if it's possible to rename a volume without formatting it):
- Now the volume is usable in Time Machine.
a) Click on the Time Machine icon in System Preferences to start its control panel:
b) Click on Change Disk to change the destination volume for Time Machine (the lock in the lower left corner has to be unlocked first to allow for the change):
c) Select the new volume and press Use for Backup. Then, just start the backup (or wait 120 seconds until it starts automatically):
Mac OS X Time Machine has started its first backup on a ZFS volume!
However, as always in my blog entries, this is no guarantee that it will always work as described, or that the backup and restore will also work after your next Mac OS X upgrade, or that there will be no errors or problems with such a setup. What I can tell you is that a simple restore attempt worked for me just as if I had done it from a USB disk!
Up to now, I have always disconnected the USB disk drive before closing the Mac's lid so that a Time Machine backup would not be interrupted in the middle. Not sure what would happen if a Time Machine backup is running while you close the lid, so better read the docs and test it, or just always unmount Time Machine's active volume before letting your Mac sleep.
And I discovered that if an iSCSI volume is mounted before closing the lid, the Mac Book Pro cannot transition into deep sleep mode with a power consumption similar to the switched off state. It somehow sleeps, but with rotating fan and a steady front LED. And in order to wake it up, I had to open and close the lid several times. So the steps to do before closing the Mac's lid are:
- Eject (unmount) the volume (use the eject menu item after right-clicking on the volume's icon on the desktop).
- Disconnect the iSCSI target (and all others) in the globalSAN iSCSI control panel in the Mac OS X System Preferences, by unmarking the tick in column Connected for all targets. A confirmation popup will be shown when unmarking the Connected tick.
After waking up your Mac next time, just tick the Connected mark in the globalSAN iSCSI control panel again and confirm the popup that will be shown. If you did not choose another destination disk for Time Machine in the meantime, Time Machine will recognize the iSCSI drive as a valid destination volume automatically and use it for its next scheduled backup.
BTW For an interesting article on how to use ZFS iSCSI sharing with a Linux client, please click here.
Tags: macosx opensolaris solaris step-by-step timemachine walkthrough zfs











Of course you have to create the pool first. Are t...
artp: You are right! In this case, pool2 has to ex...
Interesting! What type of throughput did you get w...
Andre: The 134.8 GB backup which I had started lat...
Bernd,
I found it necessary to remov...
Hi, thanks for this article. I have my iscsi targe...
After some more reading I found out that Global Sa...