From: Chris Mason <chris.mason@oracle.com>
To: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org
Subject: [ANNOUNCE] Btrfs: a copy on write, snapshotting FS
Date: Tue, 12 Jun 2007 12:10:29 -0400 [thread overview]
Message-ID: <20070612161029.GB28279@think.oraclecorp.com> (raw)
Hello everyone,
After the last FS summit, I started working on a new filesystem that
maintains checksums of all file data and metadata. Many thanks to Zach
Brown for his ideas, and to Dave Chinner for his help on
benchmarking analysis.
The basic list of features looks like this:
* Extent based file storage (2^64 max file size)
* Space efficient packing of small files
* Space efficient indexed directories
* Dynamic inode allocation
* Writable snapshots
* Subvolumes (separate internal filesystem roots)
- Object level mirroring and striping
* Checksums on data and metadata (multiple algorithms available)
- Strong integration with device mapper for multiple device support
- Online filesystem check
* Very fast offline filesystem check
- Efficient incremental backup and FS mirroring
The ones with marked with * are mostly working, and the others are on
my todo list. There are more details on the FS design, some benchmarks
and download links here:
http://oss.oracle.com/~mason/btrfs/
The current status is a very early alpha state, and the kernel code
weighs in at a sparsely commented 10,547 lines. I'm releasing now in
hopes of finding people interested in testing, benchmarking,
documenting, and contributing to the code.
I've gotten this far pretty quickly, and plan on continuing to knock off
the features as fast as I can. Hopefully I'll manage a release every
few weeks or so. The disk format will probably change in some major way
every couple of releases.
The TODO list has some critical stuff:
* Ability to return -ENOSPC instead of oopsing
* mmap()ed writes
* Fault tolerance, (EIO, bad metadata etc)
* Concurrency. I use one mutex for all operations today
* ACLs and extended attributes
* Reclaim dead roots after a crash
* Various other bits from the feature list above
And finally, here's a quick and dirty summary of the FS design points:
* One large Btree per subvolume
* Copy on write logging for all data and metadata
* Reference count snapshots are the basis of the transaction
system. A transaction is just a snapshot where the old root
is immediately deleted on commit
* Subvolumes can be snapshotted any number of times
* Snapshots are read/write and can be snapshotted again
* Directories are doubly indexed to improve readdir speeds
So, please give it a try or a look and let me know what you think.
-chris
next reply other threads:[~2007-06-12 16:13 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-06-12 16:10 Chris Mason [this message]
2007-06-12 19:53 ` [ANNOUNCE] Btrfs: a copy on write, snapshotting FS Mike Snitzer
2007-06-12 20:14 ` Chris Mason
2007-06-13 3:08 ` Christoph Hellwig
2007-06-13 10:17 ` Chris Mason
2007-06-13 3:46 ` John Stoffel
2007-06-13 10:35 ` Chris Mason
2007-06-13 14:00 ` John Stoffel
2007-06-13 14:54 ` Chris Mason
2007-06-13 16:12 ` John Stoffel
2007-06-13 16:34 ` Chris Mason
2007-06-13 16:25 ` Grzegorz Kulewski
2007-06-14 18:20 ` Chuck Lever
2007-06-14 18:48 ` Chris Mason
2007-06-15 17:17 ` Chuck Lever
2007-06-14 18:29 ` Florian D.
2007-06-14 19:13 ` Chris Mason
2007-06-15 19:08 ` Florian D.
2007-06-15 19:11 ` Chris Mason
2007-06-15 20:46 ` Florian D.
2007-06-15 20:51 ` Chris Mason
2007-06-15 22:03 ` Florian D.
2007-06-16 0:54 ` Chris Mason
2007-06-16 9:31 ` Florian D.
2007-06-18 14:29 ` Chris Mason
2007-06-18 14:41 ` Chris Mason
2007-06-18 17:37 ` Vladislav Bolkhovitin
2007-06-18 20:08 ` John Stoffel
2007-06-19 9:11 ` Pádraig Brady
2007-06-19 10:01 ` Vladislav Bolkhovitin
2007-06-19 18:20 ` david
2007-06-20 8:41 ` Vladislav Bolkhovitin
2007-06-19 12:04 ` Chris Mason
2007-06-19 14:00 ` Vladislav Bolkhovitin
2007-06-19 18:24 ` david
2007-06-19 18:28 ` Philipp Matthias Hahn
2007-06-20 8:44 ` Vladislav Bolkhovitin
2007-06-20 9:18 ` Ph. Marek
-- strict thread matches above, loose matches on Subject: below --
2007-06-13 5:45 Albert Cahalan
2007-06-13 12:00 ` Chris Mason
2007-06-13 16:14 ` Albert Cahalan
2007-06-13 16:57 ` Chris Mason
2007-06-14 6:59 ` Albert Cahalan
2007-06-14 12:30 ` Chris Mason
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070612161029.GB28279@think.oraclecorp.com \
--to=chris.mason@oracle.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).