Is btrfs production ready?

220

Solution 1

Speaking of 2014: no, it is definitely not production ready yet!

Performance of it is still sub par in some areas, common commands like "df" are still being broken on purpose (you need "btrfs fi" instead), and I still wouldn't trust it my important data.

Also if you are in need of a filesystem putting your images of virtual machines on or databases, you should simply skip it. Btrfs is not really suited very well for that kind of stuff, that's stuff you should put on Ext3/4 or XFS instead.

Give it two more years or three to mature and then it might be in a production ready state.

If you are really in need of a production ready COW file system right now, take ZFS! You could use the native Linux port or just an OS which supports it straight from the Kernel like FreeBSD.

And take a look at the official Gotchas! page, where the developers are publishing the actual gotchas and how to avoid those:

https://btrfs.wiki.kernel.org/index.php/Gotchas

Also keep in mind that the official advise from the getting started page until today is to keep a backup of your important data and to be prepared for all kind of hiccups (https://btrfs.wiki.kernel.org/index.php/Getting_started).

They do consider the core functionality by now to be stable enough for daily use, but they are still fiddling around with newer features and if newer features do come up, they will definitely need a few releases (meaning six two twelth months I presume) until they are mature enough.

Edit: Russel Coker from Australia has been using Btrfs for some time and posts his experiences from time to time (e.g. http://etbe.coker.com.au/2014/07/31/btrfs-status-july-2014/). He uses it on some of this servers and it shows though while it is not all doom and gloom, you normally need to stay with the most recent kernels e.g., something that's not easy to do on a server, and yes, there are still problems around.

Also worthwhile to read some of the comments, too.

So this means by definition it is still being work in progress, which never had time until today to mature as a whole.

Edit: according to this blog post even with kernel 3.16 Btrfs can still deadlock. http://marc.merlins.org/perso/btrfs/post_2014-10-05_Btrfs-Tips_-Catch-Btrfs-Deadlocks.html

Solution 2

Personally, I would consider it production ready when (and if) the likes of Canonical and Red Hat implement it in their supported products. I'm sure it'll all work fine, most of the time, but I would say that for putting it in production it is a bit too early still.

Update: Assuming people will come here more often now that Oracle released the UEK R2 with btrfs support (20120315): no, the fact that Oracle now supports it, does not make it thoroughly tested enough for an enterprise environment. The fact that there still isn't a publicly available fsck tool and it still hasn't had sturdy testing in the likes of OpenSuSE, Fedora and all doesn't help either. Stay away for now.

Solution 3

In short no.

• The only RAID support is currently 0,1,10.
• No file system repair is available (yet)

Checkout this podcast with one of the developers...very cool things are coming soon!
http://streaming.oracle.com/ebn/podcasts/media/10491325_Btrfs_071311.mp3

I am planning on installing on a home VM without important data for testing, but that's as comfortable as I can be with it's current state.

Solution 4

if you have backups, and can tolerate a few hours downtime, got for it. I'm planning to use it on my next workstations. Not servers yet, because most of my volumes are several terabytes, so restoring from backup takes too long time.

Solution 5

For RHEL7 Red Hat is calling btrfs a technology preview and XFS is the default. Make of that what you will.

Share:
220

Related videos on Youtube

user3614014
Author by

user3614014

Updated on September 18, 2022

Comments

  • user3614014
    user3614014 over 1 year

    I am trying to build a docker-registry server from source (not as a container) on Ubuntu 14.04.1. I was able to get most of the way there using the instructions found on digitalocean.

    I am able to curl http://localhost:5000 and https://user:password@localhost:8000 with no problems

    When I try to open a web browser to see hopefully more than just that, that is when the issues seem to happen.

    Here is my docker-registry file in /etc/nginx/sites-available/:

    # For versions of Nginx > 1.3.9 that include chunked transfer encoding support
    # Replace with appropriate values where necessary
    upstream docker-registry {
    server 192.168.x.x:5000;
    }
    server {
    listen 8000;
    server_name docker-registry;
    ssl on;
    ssl_certificate /etc/nginx/ssl/docker-registry.crt;
    ssl_certificate_key /etc/nginx/ssl/docker-registry.key;
    proxy_set_header Host       $http_host;   # required for Docker client sake
    X-Real-IP  $remote_addr; # pass on real client IP
    client_max_body_size 0; # disable any limits to avoid HTTP 413 for large image uploads
    # required to avoid HTTP 411: see Issue #1486 (https://github.com/dotcloud/docker/issues/1486)
    chunked_transfer_encoding on;
    location / {
     # let Nginx know about our auth file
     auth_basic              "Restricted";
     auth_basic_user_file    docker-registry.htpasswd;
    proxy_pass http://docker-registry;
     }
    location /_ping {
     auth_basic off;
     proxy_pass http://docker-registry;
    }
    location /v1/_ping {
     auth_basic off;
     proxy_pass http://docker-registry;
     }
    }
    

    I have my docker registry stored locally in /var/docker-registry and ensured that it was readable by the www-data user. Why can I not see my images on the web browser?

    If I tag an image and push it to my repository it works, I can see it in the web browser:

    https://192.168.x.x:8000/v1/repositories/ubuntu-test/tags/latest
    

    I see the following:

     "5ba9dab47459d81c0037ca3836a368a4f8ce5050505ce89720e1fb8839ea048a"
    

    When I try to get to:

    https://192.168.x.x:8000/v1
    

    Or:

     https://192.168.x.x:8000/v1/repositories
    

    Or:

     https://192.168.x.x:8000/v1/images
    

    I get a "not found" error

    How would I be able to see everything in my /var/docker-registry folder (which is where these are stored....and yes, they are owned by the www-data user) through the web interface?

  • Steve-o
    Steve-o over 12 years
    You can sit btrfs above a RAID 5 device, the RAID 5 support listed in the wiki is about moving the multi-device support from the block layer to the file system.
  • Sirex
    Sirex over 12 years
    yea, but that's what i'd really want in it as a technology.
  • Janus Troelsen
    Janus Troelsen about 11 years
  • Janus Troelsen
    Janus Troelsen about 11 years
    btrfsck is now available
  • Michael Hampton
    Michael Hampton over 5 years
    In RHEL 7.4 Red Hat deprecated btrfs, and will no longer ship it in RHEL 8.
  • yagmoth555
    yagmoth555 over 5 years
    Hi, please extend your answer, as if you mean that now fedora use brtfs by default, it could be a valid answer, as else it look more a comment. Thanks !
  • endolith
    endolith over 5 years
    It would be nice if you could back this up with... anything