I’m using EndeavourOS with ext4 file system for daily usage and a dual bootable Windows for gaming. What I want to have right now is getting rid of Windows completely.
When I tried it before, I had to try multiple tweaks for a game and find which one worked on Linux. Therefore, I want to take a snapshot with BTRFS and try it until I find the right configuration.
While I have quite a bit of experience with Linux, I’ve never used BTRFS. Do you think it’s worth it?
I thought about keeping the games on the ext4 system, but I hate splitting the disk. I’m thinking of keeping the games in a non-snapshot volume.
UPDATE: I just re-installed EndeavourOS with BTRFS + snapper + BTRFS Assistant :)
I use Fedora which defaults to BTRFS and never once had an issue with any game because of it. Your file system shouldn’t matter for gaming at all so long as you stay on Linux native ones and avoid NTFS Windows drives.
BTRFS is worth it. It’s a bit faster than ext4. And with BTRFS assistant or snapper, you can configure automatic snapshots of your OS partition. And grub-btrfs will allow to integrate them to the boot menu. Once you are booted via snapshot, there is a way to replace / file system with that snapshot permanently, or you can boot to another one.
And remember, snapshots in BTRFS is just a formal thing, use them only if you specifically need their features, like read only sub volumes. If you just need to backup some directory, for example with steam games, no need to do the actual snapshot. You can easily backup large amount of data with just
cp -dr dir dir_backup
no matter how large is it, it will be done immidetelly and without taking additional space.Btrfs is amazing for a steam library. The single best feature is the compression. Games tend to have lot of unoptimized assets which compress really well. Because decompression is typically faster than your disk, it can potentially make games load faster too.
I put a second dedicated nvme drive in my PC just for steam. It’s only 512GB but it holds a surprisingly large library.
I actually found the opposite with my steam library; on ZFS with ZSTD I only saw a ratio of 1.1 for steamapps, not that there’s really any meaningful performance penalty for compressing it.
OK I just measured mine. I have 459GiB of games on the drive, consuming 368GiB of space. That’s about 25% compression. I’m using
compress=zstd:9
.I should try deduplication. I have 4 steam users and I’ve created an ACL hell to prevent the same game being downloaded and installed twice.
It depends on what sort of games you play. Some games / genres / publishers are much worse about this than others.
and
my axededuping. all those dlls and wine prefixes that contain them occupy space only once.Is the compression opt-in or is it enabled by default?
You have to enable compression in fstab.
Ah okay, cool. It’s that easy? Does it compress all existing data after that or is it only for new data?
What would I have to do to compress existing data?
It is only for new data.
For example, you would have to defragment your filesystem again with
btrfs filesystem defragment -r -v -czstd /
. Wherezstd
is an algorithm and/
, a root path. With this command, the default compression level will be used, which is level 3.Be careful, defragmenting the btrfs file system will/can duplicate the data.
As for a mount point, if you decided to use zstd algorithm with level 1 compression, just add the
compress=zstd:1
orcompress-force=zstd:1
to the mount options (fstab or while mounting manually)So I set up my system with btrfs in the last days and I converted two external drives (from ext4) (mainly game) and run defrag and balance, because it was mentioned in a guide to compress the existing files. Was that a bad idea? Didn’t read anything about duplicates.
Reading the manpage (btrfs-filesystem), duplication can happen on some odd kernel versions, so no danger.
Edit: that was my interpretation of breaking up reflinks of cow data anyway. Seems there’s more.
If I know correctly, defrag will always duplicate the reflink files.
https://btrfs.readthedocs.io/en/latest/Defragmentation.html
Defragmentation does not preserve extent sharing, e.g. files created by cp --reflink or existing on multiple snapshots. Due to that the data space consumption may increase.
Well, compression doubled my available space. ;-)