5 ms·
IMO, it became stable somewhere between 2013 and 2016. I definitely haven't had any spontaneous corruption since at least 2016 (on multiple laptops and servers
by LukeShu 3y ago
IMO, it became stable somewhere between 2013 and 2016. I definitely haven't had any spontaneous corruption since at least 2016 (on multiple laptops and servers; btrfs volumes that mid-double-digit of terabytes)
That said,
- My BDB and SQLite databases tend to corrupt if my laptop battery dies and they're on a volume that's not on LUKS.
- `btrfs check` (fsck), `btrfs rescue`, and `btrfs restore` are IMO not up to snuff if you do encounter corruption (caused by something else, like a failing drive). (But I'm working on that https://git.lukeshu.com/btrfs-progs-ng/ https://git.lukeshu.com/btrfs-progs-ng/ !)
- `docker build` is weirdly slow on btrfs, I always set up a separate ext4 `/var/lib/docker` volume.
- I do RAID and encryption separately in MD or LVM and LUKS, so no comments from me about the stability of btrfs' built-in RAID cor encryption.
- Slix 3y ago> `docker build` is weirdly slow on btrfs, I always set up a separate ext4 `/var/lib/docker` volume. I'm currently doing this for a different reason. My docker builds started failing after some Ubuntu upgrade. I gave up and used ext4 for that docker directory to fix everything. https://serverfault.com/q/1127148 https://serverfault.com/q/1127148 It unsettled me because now I'm not sure whether btrfs (or docker with btrfs) is production-ready.
- LukeShu 3y agoDocker has 8 different storage drivers that it can use... that's a lot, so you know they don't all get equal attention. As much as I love btrfs, it's probably fair to say that the only Docker storage driver that receives adequate attention to be production-ready is "overlay2". https://docs.docker.com/storage/storagedriver/select-storage-driver/ https://docs.docker.com/storage/storagedriver/select-storage...
- jdhendrickson 3y agoAny ideas on what causes the docker issue? Or have you not poked it with a stick yet?
- LukeShu 3y agoI haven't had a chance to dig in to it yet. Most of the time, Docker uses `overlayfs` to emulate COW, but on btrfs it can just use the filesystem's native COW. In my mind it's about equally likely that it's Docker's fault as it is btrfs's fault; that perhaps Docker's btrfs storage driver is doing something dumb. https://docs.docker.com/storage/storagedriver/select-storage-driver/ https://docs.docker.com/storage/storagedriver/select-storage...
- pxc 3y agoFor VMs and containers isn't it pretty common to use a subvol where CoW is disabled for their disk images? Same thing for ZFS with datasets that disabled CoW for things like that.