張晶華 ,張昕源 ,蔣同軍 ,閆洪吉
(1.國(guó)家電網(wǎng)有限公司技術(shù)學(xué)院分公司,山東 濟(jì)南 250002;2.中國(guó)郵政集團(tuán)公司山東省分公司,山東 濟(jì)南 250011)
近年來(lái),桌面云在政府、企業(yè)、醫(yī)療、教育等行業(yè)廣泛部署,提升了工作效率,簡(jiǎn)化了管理,提高了安全性和標(biāo)準(zhǔn)化水平并降低了運(yùn)營(yíng)成本。通過(guò)部署桌面云[1],能夠讓管理員在數(shù)據(jù)中心對(duì)所有桌面和應(yīng)用統(tǒng)一配置,簡(jiǎn)單的鼠標(biāo)點(diǎn)擊操作就可以完成原來(lái)需要幾周甚至幾個(gè)月的時(shí)間才能完成的系統(tǒng)升級(jí)、軟件更新、補(bǔ)丁安裝、數(shù)據(jù)備份等操作。同時(shí),用戶可以隨時(shí)接入,極大地提高了工作效率,整體系統(tǒng)的耗電量和電子垃圾的產(chǎn)生量也大幅減少,更適合環(huán)保理念和綠色數(shù)據(jù)中心的建設(shè),數(shù)據(jù)安全和保護(hù)也更容易控制和實(shí)現(xiàn)。長(zhǎng)期來(lái)看,桌面云可以幫助公司大幅節(jié)省辦公成本。
目前國(guó)內(nèi)使用虛擬桌面的用戶基數(shù)龐大,將近千萬(wàn)級(jí),未來(lái)將會(huì)有更多的企業(yè)和機(jī)構(gòu)選擇采用桌面云的方案。然而,很多用戶對(duì)于虛擬桌面體驗(yàn)的反饋并不好,主要體現(xiàn)在系統(tǒng)登陸超時(shí),操作卡頓,間歇性無(wú)法響應(yīng)的機(jī)率比傳統(tǒng)的PC機(jī)要高很多。由于服務(wù)器的標(biāo)準(zhǔn)化程度很高,X86架構(gòu)的普及,CPU和內(nèi)存資源的快速升級(jí),排除虛擬化軟件本身的差異和網(wǎng)絡(luò)帶寬可能存在的設(shè)計(jì)瓶頸,整體桌面云架構(gòu)中最可能出現(xiàn)問(wèn)題的環(huán)節(jié)就在存儲(chǔ)上。長(zhǎng)久以來(lái),存儲(chǔ)已經(jīng)變成制約整體系統(tǒng)性能升級(jí)的最大制約因素,而對(duì)于桌面云環(huán)境,存儲(chǔ)的制約尤為明顯。
本文對(duì)比了傳統(tǒng)存儲(chǔ)介質(zhì)利弊,分析了云存儲(chǔ)性能要求,研究了一種適合閃存陣列的日志結(jié)構(gòu)文件系統(tǒng)算法,并通過(guò)這種算法的應(yīng)用來(lái)優(yōu)化桌面云存儲(chǔ)系統(tǒng),為桌面云存儲(chǔ)讀寫(xiě)性能的提升提供參考。
存儲(chǔ)性能的提升一直受到磁盤(pán)介質(zhì)和制造工藝的限制,基本處于原地踏步的狀態(tài),只能依靠增加磁盤(pán)數(shù)量進(jìn)而增加并行讀寫(xiě)的能力,以提高存儲(chǔ)系統(tǒng)整體的吞吐量和交互能力。在機(jī)械磁盤(pán)讀寫(xiě)數(shù)據(jù)時(shí),由于數(shù)據(jù)需要保存在不同扇區(qū)的不同磁道上,當(dāng)數(shù)據(jù)保存不連續(xù)的時(shí)候(即隨機(jī)分布),磁頭需要通過(guò)機(jī)械臂的移動(dòng),來(lái)尋找每一份數(shù)據(jù)存放的地點(diǎn),通常情況下,一塊企業(yè)級(jí)磁盤(pán)的平均尋道時(shí)間約為10~20 ms。而在一個(gè)企業(yè)級(jí)的存儲(chǔ)系統(tǒng)中,存儲(chǔ)算法會(huì)同時(shí)調(diào)用多塊磁盤(pán)共同參與讀寫(xiě)操作,共同參與I/O請(qǐng)求的磁盤(pán)數(shù)量越多,同時(shí)能夠并發(fā)的讀寫(xiě)I/O數(shù)量越大,多個(gè)I/O請(qǐng)求對(duì)同一塊磁盤(pán)發(fā)生請(qǐng)求從而產(chǎn)生熱點(diǎn)的可能性也就越低。
但在桌面應(yīng)用虛擬化場(chǎng)景下,由于存儲(chǔ)I/O需求會(huì)同時(shí)來(lái)自于不同的虛擬機(jī)或虛擬桌面,I/O的隨機(jī)性進(jìn)一步被放大,使得多個(gè)I/O對(duì)同一磁盤(pán)發(fā)生請(qǐng)求的概率同步增加,容量使用率越高,這種可能性越大,對(duì)性能的影響就越大。當(dāng)用戶開(kāi)始進(jìn)行業(yè)務(wù)或應(yīng)用虛擬化以后,隨著存儲(chǔ)I/O的調(diào)度復(fù)雜度和隨機(jī)度的持續(xù)提升,存儲(chǔ)的性能瓶頸逐漸開(kāi)始突顯出來(lái),不論如何增加CPU資源或內(nèi)存資源,系統(tǒng)的性能都開(kāi)始變得無(wú)法提升,更嚴(yán)重的場(chǎng)景還會(huì)導(dǎo)致業(yè)務(wù)卡頓,訪問(wèn)超時(shí),甚至服務(wù)中止。
基于閃存技術(shù)的固態(tài)硬盤(pán)(SSD)直接使用微電壓的變化進(jìn)行數(shù)據(jù)的存取,避免了機(jī)械磁頭的物理尋道,從而有效降低了讀寫(xiě)延遲,徹底打破了單塊機(jī)械磁盤(pán)的讀寫(xiě)瓶頸,實(shí)現(xiàn)了單盤(pán)百倍的性能提升。
除去價(jià)格因素,SSD本身的寫(xiě)疲勞特性和寫(xiě)入放大效應(yīng)(Write Amplification)是目前可能影響其發(fā)展的最重要問(wèn)題。SSD的寫(xiě)疲勞特性是指SSD的每個(gè)基本保存數(shù)據(jù)單元(CELL)最大允許的反復(fù)擦寫(xiě)次數(shù),一旦接近該閾值,該數(shù)據(jù)單元中的數(shù)據(jù)可能會(huì)發(fā)生丟失并失效。SSD中常見(jiàn)的MLC介質(zhì),寫(xiě)疲勞只有4 000~5 000次,SLC介質(zhì)雖然可以達(dá)到10萬(wàn)反復(fù)寫(xiě)入,但是考慮到整體成本和容量的限制,使用得越來(lái)越少。
由于SSD寫(xiě)入的基本單元是頁(yè),而擦除的基本單元是塊,這就可能導(dǎo)致只希望寫(xiě)入4 KB的數(shù)據(jù),而實(shí)際需要先清除512 KB~1 MB的數(shù)據(jù)再進(jìn)行寫(xiě)入,從而造成寫(xiě)入放大的效應(yīng)[2],如圖1所示。另一方面,如果需要進(jìn)行大量的小數(shù)據(jù)塊覆蓋寫(xiě)操作,就會(huì)加劇寫(xiě)入放大效應(yīng),增加數(shù)據(jù)塊反復(fù)擦寫(xiě)的次數(shù),最終對(duì)SSD的寫(xiě)入壽命也會(huì)造成大幅影響。
圖1 閃存的寫(xiě)放大效應(yīng)說(shuō)明
總之,雖然SSD性能優(yōu)異,但是寫(xiě)入穩(wěn)定性方面仍然有待進(jìn)一步提升,如果從容量上來(lái)看,成本也還是比機(jī)械磁盤(pán)高幾倍到十幾倍不等,同時(shí)如果在順序讀寫(xiě)場(chǎng)景下,兩種磁盤(pán)介質(zhì)的性能表現(xiàn)相差并不大。兩者性能對(duì)比如圖2所示。因此,迫切需要一種整合兩種磁盤(pán)介質(zhì)優(yōu)勢(shì)、彌補(bǔ)缺點(diǎn)的技術(shù)。
圖2 閃存和機(jī)械磁盤(pán)優(yōu)劣勢(shì)分析圖
在數(shù)據(jù)庫(kù)環(huán)境中,大量的I/O并發(fā)請(qǐng)求并不是實(shí)時(shí)將每一個(gè)數(shù)據(jù)請(qǐng)求都直接更新到后端存儲(chǔ)之中,而是將每個(gè)I/O存儲(chǔ)過(guò)程的交易日志,以順序?qū)懭氲姆绞桨磳?shí)時(shí)順序更新到一個(gè)交易日志之中 (如Transaction Log或Redo Log)。日志寫(xiě)入完成后,就可以認(rèn)為該筆交易更新完成。實(shí)際數(shù)據(jù)會(huì)批量聚合后,定期更新至數(shù)據(jù)庫(kù)文件中,從而減小每一筆交易的I/O等待時(shí)間,提升數(shù)據(jù)庫(kù)的交互讀寫(xiě)性能。
存儲(chǔ)的文件系統(tǒng)同理可引入日志的設(shè)計(jì)思想來(lái)實(shí)現(xiàn)存儲(chǔ)的 I/O請(qǐng)求,基于以上設(shè)計(jì)思想,Ousterhout提出了日志結(jié)構(gòu)文件系統(tǒng)(log-structured file system,簡(jiǎn)稱(chēng) LFS)的設(shè)想[3],Rosenblum 設(shè)計(jì)并實(shí)現(xiàn)了 Sprite-LFS[4-5]。
LFS的設(shè)計(jì)理念主要包含增大主內(nèi)存容量,把一系列文件系統(tǒng)更改信息緩存于主內(nèi)存之中,并在一次尋道操作中把所有的更新信息連續(xù)寫(xiě)入磁盤(pán)[6]。這一寫(xiě)入算法就巧妙地把傳統(tǒng)文件系統(tǒng)中大量小的同步隨機(jī)寫(xiě)入操作轉(zhuǎn)換為大的異步連續(xù)寫(xiě)入,從而顯著地改善了磁盤(pán)的寫(xiě)入性能。與此同時(shí),采用結(jié)構(gòu)化日志也有利于加快文件系統(tǒng)崩潰后的恢復(fù)速度,從而不必像傳統(tǒng)文件系統(tǒng)一樣,在崩潰后掃描整個(gè)文件系統(tǒng)來(lái)恢復(fù)一致性,而只需要檢查日志崩潰前的最后部分即可,如圖3所示。
由于當(dāng)時(shí)的隨機(jī)寫(xiě)入應(yīng)用需求并不廣泛,并且因?yàn)槔厥招实膯?wèn)題,隨著空間使用率越高,文件系統(tǒng)碎片化的問(wèn)題就越嚴(yán)重,性能下降也越嚴(yán)重。除此之外LFS對(duì)于內(nèi)存的需求往往比其他文件系統(tǒng)大得多,成本較高,對(duì)順序讀寫(xiě)和隨機(jī)讀操作的性能都沒(méi)有提升,該技術(shù)并未被廣泛應(yīng)用。但是此文件系統(tǒng)架構(gòu)卻延伸出了很多經(jīng)典的文件系統(tǒng),如SUN ZFS、Netapp的WAFL文件系統(tǒng),這兩種經(jīng)過(guò)特別優(yōu)化的LFS也確實(shí)給用戶帶來(lái)了非常高的價(jià)值。
雖然LFS是完全針對(duì)機(jī)械磁盤(pán)進(jìn)行的文件系統(tǒng)結(jié)構(gòu)優(yōu)化,是為了提升機(jī)械磁盤(pán)的寫(xiě)入效率,但真正將LFS發(fā)揚(yáng)光大的卻是閃存。每一塊閃存介質(zhì)都有一個(gè)控制芯片,用以將內(nèi)部并連的若干芯片統(tǒng)一起來(lái)形成一個(gè)大的塊設(shè)備,并通過(guò)統(tǒng)一的接口對(duì)外提供存儲(chǔ)容量。由于存在閃存寫(xiě)入壽命和寫(xiě)入放大的問(wèn)題,閃存寫(xiě)入數(shù)據(jù)時(shí)若能夠?qū)崿F(xiàn)大數(shù)據(jù)塊的順序?qū)懭?,便可減少隨機(jī)小數(shù)據(jù)塊寫(xiě)入對(duì)閃存性能和壽命的影響。對(duì)于讀性能,閃存本身的讀取機(jī)制可以實(shí)現(xiàn)提升,不需要文件系統(tǒng)特別優(yōu)化,而這一點(diǎn)正是LFS的適用場(chǎng)景。所以,現(xiàn)在市面上的每一塊閃存介質(zhì),內(nèi)部的微碼中都集成了一個(gè)完整的LFS。
由于LFS可以從理論上解決閃存的寫(xiě)入放大和寫(xiě)入疲勞的問(wèn)題,但并不代表現(xiàn)在所有LFS都可能適用于閃存。由于絕大多數(shù)現(xiàn)存的LFS都是基于機(jī)械進(jìn)行設(shè)計(jì)的,不論是從數(shù)據(jù)的整理機(jī)制、CPU調(diào)度算法、內(nèi)存使用效率等方面都與閃存真正的需求相差甚遠(yuǎn)。
桌面云對(duì)于存儲(chǔ)的需求與常見(jiàn)的數(shù)據(jù)庫(kù)、商業(yè)應(yīng)用等有顯著不同,主要體現(xiàn)在:
1)高性能。桌面云中往往運(yùn)行了成千上萬(wàn)的虛擬桌面終端,對(duì)性能的需求是極其苛刻的。經(jīng)過(guò)大量的實(shí)踐測(cè)試,發(fā)現(xiàn)一個(gè)虛擬桌面根據(jù)使用場(chǎng)景的不同,在穩(wěn)定運(yùn)行時(shí)往往需要10~30 IOPS不等,在啟動(dòng)時(shí)需要100~200 IOPS不等。
2)大容量。一個(gè)桌面云環(huán)境中,往往需要為每個(gè)桌面使用者分配足夠的存儲(chǔ)容量,通常情況下會(huì)分配40~100 GB不等,對(duì)于成千上萬(wàn)規(guī)模的桌面云環(huán)境來(lái)說(shuō),存儲(chǔ)容量的壓力同樣不容小覷。若是通過(guò)閃存來(lái)解決存儲(chǔ)性能的問(wèn)題,而存儲(chǔ)容量的剛性需求卻是閃存應(yīng)用最大的挑戰(zhàn),因?yàn)樵谀壳暗某杀舅缴希脩暨€無(wú)法承擔(dān)全閃存存儲(chǔ)架構(gòu)的價(jià)格成本。
圖3 日志結(jié)構(gòu)文件系統(tǒng)(LFS)與傳統(tǒng)文件系統(tǒng)(FFS)的架構(gòu)區(qū)別
3)全隨機(jī)性。由于所有的存儲(chǔ)需求都會(huì)經(jīng)過(guò)虛擬化軟件層進(jìn)行處理,所以在每個(gè)最終用戶的使用中不論是順序還是隨機(jī)請(qǐng)求,對(duì)于后端的存儲(chǔ)都會(huì)變成100%的隨機(jī)請(qǐng)求,這就需要存儲(chǔ)對(duì)于隨機(jī)I/O有很好的優(yōu)化。同時(shí),隨機(jī)性不單表現(xiàn)在I/O的請(qǐng)求方面,還會(huì)表現(xiàn)在讀寫(xiě)比例的不可預(yù)測(cè)性,與固定的商業(yè)應(yīng)用和數(shù)據(jù)庫(kù)不同,管理員實(shí)際上很難在設(shè)計(jì)階段對(duì)讀寫(xiě)比例進(jìn)行預(yù)測(cè),而且實(shí)際監(jiān)控中發(fā)現(xiàn)不同時(shí)段及不同的使用場(chǎng)景,讀寫(xiě)比例差異性非常大,這就需要存儲(chǔ)系統(tǒng)對(duì)不同的讀寫(xiě)比例有很好的包容性,針對(duì)不同的I/O大小及不同的讀寫(xiě)比例都能有很好的性能表現(xiàn)。
4)低延遲。延遲水平的高低是影響桌面云最終用戶體驗(yàn)的最重要指標(biāo)。即使IOPS達(dá)標(biāo),但延遲水平很高,用戶的體驗(yàn)仍然會(huì)非常差,這也是不能只采用機(jī)械磁盤(pán)而一定要使用閃存的原因。
桌面云環(huán)境對(duì)于存儲(chǔ)系統(tǒng)確實(shí)有著十分苛刻的要求,不但要求延遲低、性能高,還要求容量大、效率高,這也就勢(shì)必要求在選擇方案時(shí)要考慮使用閃存技術(shù)以提升技能,同時(shí)采用機(jī)械磁盤(pán)以滿足容量,將這兩種技術(shù)有機(jī)結(jié)合起來(lái),充分發(fā)揮每一種技術(shù)的優(yōu)勢(shì)。
在如何將閃存和機(jī)械磁盤(pán)有效融合方面,主要有兩大方向。第一種是存儲(chǔ)分層,傳統(tǒng)的存儲(chǔ)廠商通常通過(guò)制定策略,將冷熱數(shù)據(jù)進(jìn)行升降級(jí)操作從而把熱點(diǎn)數(shù)據(jù)集中在閃存空間中,以提升性能,但這種存儲(chǔ)分層算法對(duì)于隨機(jī)寫(xiě)入沒(méi)有太多的優(yōu)化,而且升降級(jí)的數(shù)據(jù)塊顆粒度往往比較大,效率不太高。第二種是閃存加速技術(shù),通過(guò)將閃存作為擴(kuò)展的內(nèi)存使用,可以有效減少熱點(diǎn)數(shù)據(jù)緩存的顆粒度,提升加速效率,同時(shí)有效避免數(shù)據(jù)的頻繁遷移對(duì)系統(tǒng)額外的性能開(kāi)銷(xiāo),但是依然沒(méi)有對(duì)隨機(jī)寫(xiě)入做專(zhuān)門(mén)的優(yōu)化,只是能夠有效提升隨機(jī)讀的性能,寫(xiě)的性能還是要依賴磁盤(pán)數(shù)量和轉(zhuǎn)速的限制,寫(xiě)延遲也比較大。
日志結(jié)構(gòu)分布式文件系統(tǒng) (HDF based Logstructured File System,簡(jiǎn)稱(chēng)HLFS)是基于Hadoop分布式文件系統(tǒng)(Hadoop Distributed File System,簡(jiǎn)稱(chēng)HDFS)構(gòu)建的云存儲(chǔ)平臺(tái),結(jié)合HLFS客戶端與后臺(tái)存儲(chǔ)集群相分離的特點(diǎn),利用長(zhǎng)期未使用算法作為緩存策略,在HLFS客戶端內(nèi)存中設(shè)計(jì)并實(shí)現(xiàn)HLFS緩存,采用固定時(shí)間間隔刷新緩存的策略來(lái)保證數(shù)據(jù)一致性,能夠有效降低HLFS與后臺(tái)集群的交互頻率,減少用戶感知數(shù)據(jù)的讀寫(xiě)時(shí)間[7]。
根據(jù)閃存與機(jī)械磁盤(pán)技術(shù)的比較以及日志結(jié)構(gòu)分布式文件系統(tǒng)設(shè)計(jì)思想,如果把日志結(jié)構(gòu)文件系統(tǒng)的寫(xiě)入優(yōu)化機(jī)制與閃存加速技術(shù)融合起來(lái),以實(shí)現(xiàn)讀寫(xiě)的加速,將是同時(shí)解決隨機(jī)場(chǎng)景下讀寫(xiě)雙重加速的存儲(chǔ)算法。某些新興的廠家采用了這種算法,其中最著名的應(yīng)該是Nimble Storage的CASL(Cache Accelerate Sequential Layout,簡(jiǎn)稱(chēng) CASL)算法[8-9]和新推出的VSAN技術(shù),與此同時(shí)NextGen和Infinidat公司的產(chǎn)品也采用類(lèi)似架構(gòu)的算法??梢?jiàn),這種將閃存和機(jī)械磁盤(pán)的優(yōu)勢(shì)相結(jié)合的思路在未來(lái)很可能成為存儲(chǔ)技術(shù)的主流,就像混合動(dòng)力車(chē)一樣,物盡其用,實(shí)現(xiàn)成本與效率的最佳平衡。
以Nimble Storage的CASL算法為例,CASL采用了一種更加強(qiáng)大的結(jié)構(gòu)日志寫(xiě)入算法,不但在寫(xiě)入數(shù)據(jù)時(shí)進(jìn)行順序化整理,還加入了在線壓縮的技術(shù)和可變長(zhǎng)數(shù)據(jù)塊技術(shù),可以在一次條帶寫(xiě)入操作中完成傳統(tǒng)存儲(chǔ)幾千次的I/O寫(xiě)入操作,只需要使用低轉(zhuǎn)速大容量的機(jī)械磁盤(pán)就可以實(shí)現(xiàn)媲美全閃存的寫(xiě)入性能。條帶同時(shí)按照數(shù)據(jù)的冷熱程度選擇性復(fù)制到閃存空間中,以提升閃存的讀命中率,降低讀取延遲,從而徹底實(shí)現(xiàn)存儲(chǔ)性能與磁盤(pán)性能和磁盤(pán)數(shù)量的綁定關(guān)系,這一特性在桌面云中非常重要。
在桌面云項(xiàng)目中,設(shè)想一個(gè)需求量為5 000個(gè)終端數(shù)量場(chǎng)景,如果使用傳統(tǒng)存儲(chǔ)往往需要幾百塊磁盤(pán)和固定比例的閃存盤(pán)才能同時(shí)實(shí)現(xiàn)對(duì)存儲(chǔ)性能、容量以及延遲性能需求。但如果采用這種經(jīng)過(guò)結(jié)構(gòu)日志優(yōu)化的存儲(chǔ)算法,可使用更高容量的機(jī)械磁盤(pán)和更少的閃存盤(pán),最終將只需要幾十塊磁盤(pán)就可以完全滿足云桌面系統(tǒng)的性能和容量需求。讀寫(xiě)不論何種比例,都能夠基本實(shí)現(xiàn)一致的性能表現(xiàn)和延遲水平。由于采用了更少的硬件,不論是從采購(gòu)成本上,還是后期的運(yùn)維、電力、機(jī)架空間、空調(diào)制冷等方面,都會(huì)帶來(lái)超過(guò)90%的成本節(jié)約,設(shè)備故障率也會(huì)大幅減少,從而減少運(yùn)維人員的壓力,提高工作效率。
經(jīng)過(guò)對(duì)機(jī)械磁盤(pán)與閃存的優(yōu)劣勢(shì)分析以及桌面云對(duì)于存儲(chǔ)的需求分析發(fā)現(xiàn),特定的日志結(jié)構(gòu)文件系統(tǒng)優(yōu)化后的閃存存儲(chǔ)系統(tǒng),有能力將閃存高隨機(jī)讀性能與傳統(tǒng)磁盤(pán)的高容量性價(jià)比有機(jī)統(tǒng)一,同時(shí)滿足桌面云環(huán)境對(duì)存儲(chǔ)高性能、低延遲的性能需求以及大容量、高存儲(chǔ)使用效率的容量需求,并且滿足全隨機(jī)性的讀寫(xiě)需求。相比傳統(tǒng)存儲(chǔ)和全閃存產(chǎn)品,具備非常高的成本優(yōu)勢(shì)和后期的運(yùn)維效率優(yōu)勢(shì),是目前在桌面云部署環(huán)境中性價(jià)比很高的存儲(chǔ)解決方案。下一步工作是在桌面云場(chǎng)景中,對(duì)以上研究理論進(jìn)行實(shí)踐,驗(yàn)證其可行性與應(yīng)用價(jià)值。
萬(wàn)眾一心,眾志成城,堅(jiān)決打贏疫情防控阻擊戰(zhàn)。嚴(yán)格落實(shí)疫情防控“四早”“四清”“八到位”要求。
“四早”——早發(fā)現(xiàn)、早報(bào)告、早隔離、早治療。
“四清”——疫情形勢(shì)“清”、人員底數(shù)“清”、工作措施“清”、基層情況“清”。
“八到位”——師生狀況摸排到位、教育教學(xué)安排到位、人員培訓(xùn)到位、場(chǎng)所準(zhǔn)備到位、環(huán)境消毒到位、飲食安全保障到位、防控物資到位、溝通協(xié)調(diào)到位。