glusterfs性能優化

首先說兩個關鍵知識點,供大家參考:

1.glusterfs 3.x.x版本後,客戶端不再存儲配置文件。客戶端依靠nfs協議(或gluster native協議)動態的從服務端獲取卷的信息。

2.與其它分佈式存儲不同,如果你建立的是複製卷,gluster客戶端會併發的向幾個服務器寫入\讀取數據,而不是通過服務器之間進行數據的傳輸。

接下來介紹兩個測試時可能會用到的工具:

1.iozone:文件系統的benchmark工具,測試不同文件系統的讀寫性能。具體使用方法可以參考網上資料相關的介紹。

2.nethogs:可以監控每個進程的網絡帶寬佔用情況。

進入正題,開始我們的性能測試及優化工作吧。先來介紹一下配置文件中與性能相關的參數。

performance/quick-read:優化讀取小文件的性能。

performance/read-ahead:用預讀的方式提高讀取的性能,有利於應用頻繁持續性的訪問文件,當應用完成當前數據塊讀取的時候,下一個數據塊就已經準備好了。

performance/write-behind:在寫數據時,先寫入緩存內,再寫入硬盤,以提高寫入的性能。

performance/io-threads:由於glusterfs服務是單線程的,使用IO線程轉換器可以較大的提高性能。

performance/io-cache:緩存已經被讀過的數據,以提高IO性能,當IO緩存中繼檢測到有寫操作的時候,它就會把相應的文件從緩存中刪除。

具體的配置可參考:http://www.gluster.org/community/documentation/index.php/Translators

千兆網環境下,8臺物理服務器(32GB內存)組成的glusterfs server,建立複製卷(replicate volume),如下圖所示

下面開始我們的測試:

1.定義測試文件大小爲32GB,每條記錄大小1MB,進行單線程的讀寫測試,同時生成存儲測試結果的excel文件

iozone-s 32g -r 1m -i 0 -i 1 -f /data/gluster_test/iozone -Rb /mnt/test_iozone.xls

2.定義測試文件大小爲32GB,每條記錄大小1MB,進行8線程併發讀寫測試,同時生成存儲測試結果的excel文件

iozone -s 32g -r1m -i 0 -i 1 -f /data/gluster_test/iozone –t 8 -Rb /mnt/test_iozone.xls

測試結果如下

可以看到,在千兆網絡環境,默認配置下,Glusterfs讀取性能還是不錯的,可以達到100MB/s。寫性能30MB/s,還有較大的提升空間。使用一些Translator進行優化後,寫性能有了較大的提升,基本可以達到60MB/s,這個速度還是可以接受的。

後面在client端和server端做了一些優化。server端主要是增加io-threads這個Translator,client端主要是增加io-cache,write-behind,read-ahead,quick-read這些Translator。

Client端:

Server端:

優化後帶寬基本被跑滿,優化前後性能對比如下圖:


通過一步步的優化過程,個人發現write-behind對性能的提升效果最明顯

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章