nasiostat工具是阿里雲NAS團隊開發的,用於在Linux用戶端採集NFS協議操作時延等即時的指標工具。
功能概述
在Linux用戶端核心中,NFS Client模組在執行應用程式層發起的NFS協議操作時,會將操作時延等指標記錄到用戶端本地的/proc/self/mountstats檔案中。nasiostat工具的主要功能是讀取並解析該檔案,以更易於理解的方式展示指標結果。因此,該工具在運行時非常輕量級,不會佔用過多的CPU或記憶體資源。
監測指標項
指標項 | 說明 |
ops/s | 每秒完成的 I/O或中繼資料操作次數。 |
kB/s | 每秒的吞吐大小。 |
kB/op | 每秒所有I/O或中繼資料操作的平均塊大小。 |
avg RTT (ms) | I/O或中繼資料請求從NFS Client發送後到NFS Client接收到響應的平均時間。即I/O或中繼資料請求從NFS Client發送後在網路上的傳輸時間T2到NAS服務端處理請求的時間T3再到服務端響應返回NFS Client的時間T4的平均時間。 |
avg exe (ms) | I/O或中繼資料從請求到響應整個操作的完成時間。即請求在核心NFS Client排隊等待時間T1 + avg RTT 。 |
avg queue (ms) | I/O或中繼資料請求在核心NFS Client中排隊等待發送的時間T1。 |
avg RTT、avg exe、avg queue 時間示意圖
下載nasiostat工具
下載nasiostat工具指令碼。
如果您的ECS已開通公網許可權,可執行以下命令下載。
wget https://raw.githubusercontent.com/aliyun/nas-client-tools/master/linux_client/nasiostat -O /tmp/nasiostat如果您的ECS未開通公網許可權,您可以將nasiostat工具指令碼下載至本地後再上傳至伺服器。
下載nasiostat至本地。
將下載的nasiostat工具指令碼上傳至ECS。具體操作,請參見上傳或下載檔案(Linux)。
為工具指令碼增加可執行許可權。
sudo chmod +x /tmp/nasiostat
查看效能
執行以下命令,查看NFS協議效能。
/tmp/nasiostat 1 10 -A write,read,getattr,setattr,access,rename,lookup,create,readdir,readdirplus,remove <NAS掛載路徑>重要參數說明如下所示,請根據實際情況替換。
1: 表示每幾秒採樣一次,單位為秒。10: 表示持續採樣多少次。-A: 指定採樣的NFS協議操作。例如,write,read,getattr等,常見NFS協議操作,請參見常見NFS協議操作命令。<NAS掛載路徑> : NAS已掛載至本地的掛載路徑。您可以執行
mount -l | grep nas查看。例如
1ca404****.cn-hangzhou.nas.aliyuncs.com:/ /mnt,其中:1ca404****.cn-hangzhou.nas.aliyuncs.com:NAS掛載點地址。您可以在Apsara File Storage NAS控制台檔案系統列表頁面,單擊目標檔案系統後的管理,進入掛載使用頁面擷取掛載地址。更多資訊,請參見管理掛載點。/:NAS檔案系統目錄。/mnt:當前伺服器上掛載NAS的本地路徑。
預期返回樣本如下所示:
ops/s concurrency bklogqueue sendqueue pendqueue
777.085 2 0 1 1
op ops/s kB/s kB/op retrans avg RTT (ms) avg exe (ms) avg queue (ms)
write 0.722 738.623 1023.263 0 (0.0%) 155.534 823.704 667.887
read 776.335 3296.389 4.246 0 (0.0%) 7.971 8.085 0.091
getattr 0.005 0.001 0.218 1 (14.3%) 2.857 2.857 0.000
setattr 0.001 0.000 0.262 0 (0.0%) 1.000 1.000 0.000
access 0.004 0.001 0.230 0 (0.0%) 0.200 0.200 0.000
rename 0.000 0.000 0.000 0 (0.0%) 0.000 0.000 0.000
lookup 0.001 0.000 0.234 0 (0.0%) 0.000 0.000 0.000
create 0.001 0.000 0.379 0 (0.0%) 1.000 1.000 0.000
readdir 0.000 0.000 0.000 0 (0.0%) 0.000 0.000 0.000
readdirplus 0.000 0.000 0.000 0 (0.0%) 0.000 0.000 0.000
remove 0.000 0.000 0.000 0 (0.0%) 0.000 0.000 0.000常見NFS協議操作命令
命令 | 說明 |
getattr | 擷取檔案屬性。 用於檢索指定檔案系統對象的屬性。該對象通過伺服器在 LOOKUP、CREATE、MKDIR、SYMLINK、MKNOD 或 READDIRPLUS 過程(或從其他地方描述的 MOUNT 服務)響應中返回的檔案控制代碼來標識。 |
setattr | 設定檔案屬性。 用於更改伺服器上檔案系統對象的一個或多個屬性。SETATTR 不保證是原子操作。失敗的 SETATTR 可能部分變更檔的屬性。使用 SETATTR 變更檔大小會間接更改 mtime。 |
access | 檢查存取權限。 用於確定使用者(由請求中的憑據標識)對檔案系統對象擁有的存取權限。用戶端將要檢查的許可權集編碼為一個位元遮罩。伺服器會檢查位元遮罩中編碼的許可權。正常情況下伺服器會返回 NFS3_OK 狀態以及一個包含用戶端被允許的許可權的位元遮罩。 |
lookup | 尋找檔案名稱。 在目錄中搜尋特定名稱,並返回對應檔案系統對象的檔案控制代碼。 |
read | 讀取檔案中的資料。 根據檔案控制代碼從檔案中讀取資料的過程。 |
write | 向檔案寫入資料。 根據檔案控制代碼將資料寫入檔案的過程。 |
create | 建立一個檔案。 建立一個普通檔案的過程。NFS版本3協議引入了MKNOD過程來處理裝置檔案和FIFO檔案的建立。 |
mkdir | 建立一個目錄。 用於建立一個新的子目錄的過程。許多伺服器實現不允許使用檔案名稱 |
remove | 刪除一個檔案。 用於從目錄中刪除(移除)一個條目。如果目錄中的該條目是對應檔案系統對象的最後一個引用,則該對象可能會被銷毀。通常情況下,REMOVE 操作用於刪除非目錄檔案對象,而RMDIR用於刪除目錄。 |
rename | 重新命名檔案或目錄。 RENAME操作會將一個檔案或目錄從其原始位置和名稱移動並重新命名為新的位置和名稱。來源目錄和目標目錄必須位於同一個檔案系統和伺服器上,以確保操作的一致性和完整性。 |
readdir | 讀取目錄。 READDIR按順序從目錄中檢索可變數量的條目,並返回每個條目的名稱和檔案標識符,同時提供資訊以允許用戶端在後續的READDIR請求中擷取附加的目錄條目。例如 |
readirplus | 讀取目錄擴充。 READDIRPLUS從檔案系統目錄中檢索可變數量的條目,並返回每個條目的完整資訊,以及允許用戶端在後續READDIRPLUS請求中擷取附加的目錄條目的資訊。READDIRPLUS與READDIR的區別僅在於返回的資訊量。在READDIR中,每個條目僅返迴文件名和檔案標識符(fileid)。而在 READDIRPLUS中,每個條目返回名稱、檔案標識符(fileid)、屬性(包括檔案標識符)和檔案控制代碼(file handle)。如 |
異常情境
情境一:avg exe 指標高, avg RTT 指標也高,avg queue 指標很低
這種現象說明瓶頸不在NFS Client,請求在NAS服務端響應慢或網路延時比較高,請提交工單專人支援處理。
情境二:avg exe 指標高, avg RTT 指標低,avg queue 指標很高
這種現象說明瓶頸在用戶端,請求在NFS Client排隊,建議提升單台ECS訪問NAS的吞吐能力。具體操作,請參見如何解決Linux作業系統上訪問NAS效能不好?。