Don't cheap out on SSDs. [...] Also keep in mind that special devices are not cache.
My current array is HDD's, that's what I meant by SSD's being cost prohibitive. I assume you mean getting an enterprise SSD for the "special device" role. That does make sense. It would be pretty annoying spending the time caring for the HDD reliability, and then forgoing it for the SSD.
I'm coming up against a few acronyms that I'm finding it difficult to wrap my head around. I'll try and walk through what I've done and what I think I should do next:
If I started with
zpool create -f -o ashift=12 NAS raidz2 /dev/sd* /dev/sd* etc
and
zpool add -f -o ashift=12 NAS raidz2 /dev/sd* /dev/sd* etc
as far as I can tell, ARC is setup by default:
Code:
# free -m
total used free shared buff/cache available
Mem: 96729 52728 42476 269 1524 43018
Swap: 0 0 0
# awk '/^size/ { print $1 " " $3 / 1048576 }' < /proc/spl/kstat/zfs/arcstats
size 48618
If I was to setup L2ARC, it is as simple as
zpool add -f -o ashift=12 NAS cache /dev/sd*
and since it is considered volatile, I wouldn't
need enterprise yet.
Then, the step after that would be utilizing
zpool add -f -o ashift=12 NAS special mirror /dev/sd* /dev/sd* /dev/sd*
which would benefit from the reliability of Enterprise SSD's, and 3x mirror.
I'm not sure what to make of
zfs set special_small_blocks=* NAS
How do I find my current block size, and how do I decide special block size? I don't quite understand what Wendel at Level1Tech means.
Code:
# find . -type f -print0 | xargs -0 ls -l | awk '{ n=int(log($5)/log(2)); if (n<10) { n=10; } size[n]++ } END { for (i in size) printf("%d %d\n", 2^i, size[i]) }' | sort -n | awk 'function human(x) { x[1]/=1024; if (x[1]>=1024) { x[2]++; human(x) } } { a[1]=$1; a[2]=0; human(a); printf("%3d%s: %6d\n", a[1],substr("kMGTEPYZ",a[2]+1,1),$2) }'
1k: 7363
2k: 201
4k: 120
8k: 458
16k: 3182
32k: 8402
64k: 3419
128k: 2262
256k: 3553
512k: 6228
1M: 11758
2M: 11734
4M: 6197
8M: 24714
16M: 2428
32M: 810
64M: 629
128M: 1058
256M: 2891
512M: 3294
1G: 1662
1G: 108
1G: 171
1G: 2
1G: 38
1G: 644
1G: 9
Does this help me figure out what to set my special block size?
Finally, LOG and SLOG.. Do I need a LOG or a SLOG?
Only by using the CLI. But thats a easy one-liner.
See here how to calculate it:
https://forum.level1techs.com/t/zfs-metadata-special-device-z/159954
Usually about 0,4% of your total pools capacity.
Total capacity as in 96TB in drives, or total capacity as in 64TB usable storage?
Enterprise SSD aren't expensive.
You're right, I was incorrectly assuming I would have to get a 4TB SSD to match the HDD's in the vdev.
and you need to send/receive everything to take advantage of this.
I don't know what this means.
Yes "anymore". The benefit of living in Australia, just means that tech costs more, or we get less variety. When a 4TB WD RED Plus (WD40EFZX) is AUD$142 and the first Enterprise SSD at my local PC shop is a Intel DC P4510 1TB (SSDPE2KX010T807) and is a whopping AUD$479, it's a bit ridiculous to upgrade a Plex server with my life savings, and future house deposit.