Print

Print


You can boot FreeBSD from ZFS, but my understanding is like Solaris, 
only from a zfs mirror or lower raid level, not raidz or above.  So if 
you are still stuck with a mirror plus a raidz, whats it matter if 
that mirror is zfs or something else?  Plus we are only talking about 
a /boot or / partition, you could settle for having a non-raid /boot 
and have /usr and gang on zfs.  Also, zfs prefers a 64 bit platform 
with lots (1G or more is optimal) of memory, and tends to have 
stability problems on any 32bit OS (related to kernel address space) 
without tweaking.

Some of the things I appreciate most about zfs is the ease of use, and 
the abundance of volume/fs features you usually only get out of 
something like a Netapp (with or without additional licensing!), such 
as directory based snapshots, snapshot import/export to other systems, 
snapshot rollback, raw image creation and exporting (iscsi, etc) and 
of course flexible volume sizes that you can limit the maximum usage 
and/or guarantee an amount of free space for each volume if you don't 
want to share all the free space with all volumes.  Plus it allocates 
"inodes" (for lack of the specific term coming to mind) on the fly, so 
you don't have to worry about having too little at creation or later.  
I've also heard appreciation for the checksums on individual files, so 
in the case of a raid failure with data loss, it is still possible to 
positively verify the integrity of individual files which may need to 
be copied elsewhere (recovered).

In the ease of use department, you can go from empty disks to having 
the newly created volume mounted and ready to use with one simple 
command, no extensive waits, work, or brain cells.  They have really 
gone above and beyond normal expectations of required work by 
practically obsoleting fstab, exports/dfstab, mount, tunefs, 
exportfs/share, newfs, (insert volume manager here), fsck, fdisk, 
disklabel/format, volume/fs resizer, ...  To experienced admins, 
using the above commands is not "hard" by any stretch, but it can be 
refreshing to take advantage of the forthought to eliminate the need 
and take care of the obvious.  For example, if I wanted to remount 
/data on /data2 instead, I would normally have to do:

umount /data
mv /data /data2 (or mkdir + chmod)
vi /etc/fstab (..... dont make mistakes here)
mount data2

versus:

zfs set mountpoint=/data2 z/data   (done! assuming not in use.)

and, if you want, you can still instruct it to let you mount it 
traditionally.

Example system 1:
Filesystem          1024-blocks      Used     Avail Capacity  Mounted on
z/backups             276837120         0 276837120     0%    /backups
z/data                375196672  98359552 276837120    26%    /data
z                     276837120         0 276837120     0%    /z
z/backups/host1       280055552   3218432 276837120     1%    /backups/host1
z/backups/host2       376857728 100020608 276837120    27%    /backups/host2
z/backups/host3       276837120         0 276837120     0%    /backups/host3
z/backups/host4       276837120         0 276837120     0%    /backups/freespace

# zfs get compressratio z/backups/host1
NAME              PROPERTY       VALUE             SOURCE
z/backups/host1   compressratio  1.41x             -


Example system 2:
Filesystem         1024-blocks    Used     Avail Capacity  Mounted on
z                    472478976       0 472478976     0%    /z
z/10g                 10485760 2046464   8439296    20%    /z/10g
z/400g               419430400     128 419430272     0%    /z/400g
z/dvarchive          474987776 2508800 472478976     1%    /z/dvarchive
z/gzip               472579328  100352 472478976     0%    /z/gzip
z/obj                472970624  491648 472478976     0%    /z/obj
z/ports              472654080  175104 472478976     0%    /z/ports
z/ports/distfiles    472520192   41216 472478976     0%    /z/ports/distfiles
z/ports2             472753920  274944 472478976     0%    /z/ports2
z/ports2/distfiles   472520192   41216 472478976     0%    /z/ports2/distfiles
z/src                472788608  309632 472478976     0%    /z/src

Here, /z/10g and /z/400g are limited to 10g and 400g of usage respectively,
with no free space guarantee, so if someone fills up /z/obj completely,
/z/10g will also be full.  If I apply a 10g free space reserve to /z/10g:
# zfs set reservation=10g z/10g
then the shared free space decreases by 10g, and df reflects it as long
as the volsize is not smaller than the shared free space (400g is the 
counter example):

Filesystem         1024-blocks    Used     Avail Capacity  Mounted on
z                    464039552       0 464039552     0%    /z
z/10g                 10485760 2046464   8439296    20%    /z/10g
z/400g               419430400     128 419430272     0%    /z/400g
z/dvarchive          466548480 2508928 464039552     1%    /z/dvarchive
z/gzip               464139904  100352 464039552     0%    /z/gzip
z/obj                464531200  491648 464039552     0%    /z/obj
z/ports              464214656  175104 464039552     0%    /z/ports
z/ports/distfiles    464080768   41216 464039552     0%    /z/ports/distfiles
z/ports2             464314496  274944 464039552     0%    /z/ports2
z/ports2/distfiles   464080768   41216 464039552     0%    /z/ports2/distfiles
z/src                464349312  309760 464039552     0%    /z/src

The "Used" amount reflects the space actually used on disk,
so it could be smaller than what "du" or "ls" report if the files
are compressed such as the difference between /z/ports and 
/z/ports2 which have the same contents but different compression levels,
or the "Used" could reflect 2 or 3x as much as your files consume
if you instructed zfs to store more than one copy of each file on disk.
Telling zfs to store more than one copy may help read performance
and may help ensure a file is readable incase of a raid redundancy
failure (too many disks failing at once).

Have I explored zfs?  Yes ;)  Have I used it yet on Solaris? Nope!

See here for a post on a quick start guide for zfs if you
want to see how easy and powerful it can be:

http://docs.freebsd.org/cgi/getmsg.cgi?fetch=1402809+0+/usr/local/www/db/text/2007/freebsd-current/20070408.freebsd-current

(if that doesnt work, click 
http://docs.freebsd.org/cgi/mid.cgi?20070406214325.GB61039
and goto the "freebsd-current" link)


On Wed, Aug 15, 2007 at 04:19:22PM -0400, Peter Cole wrote:

  That is good stuff.  With the upcoming release of FreeBSD including support
  for ZFS it will hopefully only be a matter of time before it too can boot
  ZFS.
  
  Peter Cole
  Information Technologist
  Michigan State University Press
  
  
  -----Original Message-----
  From: MSU Network Administrators Group [mailto:[log in to unmask]] On
  Behalf Of Matt Kolb
  Sent: Wednesday, August 15, 2007 2:07 PM
  To: [log in to unmask]
  Subject: [MSUNAG] ZFS boot
  
  If any of you are using OpenSolaris, here is a great blog post about  
  converting to a ZFS root (/):
  
    http://blogs.sun.com/timf/date/20070329
  
  If you're unfamiliar with ZFS but want to learn more, check here:
  
  http://www.opensolaris.org/os/community/zfs/whatis/
  
  Now take what you've read there and imagine you can boot off of it.   
  No more wasted space or being locked in to a bad decision when you  
  (or your predecessor) initially setup the box.
  
  Good stuff!
  
  ./mk
  -- 
  Matt Kolb  <[log in to unmask]>
  Academic Computing & Network Services
  Michigan State University