NFS - 小文件的性能非常慢(CIFS 也是如此)
我在兩台 debian 拉伸機之間的 NFS 性能非常差,我找不到解決方案。我在導出文件的伺服器端使用 rsync,在客戶端使用 tcp,hard,intr,rsize=32768,wsize=32768 作為掛載時的選項。兩台伺服器都是在 Hyper V 下執行並共享同一內部網路交換機的 VM。
使用大文件時性能是可以接受的,但使用 rsync 時性能非常低。複製 tar 文件(大小 2 GB)需要幾秒鐘,而在同一目標文件夾中提取相同的 tar 文件需要幾分鐘。tar 沒有任何特殊選項,只是 tar xvf 。
編輯
我正在使用 4 TB 西部數據 WD40EFRX SATA 驅動器。這 4 個驅動器作為物理磁碟直接分配給 Hyper-V VM。這 4 張光碟在 Debian Stretch NFS 伺服器中被製成 RAID 5 ext4 文件系統。我使用的測試文件是 40.000 個不同大小的文件,總共增加了 2 GB。(主要是小型文件、圖像和文本以及一些 jar 文件)。
兩台伺服器共享同一個 Hyper-V 外部虛擬交換機,連接到英特爾 I211 千兆網路適配器
從 NFS 客戶端到 NFS 伺服器的 Ping 範例:
PING xyzserver (192.168.1.49) 56(84) 字節數據。來自 xyzserver (192.168.1.49) 的 64 個字節:icmp_seq=1 ttl=64 時間=41.2 ms
來自 xyzserver (192.168.1.49) 的 64 個字節:icmp_seq=2 ttl=64 時間=5.48 ms
來自 xyzserver (192.168.1.49) 的 64 個字節: icmp_seq=3 ttl=64 time=29.7 ms
來自 xyzserver (192.168.1.49) 的 64 個字節:icmp_seq=4 ttl=64 time=64.2 ms
來自 xyzserver (192.168.1.49) 的 64 個字節:icmp_seq=5 ttl=64 time=43.0 ms
來自 xyzserver (192.168.1.49) 的 64 個字節:icmp_seq=6 ttl=64 time=11.5 ms
來自 xyzserver (192.168.1.49) 的 64 個字節:icmp_seq=7 ttl=64 time=29.4 ms
編輯2
我相信這與 Debian 9 無關。即使是 Debian。也不僅僅是 NFS。我們還使用 Windows 機器和 CIFS 進行了測試,性能非常相似。
使用大文件時的性能很好(特別是使用 NFS),但對於小文件(原始碼等),它可能會變得非常慢(甚至低於 1 MB/s)。
關於我做錯了什麼的任何想法?(老問題)
我們正在考慮不使用 NFS 或 CIFS。
知道我們可以做些什麼來獲得體面的表現嗎?(新問題)
擁有一個快速的 RAID5 磁碟子系統和一個快速的伺服器並在同一台伺服器上擁有兩個虛擬機似乎很荒謬,我們無法找到一種方法來以相當快的速度在共享文件系統中 rsync 文件或 untar 文件。
關於我可以使用什麼的任何建議?(硬體軟體)
在 Hyper-V 下,CIFS 和 NFS 的性能問題沒有解決這些問題。
我們最終決定搬到 PROXMOX,一切都變得更好了。不知道為什麼,可能是 Debian 的 Proxmox 虛擬化,因為它也基於 Debian,比 Hyper-V 的效率要高得多,而 Hyper-V 很可能對 Windows 虛擬化更有效?