差異處
這裏顯示兩個版本的差異處。
下次修改 | 前次修改 | ||
tech:nfs_ganesha [2024/01/03 14:50] – 建立 jonathan | tech:nfs_ganesha [2025/03/27 18:22] (目前版本) – [常見問題] jonathan | ||
---|---|---|---|
行 1: | 行 1: | ||
====== 在 Ubuntu/ | ====== 在 Ubuntu/ | ||
- | * 因為詢問 ChatGPT | + | * 因為詢問 ChatGPT 是否有提升 NFS 服務效能的輔助軟體, |
* 也看到預設 Ubuntu/ | * 也看到預設 Ubuntu/ | ||
- | ===== 安裝方式 ===== | + | ===== 安裝與設定方式 ===== |
* 安裝程序 <cli> | * 安裝程序 <cli> | ||
sudo apt update | sudo apt update | ||
sudo apt install nfs-ganesha nfs-ganesha-vfs | sudo apt install nfs-ganesha nfs-ganesha-vfs | ||
</ | </ | ||
- | * 設定 nfs 分享目錄 Exp. /nfsshare 可讀寫 <cli> | + | * 設定 nfs 分享目錄 Exp. /nfsshare 可讀寫, 只允許 10.20.0.0/ |
vi / | vi / | ||
EXPORT | EXPORT | ||
{ | { | ||
Export_ID = 1; | Export_ID = 1; | ||
- | Path = /nfsshare; | + | Path = / |
Pseudo = /nfsshare; | Pseudo = /nfsshare; | ||
Access_Type = RW; | Access_Type = RW; | ||
Squash = No_Root_Squash; | Squash = No_Root_Squash; | ||
- | FSAL | + | FSAL { |
- | | + | |
Name = VFS; | Name = VFS; | ||
+ | } | ||
+ | SecType = sys; | ||
+ | CLIENT { | ||
+ | Clients = 10.20.0.0/ | ||
+ | Access_Type = RW; | ||
} | } | ||
} | } | ||
</ | </ | ||
* 設定啟動 nfs-ganesha 服務 <cli> | * 設定啟動 nfs-ganesha 服務 <cli> | ||
- | sudo systemctl | + | sudo systemctl |
sudo systemctl enable nfs-ganesha | sudo systemctl enable nfs-ganesha | ||
</ | </ | ||
行 32: | 行 36: | ||
<note tip> | <note tip> | ||
- | * 如果服務狀態不是完全正常, | + | * 如果服務狀態不是完全正常 |
- | * ++看範例紀錄|< | + | * 確認是否原本的 nfs-kernel service 還沒關閉, 關閉方式如下: |
+ | sudo systemctl stop nfs-kernel-server | ||
+ | sudo systemctl disable nfs-kernel-server | ||
+ | </ | ||
+ | * 查詢 log 了解問題發生的原因: | ||
+ | * ++看範例紀錄|< | ||
# tail -100 / | # tail -100 / | ||
03/01/2024 05:24:53 : epoch 6594efa5 : test-jonathan-45 : ganesha.nfsd-4407[main] config_errs_to_log :CONFIG :CRIT :Config File (/ | 03/01/2024 05:24:53 : epoch 6594efa5 : test-jonathan-45 : ganesha.nfsd-4407[main] config_errs_to_log :CONFIG :CRIT :Config File (/ | ||
行 67: | 行 76: | ||
</ | </ | ||
+ | ===== 進階調教 ===== | ||
+ | * 調整自訂記憶體當 Cache | ||
+ | * Mem_Max 預設可能是 64 MB 調高至 2048 MB -> Mem_Max = 2147483648 | ||
+ | * Mem_Cache_Size 預設可能是 32 MB 調高至 512 MB -> Mem_Cache_Size = 536870912 | ||
+ | * Dir_MaxCacheSize 預設可能是 512 KB 調高至 4096 KB -> Dir_MaxCacheSize = 4194304 | ||
+ | * 將設定加入 ganesha.conf 內< | ||
+ | NFS_Core_Param | ||
+ | { | ||
+ | MNT_Port = 20048; | ||
+ | NLM_Port = 32803; | ||
+ | Bind_Addr = 0.0.0.0; | ||
+ | Protocols = 3,4; # 支持 NFSv3 和 NFSv4 | ||
+ | } | ||
+ | _9P { | ||
+ | Nb_Worker = 16; # 工作線程現在在這裡 | ||
+ | } | ||
+ | MDCACHE { | ||
+ | Cache_Size = 536870912; | ||
+ | Dir_Chunk = 4194304; | ||
+ | } | ||
+ | TIRPC { | ||
+ | Max_Connections = 1024; # 替代 RPC_Max_Connections | ||
+ | Idle_Timeout_S = 300; # 替代 RPC_Idle_Timeout_S | ||
+ | Default_Buffer_Size = 1048576; | ||
+ | } | ||
+ | Cache_Parameters { | ||
+ | Entries_HWMark = 100000; | ||
+ | NParts = 32; # 增加分區數量以減少鎖競爭 | ||
+ | Cache_Size = 1000; # 緩存大小 | ||
+ | Use_Getattr_Directory_Invalidation = true; | ||
+ | } | ||
+ | |||
+ | # 關閉 Kerberos 以避免那些錯誤 | ||
+ | NFS_KRB5 { | ||
+ | Active_krb5 = false; | ||
+ | KeytabPath = "/ | ||
+ | PrincipalName = ""; | ||
+ | CCacheDir = ""; | ||
+ | } | ||
+ | |||
+ | LOG { | ||
+ | Default_Log_Level = EVENT; | ||
+ | RPC_Debug_Flags = 0; # 減少 RPC 調試信息 | ||
+ | } | ||
+ | |||
+ | EXPORT | ||
+ | : | ||
+ | </ | ||
+ | * 重啟 nfs-ganesha 服務讓設定生效< | ||
+ | systemctl restart nfs-ganesha | ||
+ | </ | ||
+ | * 使用 fio 來驗證調教後效能提升大概 18% | ||
+ | * 調教前 [[tech/ | ||
+ | Run status group 0 (all jobs): | ||
+ | READ: bw=1637KiB/ | ||
+ | WRITE: bw=1637KiB/ | ||
+ | </ | ||
+ | * 調教後 [[tech/ | ||
+ | Run status group 0 (all jobs): | ||
+ | READ: bw=1935KiB/ | ||
+ | WRITE: bw=1953KiB/ | ||
+ | </ | ||
+ | |||
+ | ===== 常見問題 ===== | ||
+ | * 關閉 Ganasha 的作法 <cli> | ||
+ | systemctl stop nfs-ganesha | ||
+ | systemctl disable nfs-ganesha | ||
+ | </ | ||
{{tag> | {{tag> | ||