Virtualization
SAN 和管理程序之間的 iSCSI 性能非常緩慢
我們在執行 iSCSI-Target 的 1U Ubuntu 伺服器中的 mans SAN 設置很差,RAID-0 中有兩個 300GB 驅動器。然後我們將它用於虛擬機的塊級儲存。管理程序通過專用 VLAN 和介面上的千兆位連接到 SAN。
我們只有一個虛擬機設置並進行一些基準測試。如果我們
hdparm -t /dev/sda1
從虛擬機執行,我們會從虛擬機到 SAN 獲得 75MB/s 的“ok”性能。./configure
然後我們基本上用和編譯一個包make
。一切開始正常,但突然之間 SAN 上的平均負載增長到 7+,事情變得緩慢。當我們 SSH 進入 SAN 並執行 top 時,確定負載是 7+,但 CPU 使用率基本上沒有,而且伺服器有 1.5GB 的可用記憶體。當我們終止虛擬機上的編譯時,SAN 上的 LOAD 會慢慢回到低於 1 的數字。這到底是什麼原因造成的?我們如何進一步診斷呢?
這是高負載期間 SAN 的兩個螢幕截圖。
1> Output of iotop on the SAN:
2> Output of top on the SAN:
在目標上啟用寫入記憶體後,您應該會看到性能顯著提高(細節取決於實現 - 您使用的是什麼,tgt?)和您的磁碟
hdparm -W 1 /dev/sda hdparm -W 1 /dev/sdb
然而,這是有代價的:在斷電或 SAN 系統掛起的情況下,這將危及數據完整性(尤其是在執行數據庫時),因為被認為已永久寫入磁碟的數據僅駐留在 volatile 中動態隨機存取儲存器。為了降低這種風險,您應該使用帶有 BBWC(電池支持的寫入記憶體)的控制器,其中數據可以在斷電一段時間(通常為 1-2 天)後存活。
ESXi 的主要“問題”是它不斷地同步()磁碟。將元數據寫入 VMFS(如果有的話)的需要使情況變得更糟。每當人們使用沒有寫入記憶體的控制器時,vmware 社區論壇上到處都是“我的磁碟很慢”的文章。