OpenSolaris

  subsites   code review   repo   packages   bugs   defect   polls   planet
You are not signed in. Sign in or register.

Flag Day: ZFS - the last word in filesystems

Date: Mon, 31 Oct 2005 11:38:08 -0800 (PST)
From: Jeff Bonwick <bonwick at zion dot eng dot sun dot com>
To: onnv-gate at onnv dot sfbay dot sun dot com, on-all at eng dot sun dot com
Subject: Flag Day: ZFS - the last word in filesystems


Sun Proprietary/Confidential: For Internal Use Only

    **** ZFS WILL BE ANNOUNCED THROUGH OPENSOLARIS THE WEEK OF 11/14 ****

Please do not publicly discuss ZFS or the impending announcement.  We are
planning a community launch.  If you want to be involved in the launch
through blogging, please subscribe to 'zfs-opensolaris-announce at sun dot com'.
More details will be forthcoming on that alias shortly.

    **** ZFS IS A FLAG DAY FOR CAP-EYE-INSTALL USERS ****

Engineers: you'll need to do a full bfu across today's putback.
No other special action is required.

    **** NOW THE FUN PART ****

Welcome to ZFS.

ZFS is a new kind of filesystem that provides simple administration,
transactional semantics, end-to-end data integrity, and immense scalability.

ZFS presents a pooled storage model that completely eliminates the concept
of volumes and the associated problems of partition management, provisioning,
and filesystem grow/shrink.  Thousands of filesystems can all draw from a
common storage pool, each one consuming only as much space as it actually
needs.  The combined I/O bandwidth of all devices in the pool is available
to all filesystems at all times.

All operations are copy-on-write transactions, so the on-disk state
is always valid.  There is no need to fsck(1M) a ZFS filesystem, ever.
Every block is checksummed to prevent silent data corruption, and the
data is self-healing in mirrored or RAID-Z configurations.  If one
copy is damaged, ZFS will detect it and use another copy to repair it.

ZFS provides unlimited constant-time snapshots and clones.  A snapshot
is a read-only point-in-time copy of a filesystem, while a clone is a
writable fork of a snapshot.  Clones are a great way to create workspaces,
perform upgrades, etc.

There are no hard limits in ZFS.  You can have as many files as you want;
full 64-bit files offsets; unlimited links, directory entries, snapshots,
and so on.

And oh yeah -- it's fast.


Getting Started
---------------

Everything you hate about managing filesystems and volumes is gone:
you don't have to format, newfs, mount, edit /etc/vfstab, fsck, growfs,
metadb, metainit, etc.

Meet your new best friends: zpool(1M) and zfs(1M).  Draft man pages are here:

	# man -M /ws/zfs-gate/usr/src/man zpool
	# man -M /ws/zfs-gate/usr/src/man zfs

or on the web here:

	http://zfs.sfbay/docs.shtml
	
But ZFS is easy, so let's get on with it!  It's time to create your first pool:

	# zpool create tank c1t2d0

You now have a single-disk storage pool named tank, with a single
filesystem mounted at /tank.  There is *nothing* else to do.

If you want mirrored storage for mail and home directories, that's easy too:

    Create the pool:

	# zpool create tank mirror c1t2d0 c2t2d0

    Create the /var/mail filesystem:

	# zfs create tank/mail
	# zfs set mountpoint=/var/mail tank/mail

    Create home directories, and mount them all in /export/home/<username>:

	# zfs create tank/home
	# zfs set mountpoint=/export/home tank/home
	# zfs create tank/home/ahrens
	# zfs create tank/home/billm
	# zfs create tank/home/bonwick
	# zfs create tank/home/eschrock
	...

Filesystems in ZFS are hierarchical: each one inherits properties from above.
In this example, the mountpoint property is inherited as a pathname prefix.
That is, tank/home/ahrens is automatically mounted at /export/home/ahrens
because tank/home is mounted at /export/home.  You don't have to specify
the mountpoint for each individual user -- you just tell ZFS the pattern.

This is how we actually set up home directory and mail service on zion.eng,
which has been running ZFS for over a year and a half.

But wait, there's more!

ZFS provides built-in compression.  To compress all home directories:

	# zfs set compression=on tank/home

To give ahrens a 10G quota:

	# zfs set quota=10g tank/home/ahrens

To give bonwick a 100G reservation (membership has its privileges):

	# zfs set reservation=100g tank/home/bonwick

To automatically NFS-export all home directories read/write:

	# zfs set sharenfs=rw tank/home

To scrub all disks and verify the integrity of all data in the pool:

	# zpool scrub tank

To replace a flaky disk:

	# zpool replace tank c2t2d0 c4t1d0

To add more space:

	# zpool add tank mirror c5t1d0 c6t1d0

To move your pool from SPARC machine 'sparky' to AMD machine 'amdy':

    On sparky:

	# zpool export tank

    Physically move your disks from sparky to amdy.
    Then, on amdy:

	# zpool import tank

Everything will just work -- ZFS has 'adaptive endianness' to cope
with different byte order on different platforms.

You get the idea: it's simple.  Any common ZFS operation can be done
with a single short command.


Documentation
-------------

For now, please use the draft man pages in /ws/zfs-gate/usr/src/man.
Our admin guide will be available on the opensolaris web page soon.


Bugtraq Categories
------------------

	kernel/zfs	ZFS kernel bugs
	utility/zfs	zfs(1M) and zpool(1M) bugs


Contact Information
-------------------

To contact the ZFS team, send mail to 'zfs-team at sun dot com'.

Join the ZFS discussion at 'zfs-interest at sun dot com'.  This list will be
automatically migrated to 'zfs-discuss at opensolaris dot org' the week of 11/14.

You can get more information at:

	http://www.opensolaris.org/community/os/zfs

This community is currently under development.  Archived information
can be found at http://zfs.eng.


Give it a spin and let us know what you think!

-- The ZFS Team

    Development:

	Jeff Bonwick
	Matt Ahrens
	Lori Alt
	Bill Baker
	Rich Brown
	Noel Dellofano
	Eric Kustarz
	Tabriz Leman
	Lin Ling
	Mark Maybee
	Bill Moore
	Neil Perrin
	Bill Ricker
	Eric Schrock
	Mark Shellenbaum
	Steve Talley

    Test:

	Jim Walker
	Mike Byrne
	Tim Foster
	Robin Guo
	Brian Keane
	Sean McGrath
	Martin Mei
	Lance Owens
	Marvin Wang
	Forrest Wu

    Management:

	Dave Brittle
	Bev Crair
	Eric Ray
	Fred Zlotnick

    Program Management:

	Gina Chua

    Docs:

	Cindy Swearingen