-
SAS controller
A controller in HBA mode: ZFS sees the disks as they are, with no hardware RAID in between.
-
24-disk shelf
A second-hand disk shelf, connected over SAS, where the big pool lives.
-
Containers
They mount the datasets they need.
-
Monitoring
Pool and RAID state and SMART for each disk, without waking the sleeping ones.
-
Hypervisor upgrade
Expanding a RAIDZ needs ZFS 2.3 or later: Proxmox had to be upgraded first.
-
Big pool (RAIDZ1)
Five 10 TB disks: room for the media library, with one disk of margin.
-
Games pool (mirrors)
Four SAS disks in two mirrors: small, frequent writes, like saving a world.
-
System RAID1
Two disks in a software mirror for the system and the containers' disks.
- Linux (Debian, Alpine, Arch)
-
Loose disks
A few standalone XFS disks, waiting to join the pool.
- Linux (Debian, Alpine, Arch)
-
RAM cache
ZFS uses free RAM as a read cache. On the games pool it serves over 98 %.
-
Block size
1 MB blocks for video, which is read start to finish. Normal blocks where there are small files.
-
No access time
Don't write every time a file is read.
-
«none» scheduler
ZFS already orders and groups I/O: the kernel scheduler just gets in the way.
- Linux (Debian, Alpine, Arch)
-
Disk write cache
It was off on several disks. With ZFS it's safe: it flushes that cache on every transaction.
- Linux (Debian, Alpine, Arch)
-
Re-enable at boot
On the disks behind the shelf the setting doesn't always survive a shutdown: a service sets it again on every boot.
- Linux (Debian, Alpine, Arch)
-
Expanding the RAIDZ
Adding a fifth disk to a four-disk RAIDZ, live, without moving the data elsewhere.
-
A disk's identifier
A disk pulled out and put back can clash with itself.
- Linux (Debian, Alpine, Arch)
-
Scrub
Reads the whole pool and checks every block against its checksum. After the expansion: 0 errors.
-
SMART
The health each disk reports about itself: reallocated sectors, temperature, errors.
- Linux (Debian, Alpine, Arch)
-
Usage
Above 80-85 %, ZFS writes slower. It needs watching before you get there.
-
Measuring with fio
On a temporary uncompressed dataset, before and after each change, deleted afterwards.
- Linux (Debian, Alpine, Arch)