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