Swap on ZFS

Daniel Staal DStaal at usa.net
Wed May 7 00:56:50 UTC 2014

--As of May 7, 2014 2:25:47 AM +0200, Rolf Nielsen is alleged to have said:

> On 2014-05-06 21:21, David Noel wrote:
>> Is swap on ZFS still ill-advised? All the forum, list, and blog
>> posts I find say it's a no-go. Is this still the case? The idea
>> behind it not working is that ZFS needs memory to write to disk, so
>> when you need to swap (are low on memory) ZFS won't be able to
>> write.
>> I found some talk of having a tunable added as a workaround that
>> would reserve a certain amount of memory for ZFS so this wouldn't
>> be a problem, but have no idea if anyone's made any progress
>> towards implementing it.
> Just out of curiosity, why do you want it?
> To get swap on ZFS, you first need to create a ZFS filesystem on one
> or more devices, then you create a dedicated volume inside that
> filesystem and use that dedicated volume as swap. To me that seems to
> add unnecessary complexity, similar to using a file backed md device
> as swap. Please don't take this as criticism; you may very well have
> good reasons for wanting to do this. I'm just curious about those reasons.

--As for the rest, it is mine.

Because it's actually simpler than the alternative, in many cases.  The 
creating a ZFS filesystem is 'free' in this - you are only planning on 
doing this if you are already running a ZFS-based system, so you're already 
creating the filesystem.  That leaves creating the dedicated volume inside 
that and using it as swap - which is as easy or easier than formatting and 
using a dedicated disk as swap.

So, really using swap on ZFS is no harder or easier than using a dedicated 
swap disk, and no more complex.  And if you *aren't* planning on a 
dedicated swap disk, it starts adding complexity: If you aren't using a 
dedicated swap disk, then you're probably sharing it with a disk that 
you'll be using in the ZFS filesystem - which means you now need to format 
and partition that disk, which you didn't need to do before.  You also have 
to monitor and remember that the disk is partitioned, if you ever have to 
replace it.  (Which otherwise ZFS would make easy - just swap in a new one, 
and tell ZFS to use it to replace the failed disk.)

So your steps are:
1. Create ZFS filesystem.
2. Create swap inside filesystem.
3. Configure FreeBSD to use swap.

1. Partition Disks.
2. Set up Swap partition.
3. Configure FreeBSD to use swap.
4. Create ZFS filesystem on other partition.

Note of course that one of the points of using ZFS is the ease and 
flexibility of creating volumes inside it - a ZFS user is probably creating 
multiple at setup, and the swap volume isn't all that different to create. 
And again, you're giving up the ability to use ZFS to manage the device on 
the fly, which is one of ZFS's best benefits.

Daniel T. Staal

This email copyright the author.  Unless otherwise noted, you
are expressly allowed to retransmit, quote, or otherwise use
the contents for non-commercial purposes.  This copyright will
expire 5 years after the author's death, or in 30 years,
whichever is longer, unless such a period is in excess of
local copyright law.

More information about the freebsd-questions mailing list