I am using SCALE 24.04.
I have a server with 16x NVMe drives and 512GB of ram.
Based on some previous guidance we configured our pool (name = nvme) to the following:
zfs set recordsize=1M nvme
zfs set primarycache=metadata nvme
However, based on some internal discussions we’d like to configure truenas to use RAM to cache ALL writes (random and sequential) and both sync and async writes. I recall there are a few different options in the way that zfs will acknowledge writes.
one option is for the write to be sent to ram AND the drive, and the write isn’t acknowledged until the drive itself confirms the write, another option is that as soon as the write hits RAM the write is acknowledged.
Now I understand that the second option is risky, but for our workloads, we would like to configure the ZFS pool to operate in this manner.
How might we insure that ALL writes sync and async (random or sequential) get cached in ram first, the write is immediately acknowledged and then written to the NVMe disks.
btw, because we have superfast NVMe drives in a 2x8 RAIDZ1 configuration we don’t use any dedicated slog or l2arc. We just want the writes going to ram then directly to the nvme’s. which are plenty fast to keep up with sustained writes in the GB/sec.