2009-01-07 22:54:24 +08:00
|
|
|
|
|
|
|
BTRFS
|
|
|
|
=====
|
|
|
|
|
|
|
|
Btrfs is a new copy on write filesystem for Linux aimed at
|
|
|
|
implementing advanced features while focusing on fault tolerance,
|
|
|
|
repair and easy administration. Initially developed by Oracle, Btrfs
|
|
|
|
is licensed under the GPL and open for contribution from anyone.
|
|
|
|
|
|
|
|
Linux has a wealth of filesystems to choose from, but we are facing a
|
|
|
|
number of challenges with scaling to the large storage subsystems that
|
|
|
|
are becoming common in today's data centers. Filesystems need to scale
|
|
|
|
in their ability to address and manage large storage, and also in
|
|
|
|
their ability to detect, repair and tolerate errors in the data stored
|
|
|
|
on disk. Btrfs is under heavy development, and is not suitable for
|
|
|
|
any uses other than benchmarking and review. The Btrfs disk format is
|
|
|
|
not yet finalized.
|
|
|
|
|
|
|
|
The main Btrfs features include:
|
|
|
|
|
|
|
|
* 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)
|
|
|
|
* Compression
|
|
|
|
* Integrated multiple device support, with several raid algorithms
|
|
|
|
* Online filesystem check (not yet implemented)
|
|
|
|
* Very fast offline filesystem check
|
|
|
|
* Efficient incremental backup and FS mirroring (not yet implemented)
|
|
|
|
* Online filesystem defragmentation
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MAILING LIST
|
|
|
|
============
|
|
|
|
|
|
|
|
There is a Btrfs mailing list hosted on vger.kernel.org. You can
|
|
|
|
find details on how to subscribe here:
|
|
|
|
|
|
|
|
http://vger.kernel.org/vger-lists.html#linux-btrfs
|
|
|
|
|
|
|
|
Mailing list archives are available from gmane:
|
|
|
|
|
|
|
|
http://dir.gmane.org/gmane.comp.file-systems.btrfs
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IRC
|
|
|
|
===
|
|
|
|
|
|
|
|
Discussion of Btrfs also occurs on the #btrfs channel of the Freenode
|
|
|
|
IRC network.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
UTILITIES
|
|
|
|
=========
|
|
|
|
|
|
|
|
Userspace tools for creating and manipulating Btrfs file systems are
|
|
|
|
available from the git repository at the following location:
|
|
|
|
|
2011-11-17 00:35:37 +08:00
|
|
|
http://git.kernel.org/?p=linux/kernel/git/mason/btrfs-progs.git
|
|
|
|
git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-progs.git
|
2009-01-07 22:54:24 +08:00
|
|
|
|
|
|
|
These include the following tools:
|
|
|
|
|
|
|
|
mkfs.btrfs: create a filesystem
|
|
|
|
|
|
|
|
btrfsctl: control program to create snapshots and subvolumes:
|
|
|
|
|
|
|
|
mount /dev/sda2 /mnt
|
|
|
|
btrfsctl -s new_subvol_name /mnt
|
|
|
|
btrfsctl -s snapshot_of_default /mnt/default
|
|
|
|
btrfsctl -s snapshot_of_new_subvol /mnt/new_subvol_name
|
|
|
|
btrfsctl -s snapshot_of_a_snapshot /mnt/snapshot_of_new_subvol
|
|
|
|
ls /mnt
|
|
|
|
default snapshot_of_a_snapshot snapshot_of_new_subvol
|
|
|
|
new_subvol_name snapshot_of_default
|
|
|
|
|
|
|
|
Snapshots and subvolumes cannot be deleted right now, but you can
|
|
|
|
rm -rf all the files and directories inside them.
|
|
|
|
|
|
|
|
btrfsck: do a limited check of the FS extent trees.
|
|
|
|
|
|
|
|
btrfs-debug-tree: print all of the FS metadata in text form. Example:
|
|
|
|
|
|
|
|
btrfs-debug-tree /dev/sda2 >& big_output_file
|