====== 針對 NFS Server 效能調教 ======
* NFS Server 有 4G RAM
* OS : Alpine Linux 3.22
===== sysctl =====
* /etc/sysctl.d/nfsd.conf
# ============================================
# 網路參數優化
# ============================================
# TCP 緩衝區 (128MB max)
net.core.rmem_max=134217728
net.core.wmem_max=134217728
net.ipv4.tcp_rmem=4096 87380 67108864
net.ipv4.tcp_wmem=4096 65536 67108864
# 網路佇列
net.core.netdev_max_backlog=5000
net.ipv4.tcp_max_syn_backlog=8192
# TCP 效能優化
net.ipv4.tcp_window_scaling=1
net.ipv4.tcp_timestamps=1
net.ipv4.tcp_sack=1
net.ipv4.tcp_no_metrics_save=1
net.ipv4.tcp_moderate_rcvbuf=1
net.ipv4.tcp_congestion_control=cubic
# ============================================
# 檔案系統與記憶體管理 (4GB RAM 最佳化)
# ============================================
# 寫入快取設定
# 4GB * 20% = 0.8GB 寫入快取 (非常充裕)
vm.dirty_ratio=20
# 4GB * 15% = 600MB 開始背景清理
vm.dirty_background_ratio=15
# 快取清理時機
vm.dirty_expire_centisecs=1500 # 15 秒後髒頁視為過期
vm.dirty_writeback_centisecs=500 # 每 5 秒執行一次清理
# 記憶體管理
vm.swappiness=10 # 盡量避免 swap
vm.vfs_cache_pressure=50 # 平衡 inode/dentry 快取回收
# 透明大頁面 (對 NFS 有幫助)
vm.nr_hugepages=128
# ============================================
# 檔案系統參數
# ============================================
fs.file-max=2097152
fs.aio-max-nr=1048576
# ============================================
# NFS/RPC 特定參數
# ============================================
# TCP slot 表 (提升併發能力)
sunrpc.tcp_slot_table_entries=128
sunrpc.tcp_max_slot_table_entries=256
* 更改後執行 sysctl -p /etc/sysctl.d/nfsd.conf讓設定生效
===== nfs conf =====
* /etc/conf.d/nfs
:
# 新增以下設定
# Number of servers to start
RPCNFSDCOUNT=12
# Options for rpc.mountd
RPCMOUNTDOPTS=""
# Options for rpc.statd
RPCSTATDOPTS=""
* 修改後重啟 nfs rc-service nfs restart
===== 在 nfs client 端使用 fio 進行測試 =====
* 掛載路徑 Exp. /mnt/t
* 順序寫入測試
fio --name=seq-write \
--directory=/mnt/t \
--rw=write \
--bs=1M \
--size=2G \
--numjobs=1 \
--time_based \
--runtime=60 \
--group_reporting
* 順序讀取測試
fio --name=seq-read \
--directory=/mnt/t \
--rw=read \
--bs=1M \
--size=2G \
--numjobs=1 \
--time_based \
--runtime=60 \
--group_reporting
{{tag>nfs}}