[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Enabling UFS soft updates / journalling



Hi,

In an old thread, the use of UFS soft updates was discussed:
http://lists.debian.org/debian-bsd/2012/09/msg00011.html

I'm wondering if we could consider UFS+S, UFS+SUJ or UFS+J as a default
for new installs.

I've only tried UFS+S myself.  On media that is slow to write metadata
changes, it eliminates a major performance bottleneck.  The drawbacks
are explained at [0] but are mainly:

1. a 'rewinding' to a consistent state by as much as 30-60 seconds in
the event of a crash;  I think that is normal for ZFS though and maybe
ext4.  (I'm assuming/hoping synchronous writes still block until fully
written out...)

2. deleting a file doesn't immediately free up disk space until (in the
background) metadata changes are written out;  this is also true of ZFS.

3. mounting a crashed filesystem should not be any slower, but a
background fsck is started (somehow?) to reclaim unused blocks;  I think
the newer UFS+SUJ mode makes that unnecessary for a slight overhead.

[0]:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/configtuning-disk.html#idp84024368

I'm not familiar with UFS+J but I imagine its overheads would be the
highest of all these modes (and thus least worth changing to).  It would
also need to wait for a potentially slow rollback/replay to finish
before mounting a crashed filesystem.


For more than 10 years it seems that upstream FreeBSD uses plain UFS [1]
only for its 1 GiB root partition.  All other UFS filesystems are UFS+S,
which in a typical default configuration would include /home, /usr,
/tmp, /var [2]

The release notes for 9.0-RELEASE [3] seems to imply that UFS+SUJ became
the default but I can't find evidence of the change happening in code.

[1]:
http://svnweb.freebsd.org/base/stable/9/usr.sbin/sysinstall/label.c?annotate=88321#l331
[2]:
http://svnweb.freebsd.org/base/stable/9/usr.sbin/sysinstall/label.c?view=markup#l85
[3]: http://www.freebsd.org/releases/9.0R/relnotes-detailed.html#FS


To implement UFS+S on Debian GNU/kFreeBSD would be a simple change in
d-i to use "newfs -U", but we may want it to be a user-configurable
option too.  It cannot be changed while a filesystem is mounted so only
the installer can do it, or using tunefs from a rescue system.

Any thoughts?

My biggest question is why upstream FreeBSD chose not to use this on the
root filesystem if it was safe enough for the others.  If it was, for
example, a bootloader limitation it may not be relevant to us.

Do these modes of UFS satisfy dpkg's expectations to be able to operate
safely?  (I think so, and furthermore dpkg makes very liberal use of
fsync() since ext4 was first introduced).

Do our initscripts already launch whatever type of fsck / background
fsck is needed to properly repair a filesystem after a crash?  (I
suspect not, and some unused blocks will go missing at each crash.)

Regards,
-- 
Steven Chamberlain
steven@pyro.eu.org


Reply to: