Examining a Next Generation Linux File System

Feb 3

Revising this blog is in order, but not to hide my mistakes I think. Rather to show them or what else I may have learned. So if you are still interested, stay tuned. (and look below under Solydx on an eeebox for the red text) I knew it was wrong but had to try it anyway.

  • Also SolydXK’s updates now give you btrfs3.17 over v3.16

Jan 31

Unsure if I will be needing to give a talk on this at the Feb 4th meeting, as there seems little interest.

  • With out a system capable of running Virtual Machine I do not see any interesting show and tell. I do not have a capable lap top, for this, and my workstation is hardly portable.
  • Also some of my clients are needing help and they take precedence.

Jan 30

Tried btrfs-convert on an old Virtualbox machine

  • after conversion, the grub boot did not fully work and had to figure out how to update grub instead of just grub-install (using live boot)

Updates Jan 29


Publish early and publish often, the saying goes. But I hold back with “When I have something to say, I will say it”

1024 x 1024 x 1024 is the number of bytes in a GiB? (1073741824 Bytes) Did I get that right?
Had to refine how I was partitioning a drive for manual installs so I would not create a bit of a mess.
I would suggest hooking only one drive to your test system, 
to minimize risk of damage to existing installs. Just a thought.

Poking around with using btrfs more is driving me towards the quest of the ultimate user experiences. I would call this: Towards the Parametrically Driven Ultimate GNU/Linux Install. I have tried out a lot of different Linux distributions lately. The whole experience has left me both exhilarated and humbled.

  • Some progress instead of purely more questions
  • Leaving room for a bios_grub partition might be very important to keeping your btrfs GNU/Linux system grub boot-able?
  • Doing these non standard installs tends to prove out how much I do or don’t know, or if I was just lucky sometimes. Think I should try another install to see how repeatable I find things
  • My workstation is still running on ext4 for / and /home with added raid1 and raid10 btrfs arrays, all of which are running lzo compression. May wait longer to convert to / btrfs on my main system!
  • I have two physical systems running on “btrfs only” that I am happy enough with now
  • Trisquel on a netbook
 This is a refreshing distro, 
I really like how their Linux-libre Kernel 3.13 with lowlatency 
and bfq scheduling feels with btrfs root installed.
root@mel-1005PE:/home/mel# findmnt /
/ /dev/sda1[/@] btrfs rw,relatime,space_cache
root@mel-1005PE:/home/mel# findmnt /home/
/home /dev/sda1[/@home] btrfs rw,relatime,space_cache
root@mel-1005PE:/home/mel# mount
/dev/sda1 on / type btrfs (rw,subvol=@)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/cgroup type tmpfs (rw)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
none on /run/user type tmpfs (rw,noexec,nosuid,nodev,size=104857600,mode=0755)
none on /sys/fs/pstore type pstore (rw)
/dev/sda1 on /home type btrfs (rw,subvol=@home)
systemd on /sys/fs/cgroup/systemd type cgroup (rw,noexec,nosuid,nodev,none,name=systemd)
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,user=mel

Be very nice when their Kernel is next updated to more modern. Of all the installers, I think this one played nicest with an btrfs install I asked for.


  • Solydx on an eeebox
    • This one is installed on the single HDD (320 GB)
    • It is configured with 155GB partitions 1 and 2 with a 10GB swap partition  * (This is a bad idea, the self healing gained is NOT worth the pain of worse than poor hard drive performance – I no longer have this configuration)
    • So instead of the mirror listed below, / btrfs will be set up under one partition and backup down to an external drive. If this device could take more than one drive, raid1 mirroring could be an interesting option to try, but its limited to only one drive.
    • This gave me a btrfs raid1 mirror operating system File System that is boot-able from both /dev/sda[1 and 2] just using the grub menu
    eeebox mel # gdisk /dev/sda
    GPT fdisk (gdisk) version 0.8.10
    Partition table scan:
     MBR: protective
     BSD: not present
     APM: not present
     GPT: present
    Found valid GPT with protective MBR; using GPT.
    Command (? for help): p
    Disk /dev/sda: 625142448 sectors, 298.1 GiB
    Logical sector size: 512 bytes
    Disk identifier (GUID): 86B538AB-BE5D-4CB8-B0F0-273EC36EBF1D
    Partition table holds up to 128 entries
    First usable sector is 34, last usable sector is 625142414
    Partitions will be aligned on 2048-sector boundaries
    Total free space is 2669 sectors (1.3 MiB)
    Number Start (sector) End (sector) Size Code Name
     1 2048 302735359 144.4 GiB EF02 primary
     2 302735360 605468671 144.4 GiB EF02 primary
     3 605468672 625141759 9.4 GiB 8200
    l list known partition types
    ef00 EFI System ef01 MBR partition scheme ef02 BIOS boot partition
    eeebox mel # parted /dev/sda
    GNU Parted 3.2
    Using /dev/sda
    Welcome to GNU Parted! Type 'help' to view a list of commands.
    (parted) p
    Model: ATA ST9320423AS (scsi)
    Disk /dev/sda: 320GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags: pmbr_boot
    Number Start End Size File system Name Flags
     1 1049kB 155GB 155GB btrfs primary bios_grub
     2 155GB 310GB 155GB btrfs primary bios_grub
     3 310GB 320GB 10.1GB linux-swap(v1)
    eeebox mel # df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/sda1 289G 13G 275G 5% /
    udev 10M 0 10M 0% /dev
    tmpfs 1.5G 18M 1.5G 2% /run
    tmpfs 3.8G 76K 3.8G 1% /dev/shm
    tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup
    tmpfs 100M 12K 100M 1% /run/user
    tmpfs 5.0M 4.0K 5.0M 1% /run/lock
    eeebox mel # btrfs fi df /
    Data, RAID1: total=7.00GiB, used=6.04GiB
    Data, single: total=8.00MiB, used=0.00
    System, RAID1: total=8.00MiB, used=16.00KiB
    System, single: total=4.00MiB, used=0.00
    Metadata, RAID1: total=1.00GiB, used=226.25MiB
    Metadata, single: total=8.00MiB, used=0.00
    unknown, single: total=80.00MiB, used=0.00
  • Also a virtual box version of openSUSE with not only / btrfs, but also /home btrfs instead of the default xfs that SUSE pics.
  • Since this seemed much like uncharted territory, I did many trials to see if I had things some what figured out. Found more questions as I looked, but did make a lot of headway. I could bring stuff to the meeting Feb 4th, but IS there any interest?
  • One thing I thought might be fun is to install btrfs system to a usb drive
  • What was interesting was the odd ball troubles I ran into forced me to see the basics more clearly. I will continue to play with btrfs and learn more
  • Is kernel version 3.19 still due to come out the beginning of February? I wanted to see if I can plan a live morph of my raid1 and raid10 into a raid5 hard drive array (6 disks) Then maybe into a raid6 to try that too.

Who May Be Interested in Attending?

Desktop 1_003

btrfs Only (No EXT)

At first I thought; Anyone who is interested in some way with modern computers.

Btrfs is or could be used in everything from small devices to servers and lots in between. It could also make it easier to breath some new life into older equipment for the hobbyist.

My Data and OS Backup Plan Is In Place…. Is Yours?

I took other peoples advice and had backups before trying things out. Also, I used new virtual machine for installs I was willing to loose.

My Motivations

  • I wanted to try out… as in get my hands on as many cool new features of the B-Tree File System that I could
  • Next, to share my endeavors before the next new Linux Kernel comes out and see if any one else has been delving it to it
  • Finally, to share anything I find that others may find interesting or useful
  • I did discover learning and using btrfs to be some work (*) but a huge amount of fun too!  (because it works so differently)
  • The new Linux kernel coming out late January may fix btrfs, but what will the Linux distributions do with making front ends fore using it!

B-Tree File System (btrfs)

Newer Linux Kenels are advancing, and I could not wait. B-Tree FS, butterfs, better fs, or just btrfs.
Nicknames aside,

It is turning out to be a lot of fun learning the new ways of thinking about file systems. The benefits list has to be seen in real life to be more fully appreciated.
Come and share your experiences with us too. I have been using btrfs_3.16 lately. More on version 3.19 later
Thanks Anand, for getting me started a few months back with your intro demo, btrfs appears less unstable than claimed (with a modern enough kernel).

  • As I figure things out I will update you on what I think I know & don’t know.
  • Next demo, if there is one. will include or mostly be seeing it in action

Looking at ZFS in Comparison

ZFS or FreeBSD is great way to protect your data with redundant data pools. New groups of redundant arrays can be added, changing the structure of existing arrays would involve backing up and moving the data after re-silvering the data arrays.

At risk of being blunt with btrfs  things are done mostly on live system. Looking forward to what seems to be possible.


Some of My Goals

  • Running btrfs on the operating systems root file system. [ My first success waslon ext2 /boot and btrfs / ][most likely the trick will be to get the installer to accept btrfs as an accepted file format
  • Use btrfs send/receive for high speed block differential backups
  • Have Rollbacks Available [ some work to do… openSUSE 13.2 has it already, see snapper  ]
  • Fast and Easy Device Setups and On The Fly Changes [ built in ]
  • Make Summary of Useful Commands and Examples [coming]
  • btrfs3.16: raid0, raid1, raid10  btrfs3.19 coming with major improvements to raid5 and 6
  • Running btrfs raid5and6 arrays [on btrfs 3.17 DONE on VirtualBox – 6 10GB drives] [On btrfs 3.19 next on spinning  drives]
  • How to think about free space
  • Update blog more

Who and How Are Companies and People using btrfs?

  • Facebook
  • Fujitsu
  • Fusion-IO
  • Intel
  • Linux Foundation
  • Netgear
  • Oracle is using it in a production product
  • Red Hat
  • Stato
  • SUSE / Novell openSUSE 13.2 uses / btrfs on defaullt install of workstation

How all of these companies use btrfs in their products is noteworthy


How I Approached Looking at This Moving Target

The man pages for btrfs_3.16 indicated some of the syntax changes, and looking at what others have been doing [references to follow]

[this blog is presently dynamic and not completed]

I am working on this after the January 7th Meeting too. I can share more with anyone who may be interested.

Some results?

Got btrfs install on root first on Solydxk by tricking the installer and Grub2 to cooperate


Presentation Not far enough along for show and tell January 7th. The raw video capture proof was not able to grab peoples interest. This idea has to have an Operating System people can see running in real time. [Will be adding test snippets to make following along easier.]

btrfs is more a verb than a noun.

Leave a Reply