GANESHA-QOS-CONFIG(8)
π NAME π
ganesha-qos-config β the NFS-Ganesha Quality of Service Configurations file β¨ (yes bestie, it's a section 8 man page, we're in the system-administration girlies now π )
π SYNOPSIS π
/etc/ganesha/ganesha.conf
β¨ DESCRIPTION β¨
okay so. The nfs_qos module is literally part of the NFS-Ganesha server, and her whole job is making sure I/O resources get distributed fairly when things get busy π«Ά. She does it with rate limiting techniques β bandwidth capping, IOPS (Input/Output Operations Per Second) management, and Token consumption. Obsessed.
The nfs_qos module lives in the source file nfs_qos.c π§. She's designed to manage quality of service for NFS operations by controlling how many operations get executed over a specified interval. Basically she balances "we want performance" against "please do not let the server get absolutely cooked by excessive or bursty I/O operations" π.
Here's how the module works, fr fr:
- Bandwidth and IOPS Limiting: she monitors and regulates the amount of data transferred (bandwidth) and the number of ops executed (IOPS) π. And based on the configured limit's, she calculates the time required for the IO, and deffers the IO.
- Token-Based Control: every I/O operation needs tokens to be processed π. Tokens get replenished periodically. If an incoming request doesn't have enough tokens available, the IO will be retired slowly to the client with
NFS_ERROR_DELAYπ. - You can individually enable BandWidth, IOPS and Token controlling. Mix and match, main character energy β¨.
When you're deciding which QoS type to enable, here's the vibe check π:
- If simplicity and lower system overhead are the factors and the workload is fairly uniform,
Per_Exportmight suffice. However β be aware that this can lead to client starvation π. - If your priority is making sure a client's queued I/Os don't indefinitely delay new requests from that same client,
Per_Clientmay help, although it does not globally balance load across different exports. - If fairness at both the export and client level is paramount, and you can accommodate the additional complexity and resource usage, then
Per_Export_Per_Clientis the most balanced strategy π.
π OPTIONS π
The behavior of nfs_qos can be influenced by various configuration parameters, typically set in the server's main configuration file (for example, /etc/ganesha/ganesha.conf). Some configurable options include π
:
- Maximum bandwidth: set upper bounds on data transfer rates.
- Maximun IOPS limits: set upper bounds for the number of operations executed per seconds.
- Token thresholds and refresh intervals: define how many tokens available per time unit (usally 30 minutes, hourly, daily), which controls the rate of allowed data consuption over the specified time.
π QOS_DEFAULT_CONFIG {} π
The global defaults block, bestie. Every single knob, no skips, periodt π
enable_qosβbool, defaultfalseβ she's off by default, so flip her on first πΈenable_tokensβbool, defaultfalseenable_bw_controlβbool, defaultfalseenable_iops_controlβbool, defaultfalseenable_ds_controlβbool, defaultfalsecombined_rw_bw_controlβbool, defaultfalsecombined_rw_token_controlβbool, defaulttrueβ¨combined_rw_iops_controlβbool, defaulttrueβ¨qos_typeβenum, values["Per_Export", "Per_Client", "Per_Export_Per_Client"], default"Per_Export_Per_Client"πmax_export_combined_bwβuint64, range32768to107374182400, default2147483648max_client_combined_bwβuint64, range32768to107374182400, default2147483648max_export_write_bwβuint64, range32768to107374182400, default2147483648max_export_read_bwβuint64, range32768to107374182400, default2147483648max_client_write_bwβuint64, range32768to107374182400, default2147483648max_client_read_bwβuint64, range32768to107374182400, default2147483648max_export_iopsβuint64, range8to1638400, default8192max_client_iopsβuint64, range8to1638400, default8192max_export_write_iopsβuint64, range8to1638400, default8192max_export_read_iopsβuint64, range8to1638400, default8192max_client_write_iopsβuint64, range8to1638400, default8192max_client_read_iopsβuint64, range8to1638400, default8192max_export_write_tokensβuint64, range3774873600toUINT64_MAX, default90596966400max_export_read_tokensβuint64, range3774873600toUINT64_MAX, default90596966400max_client_write_tokensβuint64, range3774873600toUINT64_MAX, default90596966400max_client_read_tokensβuint64, range3774873600toUINT64_MAX, default90596966400export_write_tokens_renew_timeβuint64, range3600toUINT64_MAX, default86400export_read_tokens_renew_timeβuint64, range3600toUINT64_MAX, default86400client_write_tokens_renew_timeβuint64, range3600toUINT64_MAX, default86400client_read_tokens_renew_timeβuint64, range3600toUINT64_MAX, default86400
π¦ EXPORT { QOS_BLOCK {} } π¦
See global QOS_DEFAULT_CONFIG {} β same energy, different scope π
- Config exception is
qos_typeis not available at export level π - By default global
EXPORT_DEFAULTSwill be applied to export. - This block is required at export level only if there needs to be different value than global value.
- Respective
QOS_DEFAULT_CONFIGenable values needs to be enabled first to enable export level values. - If export
QOS_BLOCK {}needs to be populated, then populate required enabled entities otherwise default value will get applied. - How range and default values derived can be found in
src/include/nfs_qos.hπ§
πΈ PSEUDOFS { QOS_BLOCK {} } πΈ
See EXPORT { QOS_BLOCK {} } β literally the same, bestie, go read that one β
π NOTES:
The nfs_qos module is essential for maintaining a balanced and fair I/O workload on the NFS server π. By regulating operations with tokens, bandwidth, and IOPS constraints, she protects the server from overload while ensuring that client requests are handled in a controlled manner. This man page provides an overview of her function and operation within the greater context of the NFS server's architecture π«Ά
π AUTHOR
The NFS-Ganesha-QOS feature was added by <Deeraj.Patil@ibm.com>, <Naresh.Chillarege@ibm.com> β legends, honestly π
π« SEE ALSO
ganesha-config <>(8) π
and that's the whole page, bestie!! this one came from NFS-Ganesha, dated Aug 11, 2026 β go forth and rate-limit responsibly, you absolute icon πβ¨π
π¦ where this page comes from
- fedora 44: nfs-ganesha 9.16-4.fc44 Β· LGPL-3.0-or-later
- fedora 44: nfs-ganesha-rados-grace 9.16-4.fc44 Β· LGPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms