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?

  • @Limonene
    link
    English
    53 days ago

    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.

    • @[email protected]OP
      link
      fedilink
      English
      13 days ago

      Could you elaborate on btrfs on top of md raid?

      This one seems the most likely solution for me.

      • @Limonene
        link
        English
        62 days ago

        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

        • @[email protected]OP
          link
          fedilink
          English
          12 days ago

          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.

          • Atemu
            link
            fedilink
            English
            111 hours ago

            You should scrub your data regularly with btrfs. That’s just a mean to verify the data is in-tact though; to detect corruption.

            You cannot really do anything actively to keep the data in-tact. Failure can and will happen. To keep your data safe, you must plan for failure to happen:

            Expect a power surge to fry all your disks at the same time.
            Expect your house to burn down or flood.
            Expect to run the wrong command and istantly hose your entire array.
            Expect your backup server to get ransomware’d.

            Only if you effectively mitigate these dangers will your data stay safe.