| David Woodhouse | 709ac06 | 2009-01-07 09:54:24 -0500 | [diff] [blame] | 1 |  | 
|  | 2 | BTRFS | 
|  | 3 | ===== | 
|  | 4 |  | 
|  | 5 | Btrfs is a new copy on write filesystem for Linux aimed at | 
|  | 6 | implementing advanced features while focusing on fault tolerance, | 
|  | 7 | repair and easy administration. Initially developed by Oracle, Btrfs | 
|  | 8 | is licensed under the GPL and open for contribution from anyone. | 
|  | 9 |  | 
|  | 10 | Linux has a wealth of filesystems to choose from, but we are facing a | 
|  | 11 | number of challenges with scaling to the large storage subsystems that | 
|  | 12 | are becoming common in today's data centers. Filesystems need to scale | 
|  | 13 | in their ability to address and manage large storage, and also in | 
|  | 14 | their ability to detect, repair and tolerate errors in the data stored | 
|  | 15 | on disk.  Btrfs is under heavy development, and is not suitable for | 
|  | 16 | any uses other than benchmarking and review. The Btrfs disk format is | 
|  | 17 | not yet finalized. | 
|  | 18 |  | 
|  | 19 | The main Btrfs features include: | 
|  | 20 |  | 
|  | 21 | * Extent based file storage (2^64 max file size) | 
|  | 22 | * Space efficient packing of small files | 
|  | 23 | * Space efficient indexed directories | 
|  | 24 | * Dynamic inode allocation | 
|  | 25 | * Writable snapshots | 
|  | 26 | * Subvolumes (separate internal filesystem roots) | 
|  | 27 | * Object level mirroring and striping | 
|  | 28 | * Checksums on data and metadata (multiple algorithms available) | 
|  | 29 | * Compression | 
|  | 30 | * Integrated multiple device support, with several raid algorithms | 
|  | 31 | * Online filesystem check (not yet implemented) | 
|  | 32 | * Very fast offline filesystem check | 
|  | 33 | * Efficient incremental backup and FS mirroring (not yet implemented) | 
|  | 34 | * Online filesystem defragmentation | 
|  | 35 |  | 
|  | 36 |  | 
|  | 37 |  | 
|  | 38 | MAILING LIST | 
|  | 39 | ============ | 
|  | 40 |  | 
|  | 41 | There is a Btrfs mailing list hosted on vger.kernel.org. You can | 
|  | 42 | find details on how to subscribe here: | 
|  | 43 |  | 
|  | 44 | http://vger.kernel.org/vger-lists.html#linux-btrfs | 
|  | 45 |  | 
|  | 46 | Mailing list archives are available from gmane: | 
|  | 47 |  | 
|  | 48 | http://dir.gmane.org/gmane.comp.file-systems.btrfs | 
|  | 49 |  | 
|  | 50 |  | 
|  | 51 |  | 
|  | 52 | IRC | 
|  | 53 | === | 
|  | 54 |  | 
|  | 55 | Discussion of Btrfs also occurs on the #btrfs channel of the Freenode | 
|  | 56 | IRC network. | 
|  | 57 |  | 
|  | 58 |  | 
|  | 59 |  | 
|  | 60 | UTILITIES | 
|  | 61 | ========= | 
|  | 62 |  | 
|  | 63 | Userspace tools for creating and manipulating Btrfs file systems are | 
|  | 64 | available from the git repository at the following location: | 
|  | 65 |  | 
| Arnd Hannemann | b52f75a | 2011-11-16 17:35:37 +0100 | [diff] [blame] | 66 | http://git.kernel.org/?p=linux/kernel/git/mason/btrfs-progs.git | 
|  | 67 | git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-progs.git | 
| David Woodhouse | 709ac06 | 2009-01-07 09:54:24 -0500 | [diff] [blame] | 68 |  | 
|  | 69 | These include the following tools: | 
|  | 70 |  | 
|  | 71 | mkfs.btrfs: create a filesystem | 
|  | 72 |  | 
|  | 73 | btrfsctl: control program to create snapshots and subvolumes: | 
|  | 74 |  | 
|  | 75 | mount /dev/sda2 /mnt | 
|  | 76 | btrfsctl -s new_subvol_name /mnt | 
|  | 77 | btrfsctl -s snapshot_of_default /mnt/default | 
|  | 78 | btrfsctl -s snapshot_of_new_subvol /mnt/new_subvol_name | 
|  | 79 | btrfsctl -s snapshot_of_a_snapshot /mnt/snapshot_of_new_subvol | 
|  | 80 | ls /mnt | 
|  | 81 | default snapshot_of_a_snapshot snapshot_of_new_subvol | 
|  | 82 | new_subvol_name snapshot_of_default | 
|  | 83 |  | 
|  | 84 | Snapshots and subvolumes cannot be deleted right now, but you can | 
|  | 85 | rm -rf all the files and directories inside them. | 
|  | 86 |  | 
|  | 87 | btrfsck: do a limited check of the FS extent trees. | 
|  | 88 |  | 
|  | 89 | btrfs-debug-tree: print all of the FS metadata in text form.  Example: | 
|  | 90 |  | 
|  | 91 | btrfs-debug-tree /dev/sda2 >& big_output_file |