I am planning on creating a home server with either 2 (RAID1) or 3 (RAID5) HDDs as bulk storage and 1 SSD as bcache.
The question is, what file system should I use for the HDDs? I am thinking of ext4 or xfs, as I heard btrfs is not recommended for my use case for some reason.
Do you all have some advice to give on what file system to use, as well as some other tips?
deleted by creator
The BTRFS thing is cutting the power or losing the disks in the middle of a write which corrupts your data. If you don’t think that will be a problem then BTRFS is fine. I recommend ZFS personally, but it sounds like you want to use mdadm instead so basically anything will work.
If you might need to shrink your filesystem later then avoid XFS. EXT4 is relatively featureless but ol’ reliable. ZFS is good for long term data integrity and protection. BTRFS is similar to ZFS. BcacheFS is new but like a swirl of EXT4 and BTRFS. Just pick the one with the features you want.
Powerloss might happen as I don’t have a ups.
And when it comes to mdadm, it just happens to be the first and only redundancy tool I know. I am however open to learn and try new things.
ZFS seems interesting, but: I read that ZFS would require quite a lot of RAM, and I was going for 32 GBs only, would it be enough?
ZFS doesn’t require lots of RAM, more RAM just improves the caching (ARC) it can do. You can set ZFS to use all unused RAM as ARC, so it doesn’t interfere with other services running on the same PC. I ran ZFS with lots of VMs on an old office PC with 16GB RAM and it was still able to max out a 10gig nic.
I would just skip RAID, add all disk to a single BTRFS and use the built in profiles for (meta)data redundancy.
Cache I don’t know much tho.
The man page at https://btrfs.readthedocs.io/en/latest/mkfs.btrfs.html says:
RAID5/6 has known problems and should not be used in production.
So those profiles have unknown, unspecified problems.
But btrfs is safe on top of md-based raid1/5/6. It also has the advantage that you only need to encrypt one volume.
Could you elaborate on btrfs on top of md raid?
This one seems the most likely solution for me.
Sure. First you set up a RAID5/6 array in mdadm. This is a purely software thing, which is built into the Linux kernel. It doesn’t require any hardware RAID system. If you have 3-4 drives, RAID5 is probably best, and if you have 5+ drives RAID6 is probably best.
If your 3 blank drives are sdb1, sdc1, and sdd1, run this:
mdadm --create --verbose /dev/md0 --level=5 -n 3 /dev/sdb1 /dev/sdc1 /dev/sdd1
This will create a block device called /dev/md0 that you can use as if it were a single large hard drive.
mkfs.btrfs /dev/md0
That will make the filesystem on the block device.
mkdir /mnt/bigraid mount /dev/md0 /mnt/bigraid
This creates a mount point and mounts the filesystem.
To get it to mount every time you boot, add an entry for this filesystem in /etc/fstab
Thanks for the info!
Do you need to do some maintenance to keep the data in the array intact?
I read of some btrfs scrub commands and md checks and such, but I am unsure how often to do them, and what they actually do.