“原生的OpenStack并不支持統一存儲,云主機服務Nova、鏡像服務Glance、云硬盤服務Cinder的后端存儲各不相同。這樣的設計缺乏合理的橫向擴展性,當系統壓力增大時,必然會出現各種問題。”UnitedStack資深存儲研發工程師孟圣智在由51CTO舉辦的WOT峰會上表示,“這也是我們在構建云平臺的時候,重新對存儲進行設計,實現了統一存儲的初衷。目前,UOS云平臺所有的數據都在Ceph的資源池里,包括創建虛擬機,遷移,擴容,縮容等所有的操作都可以避免數據的傳輸。”
優化的效果
每個云硬盤最大支持 6000 IOPS和170 MB/s的吞吐率,95%的4K隨機寫操作的延遲小于2ms 。
所有數據都是三副本,強一致性,持久性高達10個9。
創建、刪除、掛載、卸載實現秒級操作。
實時快照。
提供兩種云硬盤類型,性能型和容量型。
統一存儲架構的再設計
“原生的OpenStack中缺乏統一存儲,后果是內耗嚴重,單純從創建虛擬機虛擬機這一操作來看,通常需要1~3分鐘。” UnitedStack通過將Ceph統一作為Nova/Glance/Cinder的存儲后端,基于COW的卷創建和快照操作,實現了虛機的秒級創建。除此之外,還解決了虛機漂移和啟動風暴等問題。
如何優化操作系統和Qemu
“除了架構設計將存儲統一到Ceph,實現資源池化之外。對于操作系統和QEMU的優化也非常必要。”具體的優化主要包括以下方面:
優化操作系統
CPU
關閉CPU節能模式
使用Cgroup綁定Ceph OSD進程到固定的CPU Cores上
Memory
關閉NUMA
設置vm.swappiness=0
Block
設置SSD的調度算法為deadline
FileSystem
設置掛載參數”noatime nobarrier”
優化Qemu
Throttle: 平滑的I/O QoS算法
RBD: 支持discard和flush
Burst: 支持突發請求
Virt-scsi: 支持多隊列
優化的重點:針對Ceph的七劍
“相對于針對操作系統和Qemu的優化而言,對Ceph的優化才是重中之重。針對Ceph的優化是一個長期摸索的過程,實際上,很多問題也是在平臺長時間運營、規模逐漸擴展之后才暴露出來的。在UnitedStack的運營過程中,我們總結出以下七個方面。”
1.增大文件標識符數量,將文件名描述符全部緩存在內存里;
2.啟用Ceph的Sparse Write,并對XFS進行patch解決fiemap的BUG;
3.Ceph的默認參數并不適合SSD,按照SSD的要求進行參數調優;
4.打開RBD Cache,可以獲得明顯的性能提升;
5.通過選擇性的延長特性線程的活躍時間,大大減少Context Switch的次數,降低I/O延遲;
6.針對Simple Messenger線程數過多、延遲較高的問題,開發了Async Messenger組件,實現更低的延遲,并大大減少了線程數;
7.Ceph默認的Cache機制并不適合UnitedStack的緩存特點,引入RandomCache解決這一問題,Cache訪問速度比社區版本提高一個量級。
演講PDF下載地址: http://down.51cto.com/data/2038809