Filesystem
Performance Test of ext4, xfs, zfs, and btrfs under RAID6
· ☕ 36 min read
1. Single Disk 1.1 Creating the File System Wipe the disk 1 wipefs -a /dev/nvme0n1 Format the disk 1 mkfs.xfs /dev/nvme0n1 Mount the disk 1 2 mkdir -p /mnt/nvme0n1-test mount /dev/nvme0n1 /mnt/nvme0n1-test 1.2 Performance Test 4k random write 1 2 3 4 echo 3 > /proc/sys/vm/drop_caches fio --name=4k_randwrite --rw=randwrite --bs=4k --ioengine=libaio --direct=1 \ --numjobs=8 --iodepth=32 --size=20G --time_based --runtime=120 --group_reporting \ --allow_mounted_write=1 --filename=/mnt/nvme0n1-test/fio-4k-randwrite.

ZFS Operations Under RAID
· ☕ 8 min read
ZFS does not support online shrinking; this post focuses on operational tasks such as creating pools, replacing disks, and expanding capacity. 1. ZFS vdev Types mirror: mirroring, multiple disks hold copies of each other, equivalent to RAID 1 raidz3: triple parity, tolerates 3 disk failures raidz2: double parity, tolerates 2 disk failures, equivalent to RAID 6 raidz1: single parity, tolerates 1 disk failure, equivalent to RAID 5 striped: striping, no redundancy, equivalent to RAID 0 They can also be combined:

Btrfs Operations Under RAID
· ☕ 13 min read
Btrfs supports online expansion, shrinking, disk replacement, and RAID mode conversion; this post covers creating a filesystem under RAID 0/RAID 1/RAID 10/RAID 6 topologies, adding disks, replacing disks, shrinking, and common operational tasks. 1. Btrfs Profiles single: single copy, no redundancy, works with one disk or can aggregate multiple disks.

XFS Performance Testing Under Various RAID Levels
· ☕ 54 min read
1. Disk Baseline Testing 1.1 4k Random Write 1 2 3 4 5 6 7 8 9 10 11 12 13 14 fio \ --name=4k_randwrite \ --rw=randwrite \ --bs=4k \ --ioengine=libaio \ --direct=1 \ --numjobs=8 \ --iodepth=32 \ --size=20G \ --time_based \ --runtime=120 \ --group_reporting \ --allow_mounted_write=1 \ --filename=/data1/fio-4k-randwrite.dat 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 Starting 8 processes 4k_randwrite: Laying out IO file (1 file / 20480MiB) Jobs: 8 (f=8): [w(8)][100.