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