Lustre性能優化方案

博客公告:

 (1)本博客所有博客文章搬遷至《博客蟲http://blogchong.com/

                     (2)文章對應的源碼下載鏈接參考博客蟲網站首頁的“代碼GIT”;

                      (3)更多的相關文章更新,以及代碼等,請關注博客蟲網站,網站中有技術Q羣,以及代碼共享鏈接。

                 (4)該博客內容還會繼續更新,不過會慢一些。



該文檔爲原創文檔,若要轉載,請標明出處:http://blog.sina.com.cn/s/blog_8c243ea30101ikl7.html 

Lustre性能優化方案

類型

詳細

備註

該部分文檔爲lustre性能調研部分文檔

 

文檔描述

²  其他相關文檔請參考新浪博客http://blog.sina.com.cn/huangchongyuan

²  

²  部分文檔涉及到源碼,有需要的博客留言

² 歡迎加入storm-分佈式-IT技術交流羣(191321336,羣中有詳細的資料),一起討論技術,一起分享代碼,一起分享設計。

 

1 Lustre性能優化參考

 

1.1 網絡帶寬

網絡帶寬往往決定着lustre文件系統的聚合帶寬。Lustre是通過多個OSS同時讀取數據來提高系統整體的讀寫性能,然而,如果網絡傳輸的性能過低,則無法發揮lustre文件系統的性能優勢。

從以下幾點考慮網絡帶寬對性能的影響:

²  網絡類型(TCP/IP網絡及Infiniband網絡)

²  網卡類型(千兆網/萬兆網)

²  網卡數量及綁定方式(幾個網卡綁定一起)

²  網卡綁定模式

補充:

Ø 通常情況下Infiniband網絡性能遠遠高於TCP/IP網絡,但成本較高

Ø 萬兆網比千兆網性能高

Ø 網卡綁定模式一般爲6

 

1.2 Lustre自身設置

Luster自身設置主要是條塊數(即OST的個數)及如何條塊化,這兩方面也是lustre實現I/O併發的關鍵。條帶化能夠使系統達到併發的目的,從而影響了系統的性能。

Luster自身設置對系統性能的影響主要從以下幾個方面:

²  條塊大小(stripesize,min=64KB)

²  條塊數(stripecount)

²  起始塊數(start-ost,即條塊起始位置)

補充:

Ø 通常情況下start-ost默認爲-1,不需要進行修改,該設置即不指定初始位置,能夠很好達到負載均衡的目的

Ø 通常情況下lustre條塊的大小的增加,聚合帶寬總體呈下降趨勢,當條塊過大時,某一時間內的多個I/O發生在同一個OST上,造成I/O等待,通常設置爲64KB

Ø 通常情況下,隨着條塊數增加,聚合帶寬總體呈上升趨勢,在一定的環境下,合理的配置OST可以良好的發揮lustre的系統性能

 

1.3 客戶端設置

Lustre文件系統中,客戶端生成一個全局存儲空間,用戶數據通過客戶端存入lustre文件系統中,所客戶端的設置也會影響系統的性能。

主要從以下幾點:

²  單個客戶端進程數(連接數)

²  讀寫塊大小

²  客戶端數量

補充:

Ø 隨着連接數(進程數)的增加,聚合帶寬開始呈上升趨勢,到一定程度後穩定(此時系統性能尚未達到飽和),隨着連接數的增加,帶寬開始下降

Ø 隨着I/O讀寫塊的大小增加,聚合帶寬開始呈現上升趨勢,到一定程度後穩定,隨後增加塊大小聚合帶寬反而下降,當64KB~64MB大小時,保持穩定

Ø 隨着客戶端數目的增加,讀模式下的聚合帶寬明顯提高,而寫模式下的聚合帶寬則變化不明顯。

 

1.4 存儲RAID

Luster底層存儲設備採用通用存儲設備,可以是單磁盤,也可以是RAID,也可以是LVP,大部分採用RAID方式,既能保證聚合存儲容量,又能提供數據保護。

主要從以下幾點說明:

²  RAID方式(硬RAID/軟RAID)

²  RAID模式(RAID0/1/2/3/4/5/6/10/01)

²  硬RAID卡類型

²  做RAID的磁盤類型(SATA、SAS、SSD)

補充:

Ø 通常情況下,lustre文件系統底層採用硬RAID的方式進行底層存儲,性能遠遠大於軟RAID,但成本高

Ø Luster通常做RAID6,提高數據保護

Ø OST磁盤一般採用低成本的SATA盤,而MDS則一般採用SSD盤

 

2 Lustre小文件優化

 

2.1 整體設置

(1)通過應用聚合讀寫提高性能,比如對小文件進行Tar,或創建大文件或通過loopbackmount來存儲小文件。小文件系統調用開銷和額外的I/O開銷非常大,應用聚合優化可以顯著提高性能。另外,可以使用多節點、多進程/多線程儘可能通過聚合來提高I/O帶寬。
(2)應用採用O_DIRECT方式進行直接I/O,讀寫記錄大小設置爲4KB,與文件系統保持一致。對輸出文件禁用locking,避免客戶端之間的競爭。
(3)應用程序儘量保證寫連續數據,順序讀寫小文件要明顯優於隨機小文件I/O。
(4)OST採用SSD或更多的磁盤,提高IOPS來改善小文件性能。創建大容量OST,而非多個小容量OST,減少日誌、連接等負載。
(5)OST採用RAID 1+0替代RAID 5/6,避免頻繁小文件I/O引起的數據校驗開銷。

 

2.2 系統設置

(1)禁用所有客戶端LNET debug功能:缺省開啓多種調試信息,sysctl -wlnet.debug=0,減少系統開銷,但發生錯誤時將無LOG可詢。
(2)增加客戶端Dirty Cache大小:lctl set_paramosc.max_rpcs_in_flight,缺省爲8,提升至32將提高數據和元數據性能。不利之處是如果服務器壓力很大,可能反而會影響性能。
(4)控制Lustre striping:lfs setstripe -c 0/1/-1/path/filename,如果OST對象數大於1,小文件性能會下降,因此將OST對象設置爲1。
(5)客戶端考慮使用本地鎖:mount -t lustre -olocalflock,如果確定多個進程從同一個客戶端進行寫文件,則可用localflock代替flock,減少發送到MDS的RPC數量。
(6)使用loopbackmount文件:創建大Lustre文件,與loop設備關聯並創建文件系統,然後將其作爲文件系統進行mount。小文件作用其上,則原先大量的MDS元數據操作將轉換爲OSS讀寫操作,消除了元數據瓶頸,可以顯著提高小文件性能。這種方法應用於scratch空間可行,但對於生產數據應該謹慎使用,因爲Lustre目前工作在這種模式下還存在問題。操作方法如下:
 dd if=/dev/zero of=/mnt/lustre/loopback/scratchbs=1048576 count=1024 
 losetup /dev/loop0/mnt/lustre/loopback/scratch
 mkfs -t ext4 /dev/loop0 
 mount /dev/loop0 /mnt/losf

 

3 文檔說明

Ø  Lustre文件系統的性能優化研究-2011-王博,李先國,張曉

Ø  基於軟RAID的lustre性能影響要素簡析-2008-張丹丹,姚繼峯

Ø  Luster I/O性能最佳實踐

Ø  Luster文件系統I/O性能的分析和改進-林松濤,周恩強,廖湘科

發佈了26 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章