Skip Navigation

What Filesystem?

What filesystem is currently best for a single nvme drive with regard to performance read/write as well as stability/no file loss? ext4 seems very old, btrfs is used by RHEL, ZFS seems to be quite good... what do people tend to use nowadays? What is an arch users go-to filesystem?

120 comments
  • Been using BTRFS for all disks and purposes for a few years, I would recommend it with the requirement that you research it first. There are things you should know, like how/when to disable CoW, how to manage snapshots, how to measure filesystem use, and what the risks/purposes of the various btrfs operations are. If you know enough to avoid doing something bad with it, it's very unlikely to break on you.

  • Ext4 is probably going to be the fastest. When it comes to reliability, old is good. If you don't need any of the features Btrfs and ZFS, you'll reap higher performance using Ext4. Otherwise ZFS is more feature-complete compared to Btrfs, however it's generally not available as root fs option in OS installers. Ubuntu used to have it as an experimental option but I think that's gone now. If you know what you're doing you can use it as a root fs. Personally I'm using Ext4 on LVMRAID on a 2-way NVMe mirror. I might be switching to ZFS on root when I get to rebuild this machine. All my storage is using ZFS.

  • I use ext4 for my desktop and zfs for my media server. Ext4 is faster, ZFS is more accurate and less corruptable.

  • It depends, for a normal user? Ext4, maybe btrfs because in terms of stability is the best {but u lose some functions like the ability to make a swap file, wich today isn't really that useful, but u lose the ability to make one). Want something really fast fort large files? ZFS, but if u experience an energy loss it could be really catastrophic.

    Ext in general is so good that even to this day android it's still using EXT2, 2!

      • First of all, thanks this r news for me. But I don't think is a good idea to use the swap file in btrfs.

        It is supported since kernel 5.0

        There are some limitations of the implementation in BTRFS and Linux swap subsystem:

         undefined
                filesystem - must be only single device
        
            filesystem - must have only single data profile
        
            subvolume - cannot be snapshotted if it contains any active swapfiles
        
            swapfile - must be preallocated (i.e. no holes)
        
            swapfile - must be NODATACOW (i.e. also NODATASUM, no compression)
        
        
          

        With active swapfiles, the following whole-filesystem operations will skip swapfile extents or may fail:

         undefined
                balance - block groups with extents of any active swapfiles are skipped and reported, the rest will be processed normally
        
            resize grow - unaffected
        
            resize shrink - works as long as the extents of any active swapfiles are outside of the shrunk range
        
            device add - if the new devices do not interfere with any already active swapfiles this operation will work, though no new swapfile can be activated afterwards
        
            device delete - if the device has been added as above, it can be also deleted
        
            device replace - ditto
        
          
  • If you really care about high performance on an SSD, use f2fs. This filesystem was made for SSDs specifically. Though ext4 and xfs are also really solid and shouldn't be that much slower. But if you do care about squeezing out every bit out of performance, f2fs is definitely worth trying.

    It's a bit more experimental, yet I've been daily driving it for maybe a year or so at this point and it never caused trouble once, even with cutting edge mount options.

  • oh I just read up on this last knight. Yes ext4 is old but it is used because it is still works quite well. btrfs, dis anyone say that as butfarts, can handle much larger partitions ext4 maxes out at a few tb while btfrs can get much larger. ZFS can handle a around a billion tb but it needs a lot more resources to to even start

    • ext4 maxes out at a few tb

      Max filesystem size is 1 EiB = 1048576 TiB.

      More than enough!

120 comments