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