Announcement

Collapse
No announcement yet.

The Good & Bad Of Btrfs In A Production World

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • The Good & Bad Of Btrfs In A Production World

    Phoronix: The Good & Bad Of Btrfs In A Production World

    A web hosting company has publicly shared their thoughts on the Btrfs file-system for Linux. While often discussed as the next-generation Linux file-system, Btrfs isn't fully baked for use in a production world quite yet...

    http://www.phoronix.com/vr.php?view=MTM1OTY

  • #2
    What kernel and btrfs-progs?

    With btrfs in active development, you need to be running a leading edge (right now, 3.9.0-rc8) kernel, or patch with the latest btrfs-next and btrfs-progs. A number of the problems they report sound familiar, and have no doubt already been corrected.

    Comment


    • #3
      Hats off to Anchor for this report!!

      Comment


      • #4
        I like the little note they make in their summary...

        btrfs has actually detected single-bit corruption in an underlying hardware RAID volume – that’s a win for data integrity!
        Single-bit corruption is, needless to say, awesome and good job to the btrfs devs for having the capabilities to detect it. Im a very happy btrfs user (home server)

        Comment


        • #5
          Needs a second look

          They didn't care to see if the bugs were fixed already?
          And their solution for hung snapshot tasks was to revert to a filesystem without snapshots?

          My favorite benefit is LZO compression If LZO was forced by default, I think BTRFS would be the default in more places by now as these tests would see great performance & smaller disk usage.

          Comment


          • #6
            Originally posted by snadrus View Post
            They didn't care to see if the bugs were fixed already?
            And their solution for hung snapshot tasks was to revert to a filesystem without snapshots?

            My favorite benefit is LZO compression If LZO was forced by default, I think BTRFS would be the default in more places by now as these tests would see great performance & smaller disk usage.
            what happened to lz4? lz4 should be even better.

            Comment


            • #7
              Pretty nice writeup. I imagine Anchor is at least partially bound to certain Kernel and userspace versions, due to whatever stable Linux distribution they're using for their production systems.

              I've personally found btrfs to be quite stable since the 3.8 Kernel, as well as faster due to things like the "turbo fsync" patch that are now in.

              Comment


              • #8

                Originally posted by mercutio View Post
                what happened to lz4? lz4 should be even better.
                It is in ZFS.

                Comment


                • #9
                  Umm.. BTRFS isn't ready for production environments yet, so why is that company complaining about it?.. BTRFS isn't officially stable yet.. Hell, even I am not going to switch to BTRFS until it is stable, and I am just a normal desktop user with nothing important on my computer.. And I have backups..

                  However, having said that, I think when BTRFS finally IS stable, it will literally be the coolest and best file-system on earth..

                  Comment


                  • #10
                    Originally posted by Baconmon View Post
                    Umm.. BTRFS isn't ready for production environments yet, so why is that company complaining about it?.. BTRFS isn't officially stable yet.. Hell, even I am not going to switch to BTRFS until it is stable, and I am just a normal desktop user with nothing important on my computer.. And I have backups..
                    Then how do you suggest to MAKE it "ready for production environments"? How would you make ANY software ready for anything? At some point you just have to go out and employ it in a real environment. If nobody ever did that, and we all sit on our asses waiting for someone and something to declare something ultimatly stable we'd never get any new software.

                    So kudos to those guys (who btw aren't "complaining" at all!) who did exactly the right thing at the right time. And they ran into some snags and bugs (which they hopefully reported) and shared their experience. As a result we're now one step closer to actually having it ready for production environments.

                    Comment


                    • #11
                      Originally posted by Baconmon View Post
                      Umm.. BTRFS isn't ready for production environments yet, so why is that company complaining about it?.. BTRFS isn't officially stable yet.. Hell, even I am not going to switch to BTRFS until it is stable, and I am just a normal desktop user with nothing important on my computer.. And I have backups..

                      However, having said that, I think when BTRFS finally IS stable, it will literally be the coolest and best file-system on earth..
                      no one is complaining... *sigh*

                      they did an analysis oriented on their needs at decided to share their findings. what's wrong with this? better say thank you for the time and work in doing this.

                      critics or naming issues is not equal to complaining!!!!!!!

                      Comment


                      • #12
                        Originally posted by mercutio View Post
                        what happened to lz4? lz4 should be even better.
                        It's not merged yet:
                        https://btrfs.wiki.kernel.org/index....merged_Patches

                        It was very active just 2 months ago. It may make it in yet.

                        Comment


                        • #13
                          LZ4 is made by FreeBSD developers. Another win for open source if Linux adopts LZ4!

                          Interesting story by Anchor. Sad they switched to ext4 at the end, because of all problems....

                          Comment


                          • #14
                            not sure how btrfs could be used in production:

                            for the past 2-3 (?) years I've been trying to use btrfs on (additional) data backup partitions, my home partition and since then it only has somewhat managed to persist on my portage-partition

                            one of the reasons is that every now and then I get errors like the following:

                            [ 248.887953] btrfs: use lzo compression
                            [ 248.887961] btrfs: enabling inode map caching
                            [ 248.887964] btrfs: not using ssd allocation scheme
                            [ 248.887966] btrfs: disk space caching is enabled
                            [ 480.250067] INFO: task rsync:9289 blocked for more than 120 seconds.
                            [ 480.250072] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
                            [ 480.250075] rsync D ffff88023fc12b00 0 9289 9288 0x00000008
                            [ 480.250081] ffff88023290e930 0000000000000082 ffffffff81c14440 ffff88015e4d5fd8
                            [ 480.250086] ffff88015e4d5fd8 ffff88015e4d5fd8 0000000000078001 ffff88015e4d5fd8
                            [ 480.250090] ffff88021d096800 ffff88021d096ae8 ffff88015e4d5cc8 ffff88015e4d5c70
                            [ 480.250094] Call Trace:
                            [ 480.250105] [<ffffffff8138d813>] ? btrfs_find_free_ino+0xb3/0x140
                            [ 480.250111] [<ffffffff810a9040>] ? wake_up_bit+0x20/0x20
                            [ 480.250116] [<ffffffff813a53ec>] ? btrfs_create+0x4c/0x1e0
                            [ 480.250122] [<ffffffff81173e21>] ? vfs_create+0x61/0xe0
                            [ 480.250126] [<ffffffff81174872>] ? do_last+0x9d2/0xe70
                            [ 480.250131] [<ffffffff81174dbd>] ? path_openat+0xad/0x4e0
                            [ 480.250137] [<ffffffff81140727>] ? handle_pte_fault+0x87/0x880
                            [ 480.250142] [<ffffffff811757c3>] ? do_filp_open+0x33/0x80
                            [ 480.250148] [<ffffffff81181777>] ? __alloc_fd+0x97/0x120
                            [ 480.250154] [<ffffffff81166b7f>] ? do_sys_open+0xdf/0x1b0
                            [ 480.250160] [<ffffffff817bce16>] ? system_call_fastpath+0x1a/0x1f
                            [ 600.043537] INFO: task btrfs-transacti:8924 blocked for more than 120 seconds.
                            [ 600.043542] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
                            [ 600.043545] btrfs-transacti D ffff88023fc92b00 0 8924 2 0x00000008
                            [ 600.043551] ffff880219ee4a40 0000000000000046 ffff880236875cd0 ffff88021c053fd8
                            [ 600.043555] ffff88021c053fd8 ffff88021c053fd8 0000000000000001 ffff88021c053fd8
                            [ 600.043560] ffff880152751e60 ffff88021c053e00 ffff88021b3a2000 ffff8801526a2078
                            [ 600.043564] Call Trace:
                            [ 600.043575] [<ffffffff817b94c9>] ? schedule_timeout+0x239/0x340
                            [ 600.043582] [<ffffffff8137106d>] ? btrfs_put_tree_mod_seq+0x10d/0x150
                            [ 600.043588] [<ffffffff813adca4>] ? btrfs_run_ordered_operations+0x214/0x2c0
                            [ 600.043593] [<ffffffff81395f71>] ? btrfs_commit_transaction+0x221/0xa70
                            [ 600.043599] [<ffffffff810a9040>] ? wake_up_bit+0x20/0x20
                            [ 600.043603] [<ffffffff81396850>] ? start_transaction+0x90/0x500
                            [ 600.043608] [<ffffffff8138e895>] ? transaction_kthread+0x185/0x220
                            [ 600.043613] [<ffffffff8138e710>] ? __setup_root.isra.37+0x310/0x310
                            [ 600.043617] [<ffffffff810a841f>] ? kthread+0xaf/0xc0
                            [ 600.043621] [<ffffffff810a8370>] ? kthread_create_on_node+0x120/0x120
                            [ 600.043626] [<ffffffff817bcd6c>] ? ret_from_fork+0x7c/0xb0
                            [ 600.043630] [<ffffffff810a8370>] ? kthread_create_on_node+0x120/0x120
                            [ 600.043646] INFO: task rsync:9289 blocked for more than 120 seconds.
                            [ 600.043647] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
                            [ 600.043649] rsync D ffff88023fc12b00 0 9289 9288 0x00000008
                            [ 600.043654] ffff88023290e930 0000000000000082 ffffffff81c14440 ffff88015e4d5fd8
                            [ 600.043658] ffff88015e4d5fd8 ffff88015e4d5fd8 0000000000078001 ffff88015e4d5fd8
                            [ 600.043662] ffff88021d096800 ffff88021d096ae8 ffff88015e4d5cc8 ffff88015e4d5c70
                            [ 600.043666] Call Trace:
                            [ 600.043671] [<ffffffff8138d813>] ? btrfs_find_free_ino+0xb3/0x140
                            [ 600.043676] [<ffffffff810a9040>] ? wake_up_bit+0x20/0x20
                            [ 600.043680] [<ffffffff813a53ec>] ? btrfs_create+0x4c/0x1e0
                            [ 600.043686] [<ffffffff81173e21>] ? vfs_create+0x61/0xe0
                            [ 600.043691] [<ffffffff81174872>] ? do_last+0x9d2/0xe70
                            [ 600.043696] [<ffffffff81174dbd>] ? path_openat+0xad/0x4e0
                            [ 600.043702] [<ffffffff81140727>] ? handle_pte_fault+0x87/0x880
                            [ 600.043707] [<ffffffff811757c3>] ? do_filp_open+0x33/0x80
                            [ 600.043713] [<ffffffff81181777>] ? __alloc_fd+0x97/0x120
                            [ 600.043718] [<ffffffff81166b7f>] ? do_sys_open+0xdf/0x1b0
                            [ 600.043723] [<ffffffff817bce16>] ? system_call_fastpath+0x1a/0x1f
                            [ 719.837149] INFO: task btrfs-transacti:8924 blocked for more than 120 seconds.
                            [ 719.837153] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
                            [ 719.837156] btrfs-transacti D ffff88023fc92b00 0 8924 2 0x00000008
                            [ 719.837162] ffff880219ee4a40 0000000000000046 ffff880236875cd0 ffff88021c053fd8
                            [ 719.837167] ffff88021c053fd8 ffff88021c053fd8 0000000000000001 ffff88021c053fd8
                            [ 719.837171] ffff880152751e60 ffff88021c053e00 ffff88021b3a2000 ffff8801526a2078
                            [ 719.837176] Call Trace:
                            [ 719.837187] [<ffffffff817b94c9>] ? schedule_timeout+0x239/0x340
                            [ 719.837193] [<ffffffff8137106d>] ? btrfs_put_tree_mod_seq+0x10d/0x150
                            [ 719.837199] [<ffffffff813adca4>] ? btrfs_run_ordered_operations+0x214/0x2c0
                            [ 719.837205] [<ffffffff81395f71>] ? btrfs_commit_transaction+0x221/0xa70
                            [ 719.837211] [<ffffffff810a9040>] ? wake_up_bit+0x20/0x20
                            [ 719.837215] [<ffffffff81396850>] ? start_transaction+0x90/0x500
                            [ 719.837220] [<ffffffff8138e895>] ? transaction_kthread+0x185/0x220
                            [ 719.837225] [<ffffffff8138e710>] ? __setup_root.isra.37+0x310/0x310
                            [ 719.837229] [<ffffffff810a841f>] ? kthread+0xaf/0xc0
                            [ 719.837233] [<ffffffff810a8370>] ? kthread_create_on_node+0x120/0x120
                            [ 719.837238] [<ffffffff817bcd6c>] ? ret_from_fork+0x7c/0xb0
                            [ 719.837242] [<ffffffff810a8370>] ? kthread_create_on_node+0x120/0x120
                            [ 719.837257] INFO: task rsync:9289 blocked for more than 120 seconds.
                            [ 719.837259] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
                            [ 719.837261] rsync D ffff88023fc12b00 0 9289 9288 0x00000008
                            [ 719.837266] ffff88023290e930 0000000000000082 ffffffff81c14440 ffff88015e4d5fd8
                            [ 719.837270] ffff88015e4d5fd8 ffff88015e4d5fd8 0000000000078001 ffff88015e4d5fd8
                            [ 719.837274] ffff88021d096800 ffff88021d096ae8 ffff88015e4d5cc8 ffff88015e4d5c70
                            [ 719.837278] Call Trace:
                            [ 719.837283] [<ffffffff8138d813>] ? btrfs_find_free_ino+0xb3/0x140
                            [ 719.837288] [<ffffffff810a9040>] ? wake_up_bit+0x20/0x20
                            [ 719.837292] [<ffffffff813a53ec>] ? btrfs_create+0x4c/0x1e0
                            [ 719.837298] [<ffffffff81173e21>] ? vfs_create+0x61/0xe0
                            [ 719.837303] [<ffffffff81174872>] ? do_last+0x9d2/0xe70
                            [ 719.837308] [<ffffffff81174dbd>] ? path_openat+0xad/0x4e0
                            [ 719.837314] [<ffffffff81140727>] ? handle_pte_fault+0x87/0x880
                            [ 719.837319] [<ffffffff811757c3>] ? do_filp_open+0x33/0x80
                            [ 719.837325] [<ffffffff81181777>] ? __alloc_fd+0x97/0x120
                            [ 719.837331] [<ffffffff81166b7f>] ? do_sys_open+0xdf/0x1b0
                            [ 719.837335] [<ffffffff817bce16>] ? system_call_fastpath+0x1a/0x1f
                            [ 839.630657] INFO: task btrfs-transacti:8924 blocked for more than 120 seconds.
                            [ 839.630662] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
                            [ 839.630665] btrfs-transacti D ffff88023fc92b00 0 8924 2 0x00000008
                            [ 839.630671] ffff880219ee4a40 0000000000000046 ffff880236875cd0 ffff88021c053fd8
                            [ 839.630676] ffff88021c053fd8 ffff88021c053fd8 0000000000000001 ffff88021c053fd8
                            [ 839.630680] ffff880152751e60 ffff88021c053e00 ffff88021b3a2000 ffff8801526a2078
                            [ 839.630684] Call Trace:
                            [ 839.630695] [<ffffffff817b94c9>] ? schedule_timeout+0x239/0x340
                            [ 839.630702] [<ffffffff8137106d>] ? btrfs_put_tree_mod_seq+0x10d/0x150
                            [ 839.630708] [<ffffffff813adca4>] ? btrfs_run_ordered_operations+0x214/0x2c0
                            [ 839.630713] [<ffffffff81395f71>] ? btrfs_commit_transaction+0x221/0xa70
                            [ 839.630719] [<ffffffff810a9040>] ? wake_up_bit+0x20/0x20
                            [ 839.630724] [<ffffffff81396850>] ? start_transaction+0x90/0x500
                            [ 839.630729] [<ffffffff8138e895>] ? transaction_kthread+0x185/0x220
                            [ 839.630733] [<ffffffff8138e710>] ? __setup_root.isra.37+0x310/0x310
                            [ 839.630737] [<ffffffff810a841f>] ? kthread+0xaf/0xc0
                            [ 839.630741] [<ffffffff810a8370>] ? kthread_create_on_node+0x120/0x120
                            [ 839.630747] [<ffffffff817bcd6c>] ? ret_from_fork+0x7c/0xb0
                            [ 839.630751] [<ffffffff810a8370>] ? kthread_create_on_node+0x120/0x120
                            [ 839.630766] INFO: task rsync:9289 blocked for more than 120 seconds.
                            [ 839.630768] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
                            [ 839.630770] rsync D ffff88023fc12b00 0 9289 9288 0x00000008
                            [ 839.630774] ffff88023290e930 0000000000000082 ffffffff81c14440 ffff88015e4d5fd8
                            [ 839.630778] ffff88015e4d5fd8 ffff88015e4d5fd8 0000000000078001 ffff88015e4d5fd8
                            [ 839.630783] ffff88021d096800 ffff88021d096ae8 ffff88015e4d5cc8 ffff88015e4d5c70
                            [ 839.630787] Call Trace:
                            [ 839.630792] [<ffffffff8138d813>] ? btrfs_find_free_ino+0xb3/0x140
                            [ 839.630796] [<ffffffff810a9040>] ? wake_up_bit+0x20/0x20
                            [ 839.630800] [<ffffffff813a53ec>] ? btrfs_create+0x4c/0x1e0
                            [ 839.630807] [<ffffffff81173e21>] ? vfs_create+0x61/0xe0
                            [ 839.630811] [<ffffffff81174872>] ? do_last+0x9d2/0xe70
                            [ 839.630816] [<ffffffff81174dbd>] ? path_openat+0xad/0x4e0
                            [ 839.630822] [<ffffffff81140727>] ? handle_pte_fault+0x87/0x880
                            [ 839.630827] [<ffffffff811757c3>] ? do_filp_open+0x33/0x80
                            [ 839.630833] [<ffffffff81181777>] ? __alloc_fd+0x97/0x120
                            [ 839.630839] [<ffffffff81166b7f>] ? do_sys_open+0xdf/0x1b0
                            [ 839.630843] [<ffffffff817bce16>] ? system_call_fastpath+0x1a/0x1f
                            [ 959.424100] INFO: task btrfs-transacti:8924 blocked for more than 120 seconds.
                            [ 959.424104] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
                            [ 959.424107] btrfs-transacti D ffff88023fc92b00 0 8924 2 0x00000008
                            [ 959.424113] ffff880219ee4a40 0000000000000046 ffff880236875cd0 ffff88021c053fd8
                            [ 959.424118] ffff88021c053fd8 ffff88021c053fd8 0000000000000001 ffff88021c053fd8
                            [ 959.424122] ffff880152751e60 ffff88021c053e00 ffff88021b3a2000 ffff8801526a2078
                            [ 959.424127] Call Trace:
                            [ 959.424138] [<ffffffff817b94c9>] ? schedule_timeout+0x239/0x340
                            [ 959.424144] [<ffffffff8137106d>] ? btrfs_put_tree_mod_seq+0x10d/0x150
                            [ 959.424150] [<ffffffff813adca4>] ? btrfs_run_ordered_operations+0x214/0x2c0
                            [ 959.424155] [<ffffffff81395f71>] ? btrfs_commit_transaction+0x221/0xa70
                            [ 959.424161] [<ffffffff810a9040>] ? wake_up_bit+0x20/0x20
                            [ 959.424166] [<ffffffff81396850>] ? start_transaction+0x90/0x500
                            [ 959.424170] [<ffffffff8138e895>] ? transaction_kthread+0x185/0x220
                            [ 959.424175] [<ffffffff8138e710>] ? __setup_root.isra.37+0x310/0x310
                            [ 959.424179] [<ffffffff810a841f>] ? kthread+0xaf/0xc0
                            [ 959.424183] [<ffffffff810a8370>] ? kthread_create_on_node+0x120/0x120
                            [ 959.424188] [<ffffffff817bcd6c>] ? ret_from_fork+0x7c/0xb0
                            [ 959.424193] [<ffffffff810a8370>] ? kthread_create_on_node+0x120/0x120
                            [ 959.424208] INFO: task rsync:9289 blocked for more than 120 seconds.
                            [ 959.424210] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
                            [ 959.424212] rsync D ffff88023fc12b00 0 9289 9288 0x00000008
                            [ 959.424216] ffff88023290e930 0000000000000082 ffffffff81c14440 ffff88015e4d5fd8
                            [ 959.424220] ffff88015e4d5fd8 ffff88015e4d5fd8 0000000000078001 ffff88015e4d5fd8
                            [ 959.424225] ffff88021d096800 ffff88021d096ae8 ffff88015e4d5cc8 ffff88015e4d5c70
                            [ 959.424229] Call Trace:
                            [ 959.424234] [<ffffffff8138d813>] ? btrfs_find_free_ino+0xb3/0x140
                            [ 959.424238] [<ffffffff810a9040>] ? wake_up_bit+0x20/0x20
                            [ 959.424242] [<ffffffff813a53ec>] ? btrfs_create+0x4c/0x1e0
                            [ 959.424249] [<ffffffff81173e21>] ? vfs_create+0x61/0xe0
                            [ 959.424253] [<ffffffff81174872>] ? do_last+0x9d2/0xe70
                            [ 959.424258] [<ffffffff81174dbd>] ? path_openat+0xad/0x4e0
                            [ 959.424264] [<ffffffff81140727>] ? handle_pte_fault+0x87/0x880
                            [ 959.424269] [<ffffffff811757c3>] ? do_filp_open+0x33/0x80
                            [ 959.424275] [<ffffffff81181777>] ? __alloc_fd+0x97/0x120
                            [ 959.424281] [<ffffffff81166b7f>] ? do_sys_open+0xdf/0x1b0
                            [ 959.424285] [<ffffffff817bce16>] ? system_call_fastpath+0x1a/0x1f
                            [ 1079.217632] INFO: task btrfs-transacti:8924 blocked for more than 120 seconds.
                            [ 1079.217637] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
                            [ 1079.217640] btrfs-transacti D ffff88023fc92b00 0 8924 2 0x00000008
                            [ 1079.217646] ffff880219ee4a40 0000000000000046 ffff880236875cd0 ffff88021c053fd8
                            [ 1079.217651] ffff88021c053fd8 ffff88021c053fd8 0000000000000001 ffff88021c053fd8
                            [ 1079.217655] ffff880152751e60 ffff88021c053e00 ffff88021b3a2000 ffff8801526a2078
                            [ 1079.217659] Call Trace:
                            [ 1079.217670] [<ffffffff817b94c9>] ? schedule_timeout+0x239/0x340
                            [ 1079.217677] [<ffffffff8137106d>] ? btrfs_put_tree_mod_seq+0x10d/0x150
                            [ 1079.217682] [<ffffffff813adca4>] ? btrfs_run_ordered_operations+0x214/0x2c0
                            [ 1079.217688] [<ffffffff81395f71>] ? btrfs_commit_transaction+0x221/0xa70
                            [ 1079.217694] [<ffffffff810a9040>] ? wake_up_bit+0x20/0x20
                            [ 1079.217698] [<ffffffff81396850>] ? start_transaction+0x90/0x500
                            [ 1079.217703] [<ffffffff8138e895>] ? transaction_kthread+0x185/0x220
                            [ 1079.217707] [<ffffffff8138e710>] ? __setup_root.isra.37+0x310/0x310
                            [ 1079.217711] [<ffffffff810a841f>] ? kthread+0xaf/0xc0
                            [ 1079.217715] [<ffffffff810a8370>] ? kthread_create_on_node+0x120/0x120
                            [ 1079.217721] [<ffffffff817bcd6c>] ? ret_from_fork+0x7c/0xb0
                            [ 1079.217725] [<ffffffff810a8370>] ? kthread_create_on_node+0x120/0x120
                            rsync simple stops, all disc activity ceases

                            this is a 3.8.10 kernel with btrfs-state of 3.9 kernel :/

                            and back I'm to ext4, xfs, ZFS, etc.


                            it's a shame reiser4 didn't made it into the mainline kernel - it's still way more mature & stable than reiser4

                            afaik I never or only once had data loss with it - whereas with btrfs several times already I didn't have access anymore or data corruption of data

                            Comment

                            Working...
                            X