Man gehe davon aus, wir haben mehrere 16TB HDDs für einen Backupserver.
Dieser soll durch schnelle NVMEs beschleunigt werden.
Wir erzeugen ein ZFS-Raid für die HDDs:
zpool create -f -o ashift=12 pool mirror /dev/sda /dev/sdb mirror /dev/sdc /dev/sdd mirror /dev/sde /dev/sdf mirror /dev/sdg /dev/sdh mirror /dev/sdi /dev/sdj mirror /dev/sdk /dev/sdl mirror /dev/sdm /dev/sdn
(erzeugt Pool aus 16 x HDDs)
Wir messen anschließend die Schreibperformance des neuen Pools:
fio --name=/pool/schreibtest --rw=write --ioengine=libaio --iodepth=32 --runtime=60 --group_reporting --size=5G --sync=1
Performance ernüchtern:
write: IOPS=43, BW=176KiB/s
Wir beschleunigen den Pool mit einem Paar NVMEs jeweils für Log + ARC:
Dazu mit parted jeweils zwei gleichgroße Partitionen auf beiden NVMEs anlegen.
Einmal bei uns 50G und einmal 1000G
Zuletzt fügen wir Cache+Log dem bestehenden Pool hinzu:
zpool add -f pool log /dev/nvme0n1p4 /dev/nvme1n1p4 cache /dev/nvme0n1p5 /dev/nvme1n1p5
Ergebnis sieht wie folgt aus:
# zpool status
pool: pool
state: ONLINE
config:NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 sda ONLINE 0 0 0 sdb ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 sdc ONLINE 0 0 0 sdd ONLINE 0 0 0 mirror-2 ONLINE 0 0 0 sde ONLINE 0 0 0 sdf ONLINE 0 0 0 mirror-3 ONLINE 0 0 0 sdg ONLINE 0 0 0 sdh ONLINE 0 0 0 mirror-4 ONLINE 0 0 0 sdi ONLINE 0 0 0 sdj ONLINE 0 0 0 mirror-5 ONLINE 0 0 0 sdk ONLINE 0 0 0 sdl ONLINE 0 0 0 mirror-6 ONLINE 0 0 0 sdm ONLINE 0 0 0 sdn ONLINE 0 0 0 logs nvme0n1p4 ONLINE 0 0 0 nvme1n1p4 ONLINE 0 0 0 cache nvme0n1p5 ONLINE 0 0 0 nvme1n1p5 ONLINE 0 0 0
errors: No known data errors
Und der erneute Schreibtest sieht auch anders aus:
write: IOPS=23.9k, BW=93.3MiB/s