2

I’m setting up a new server with the following ZFS-based storage tiers:

  • Base Storage: RAID-Z2 with 6 x 1TB SAS drives (~4TB usable).
  • SSD Storage: ZFS Mirror with 2 x 1TB SSDs (~1TB usable).
  • NVMe Drives: 2 x 500GB NVMe.

The server has 384GB of RAM, but I’ll only be using around 128GB for the system and applications, leaving plenty available for ARC caching.

This server will host around 100 cPanel accounts, mostly WordPress sites, averaging 10GB each so far. It is very important for me to optimize website performance to achieve higher scores on Google PageSpeed Insights, as this is critical for my marketing and SEO objectives.

Here’s my current plan:

  1. Store website files (static content, logs, etc.) on the base storage. Write speed isn’t critical.
  2. Place database files on the SSD storage to leverage its redundancy and faster read/write performance compared to the base storage.
  3. Use the NVMe drives exclusively for read caching (L2ARC), as replacing them requires powering down the server, which I want to avoid.

Given the high amount of unused RAM available for ARC caching, I’m questioning whether it’s worth using the NVMe drives for read cache (L2ARC), or if I should reserve them for other potential critical scenarios.

My Questions:

  1. Should I use the NVMe drives to add read cache (L2ARC) for the base storage, the SSD storage, or both?
  2. With so much RAM available for ARC caching, is L2ARC with NVMe worth the additional complexity and potential wear on the drives?
  3. Would saving the NVMe drives for critical scenarios or future needs be a better choice?
  4. Does this overall setup make sense for hosting WordPress websites and improving performance on Google PageSpeed Insights?

Any suggestions or insights would be greatly appreciated. Thanks!

1 Answers1

2

There are two key problems to consider:

Storage Architecture Issues

  • You have 256GB of RAM available for ARC - that's big for your 1TB dataset
  • L2ARC is the last thing in your caching chain (after ARC, filesystem cache, MySQL buffers)
  • Have you measured actual workload patterns or identified real I/O bottlenecks?
  • At your scale (~1TB total), is an all-SSD pool an option? It would eliminate the tiering complexity.

With ZFS:

  1. Measure first (arcstats, actual I/O patterns)
  2. Identify bottlenecks
  3. Optimize the simple things (ARC tuning, dataset properties)
  4. Only then would you consider additional layers like L2ARC

PageSpeed Optimization

PageSpeed measures frontend performance metrics like Time to First Byte, JavaScript execution time, and resource loading - none of which are storage bottlenecks. These metrics are influenced by your content delivery strategy and application configuration.

For WordPress sites, performance improvements come from application-level optimization: implementing caching plugins, tuning PHP-FPM, optimizing MySQL queries, etc. Your PageSpeed scores will improve much more from implementing a CDN, optimizing images, and configuring proper HTTP cache headers than from any storage-level tweaks.

Even if your storage were somehow a bottleneck (unlikely with 256GB of ARC), adding L2ARC wouldn't meaningfully impact these frontend metrics. You're trying to solve an application-level performance challenge with low-level storage optimization.

ewwhite
  • 201,205