溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

深入淺出分布式存儲(chǔ)的設(shè)計(jì)與優(yōu)化之道

發(fā)布時(shí)間:2020-06-25 03:44:32 來(lái)源:網(wǎng)絡(luò) 閱讀:362 作者:UCloud_TShare 欄目:云計(jì)算

隨著信息化程度的不斷提高,全球數(shù)據(jù)日益膨脹。面對(duì)當(dāng)前PB級(jí)的海量數(shù)據(jù)存儲(chǔ)需求,傳統(tǒng)的存儲(chǔ)系統(tǒng)在容量和性能的擴(kuò)展上存在瓶頸。云存儲(chǔ)以其擴(kuò)展性強(qiáng)、性價(jià)比高、容錯(cuò)性好等優(yōu)勢(shì)得到了業(yè)界的廣泛認(rèn)同。由于其前瞻性,眾多企業(yè)都將其作為進(jìn)軍云計(jì)算的第一步。分布式文件系統(tǒng)和分布式塊存儲(chǔ)作為云存儲(chǔ)中重要的技術(shù),成為奠定云存儲(chǔ)發(fā)展的重要基石。

對(duì)于大多數(shù)專注于云計(jì)算本身的IT技術(shù)人員來(lái)說(shuō),對(duì)分布式文件系統(tǒng)和分布式塊存儲(chǔ)未必有深入的了解。為此,UCan下午茶-武漢站,我們邀請(qǐng)了分布式文件系統(tǒng)、分布式塊存儲(chǔ)以及云存儲(chǔ)相關(guān)的技術(shù)專家,一起聊聊分布式存儲(chǔ)的那些事兒。

分布式文件系統(tǒng)產(chǎn)品架構(gòu)解析——UCloud 鄧瑾

分布式存儲(chǔ)產(chǎn)品在各類產(chǎn)品業(yè)務(wù)中是必不可少的基礎(chǔ)設(shè)施,了解存儲(chǔ)產(chǎn)品的設(shè)計(jì)思路及使用場(chǎng)景,可以讓用戶更好地基于存儲(chǔ)產(chǎn)品構(gòu)建自己的業(yè)務(wù)邏輯。來(lái)自UCloud 文件存儲(chǔ)研發(fā)工程師鄧瑾,圍繞UCloud分布式文件系統(tǒng)UFS的設(shè)計(jì)理念和開(kāi)發(fā)實(shí)踐,分享了如何解決業(yè)務(wù)多樣性對(duì)存儲(chǔ)產(chǎn)品的要求、如何解決前一代產(chǎn)品中遇到的局限性以及如何避免同類的開(kāi)源產(chǎn)品的瓶頸等難題。

鄧瑾認(rèn)為,分布式文件系統(tǒng)是傳統(tǒng)文件系統(tǒng)的延伸,用戶可以通過(guò)分布式技術(shù)手段和公有云規(guī)模效應(yīng),獲取傳統(tǒng)文件系統(tǒng)所沒(méi)有的存儲(chǔ)能力:1)scale out: 容量和性能的線性/近線性提升;2)fault tolerant: 屏蔽硬件故障,提升數(shù)據(jù)可靠性與系統(tǒng)可用性;3)lower TCO & pay-as-you-go: 這是云計(jì)算產(chǎn)品所獨(dú)有的特性,它能夠給應(yīng)用層的用戶提供一些比較低的TCO。

UFS(UCloud File System)是UCloud完全自主研發(fā)、面向公有云業(yè)務(wù)設(shè)計(jì)的高可用/高可靠文件存儲(chǔ)服務(wù)。設(shè)計(jì)之初,研發(fā)團(tuán)隊(duì)主要是利用開(kāi)源軟件GlusterFS快速在公有云環(huán)境中進(jìn)行產(chǎn)品原型驗(yàn)證,但在運(yùn)營(yíng)過(guò)程中發(fā)現(xiàn),GlusterFS在多租戶的公有云環(huán)境中有較多的痛點(diǎn)和難點(diǎn),如規(guī)模拓展性具有瓶頸(peering開(kāi)銷大),節(jié)點(diǎn)數(shù)量受限;無(wú)法進(jìn)行多集群的管理與灰度管理;索引操作容易引起高IO從而影響數(shù)據(jù)操作性能,小文件訪問(wèn)和大目錄操作性能極差等等,基于這些問(wèn)題,UCloud最終決定進(jìn)行自研產(chǎn)品的設(shè)計(jì)改進(jìn)。

根據(jù)開(kāi)源方案運(yùn)營(yíng)的痛點(diǎn),UCloud首先將索引和數(shù)據(jù)分離,自定義的索引結(jié)構(gòu)和語(yǔ)義,便于后續(xù)拓展非 NFS 協(xié)議;然后獨(dú)立設(shè)計(jì)的存儲(chǔ)服務(wù),支持 set 管理、灰度等策略;此外,設(shè)計(jì)支持百萬(wàn)級(jí)大目錄和TB+文件大小并支持QoS,對(duì)多租戶場(chǎng)景下的用戶訪問(wèn)進(jìn)行隔離;最后,通過(guò)數(shù)據(jù)加密與切片策略,保證數(shù)據(jù)的安全性。下圖為UFS 1.0 的方案架構(gòu)。

深入淺出分布式存儲(chǔ)的設(shè)計(jì)與優(yōu)化之道

通常,一個(gè)成熟的架構(gòu)需要經(jīng)歷發(fā)現(xiàn)問(wèn)題->改造實(shí)踐->發(fā)現(xiàn)新問(wèn)題->再改造升級(jí)的過(guò)程,通過(guò)這種不斷的迭代升級(jí),最后趨于穩(wěn)定,UFS架構(gòu)亦如是。在運(yùn)營(yíng)過(guò)程中,UCloud存儲(chǔ)研發(fā)團(tuán)隊(duì)發(fā)現(xiàn)UFS 1.0方案仍然一些局限性,如存儲(chǔ)模型比較適合小分片場(chǎng)景,不夠通用;固定的底層存儲(chǔ)分片造成了一定的空間浪費(fèi);存儲(chǔ)層支持的文件尺度較小;對(duì)隨機(jī)寫的支持不夠等等。因此,團(tuán)隊(duì)在UFS 1.0的基礎(chǔ)上進(jìn)行了新一輪架構(gòu)升級(jí)。

新架構(gòu)對(duì)存儲(chǔ)層做了優(yōu)化,采用了append-only 模型,如下圖,Stream代表一個(gè)文件流,可在尾部追加;Extent是stream中的數(shù)據(jù)分片,分片大小不固定,每個(gè)extent 以文件的形式落地。在數(shù)據(jù)層,由streamsvr負(fù)責(zé)維護(hù)stream和extent的索引/路由信息,extentsvr維護(hù)extent內(nèi)的block索引信息,提供直連客戶端的讀寫請(qǐng)求。

深入淺出分布式存儲(chǔ)的設(shè)計(jì)與優(yōu)化之道

插件式的引擎設(shè)計(jì),可以降低寫入毛刺,并充分利用內(nèi)存buffer降低讀毛刺。此外,為了解決底層存儲(chǔ)引擎隨機(jī)寫不友好的問(wèn)題,系統(tǒng)采用了FileLayer設(shè)計(jì),對(duì)熱點(diǎn)數(shù)據(jù)進(jìn)行緩存,降低存儲(chǔ)壓力。

分布式存儲(chǔ)中的數(shù)據(jù)分布算法——奧思數(shù)據(jù) 李明宇

數(shù)據(jù)分布算法是分布式存儲(chǔ)的核心技術(shù)之一,不僅僅要考慮到數(shù)據(jù)分布的均勻性、尋址的效率,還要考慮擴(kuò)充和減少容量時(shí)數(shù)據(jù)遷移的開(kāi)銷,兼顧副本的一致性和可用性。奧思數(shù)據(jù)創(chuàng)始人兼CTO 李明宇現(xiàn)場(chǎng)分析了幾種典型的數(shù)據(jù)分布算法的優(yōu)缺點(diǎn),并分享了具體實(shí)現(xiàn)中會(huì)遇到的一些問(wèn)題。

一致性哈希算法因其不需要查表或通信過(guò)程即可定位數(shù)據(jù),計(jì)算復(fù)雜度不隨數(shù)據(jù)量增長(zhǎng)而改變,且效率高、均勻性好、增加/減少節(jié)點(diǎn)時(shí)數(shù)據(jù)遷移量小等特性受到開(kāi)發(fā)者喜愛(ài)。但具體到實(shí)際應(yīng)用中,這種算法也因其自身局限性遇到了諸多挑戰(zhàn),如在“存儲(chǔ)區(qū)塊鏈”場(chǎng)景下,幾乎不可能獲取全局視圖,甚至沒(méi)有一刻是穩(wěn)定的;企業(yè)級(jí)IT場(chǎng)景下,存在多副本可靠存儲(chǔ)問(wèn)題,數(shù)據(jù)遷移開(kāi)銷巨大。

所謂存儲(chǔ)區(qū)塊鏈,可以理解為分布式存儲(chǔ)(p2p存儲(chǔ)) + 區(qū)塊鏈,它通過(guò)token激勵(lì),鼓勵(lì)大家貢獻(xiàn)存儲(chǔ)資源,參與構(gòu)建一個(gè)全世界范圍的分布式存儲(chǔ)系統(tǒng)。因?yàn)樾枰?lì)大量用戶自發(fā)參與,因此會(huì)涉及上億甚至幾十億節(jié)點(diǎn)的尋址和路由問(wèn)題,目前業(yè)界主要的解決方案主要有Chord、Kademlia等。不過(guò),Chord算法效率較低,會(huì)產(chǎn)生較高延遲,可以采用Finger table,除了記錄當(dāng)前節(jié)點(diǎn)以及下一節(jié)點(diǎn)位置,同時(shí)還記錄當(dāng)前節(jié)點(diǎn)2^i+1的位置,降低計(jì)算復(fù)雜度,最終降低延遲。

深入淺出分布式存儲(chǔ)的設(shè)計(jì)與優(yōu)化之道

企業(yè)級(jí)IT場(chǎng)景下,數(shù)據(jù)分布算法包括Dynamo、Ceph的CRUSH、Gluster的Elastic Hashing以及Swift的Ring等。這些算法都有相似的特點(diǎn),首先它們都是基于/借鑒一致性哈希,增加/減少節(jié)點(diǎn)時(shí)數(shù)據(jù)遷移量小。其次,引入對(duì)數(shù)據(jù)中心物理拓?fù)涞慕#–luster Map),數(shù)據(jù)多副本 / EC分片跨故障域 / 可用區(qū)分布。另外,這些算法還可以對(duì)節(jié)點(diǎn)劃分權(quán)重,數(shù)據(jù)分布和容量/性能匹配,輔助擴(kuò)容。

深入淺出分布式存儲(chǔ)的設(shè)計(jì)與優(yōu)化之道

總體來(lái)說(shuō),這兩類方案均是基于一致性哈希算法實(shí)現(xiàn),只是因?yàn)樾枨蟛煌庞辛瞬煌母倪M(jìn)方向。企業(yè)級(jí)更注重副本故障域的分布;而對(duì)于P2P存儲(chǔ),則更注重在節(jié)點(diǎn)隨時(shí)退出隨時(shí)加入的情況下,保證數(shù)據(jù)能夠在有效時(shí)間內(nèi)尋址。

云硬盤架構(gòu)升級(jí)和性能提升——UCloud 葉恒

云硬盤作為云計(jì)算的基礎(chǔ)存儲(chǔ)產(chǎn)品,為云服務(wù)器提供了高可用、高可靠、持久化的數(shù)據(jù)塊級(jí)隨機(jī)存儲(chǔ)。云盤的性能和數(shù)據(jù)可靠性尤為重要,UCloud根據(jù)過(guò)去運(yùn)營(yíng)經(jīng)驗(yàn),在過(guò)去一年里重新設(shè)計(jì)了云盤的底層架構(gòu),提升了普通云盤的性能,并支持了NVME高性能存儲(chǔ)。UCloud塊存儲(chǔ)研發(fā)工程師葉恒,著重講解了UCloud云硬盤的架構(gòu)升級(jí)和性能提升實(shí)踐。

通過(guò)對(duì)現(xiàn)階段問(wèn)題和需求的分析,UCloud存儲(chǔ)研發(fā)團(tuán)隊(duì)首先整理了架構(gòu)升級(jí)的目標(biāo):1)解決原有軟件架構(gòu)不能充分發(fā)揮硬件能力的局限;2)支持SSD云盤,提供QoS保證,充分發(fā)揮后端NVME物理盤的IOPS和帶寬性能,單個(gè)云盤IOPS可達(dá)2.4W;3)支持更大容量云盤,32T甚至更大;4)充分降低IO流量的熱點(diǎn)問(wèn)題;5)支持并發(fā)創(chuàng)建幾千塊云盤,支持并發(fā)掛載幾千塊云盤;6)支持老架構(gòu)云盤在線向新架構(gòu)遷移,支持普通云盤在線遷移至SSD云盤。

根據(jù)上述目標(biāo),UCloud定制了IO路徑優(yōu)化、元數(shù)據(jù)分片、線程模型設(shè)計(jì)、防過(guò)載策略、在線遷移五大改造方向。

IO路徑優(yōu)化: 老架構(gòu)中,整個(gè)IO路徑有三大層,第一層宿主Client側(cè),第二層Proxy側(cè),第三層存儲(chǔ)Chunk層。為了降低延時(shí),優(yōu)化后的方案將 Proxy 的功能拆分,將路由獲取交給了Client,IO讀寫Client可直接訪問(wèn)存儲(chǔ)Chunk層。整個(gè)IO路徑就變成了2層,對(duì)于讀 IO 而言,一次網(wǎng)絡(luò)請(qǐng)求可直達(dá)后端存儲(chǔ)節(jié)點(diǎn),其時(shí)延平均可降低 0.2-1ms。

深入淺出分布式存儲(chǔ)的設(shè)計(jì)與優(yōu)化之道

元數(shù)據(jù)分片: 老架構(gòu)中,UCloud 支持的分片大小是 1G。但在特殊場(chǎng)景下(如業(yè)務(wù) IO 熱點(diǎn)局限在較小范圍內(nèi)),1G 分片會(huì)使普通 SATA 磁盤的性能非常差。新架構(gòu)中,UCloud 將元數(shù)據(jù)分片調(diào)小,支持 1M 大小的數(shù)據(jù)分片。并采用以一套統(tǒng)一規(guī)則計(jì)算獲取路由的方案,節(jié)省IO路徑消耗,保證1M分片下,元數(shù)據(jù)的分配和掛載暢通無(wú)阻。

線程模型設(shè)計(jì): 傳統(tǒng)架構(gòu)采用單線程傳輸,單個(gè)線程寫 IOPS 達(dá) 6W,讀 IOPS 達(dá) 8W,難以支持后端 NVME 硬盤幾十萬(wàn)的 IOPS 以及 1-2GB 的帶寬。為了利用 NVME 磁盤的性能,UCloud采用了多線程傳輸模型,并通過(guò)IO路徑、路由獲取等軟件細(xì)節(jié)的優(yōu)化,減少CPU消耗。

防過(guò)載策略: 多線程并行工作壓測(cè)時(shí),UCloud模擬了熱點(diǎn)集中在某個(gè)線程上的場(chǎng)景,發(fā)現(xiàn)該線程CPU基本處于99%-100%滿載狀態(tài),而其它線程則處于空閑狀態(tài)。為了解決這個(gè)問(wèn)題,存儲(chǔ)團(tuán)隊(duì)采用定期上報(bào)線程CPU以及磁盤負(fù)載狀態(tài)的方式,當(dāng)滿足某線程持續(xù)繁忙而有線程持續(xù)空閑時(shí),選取部分磁盤分片的IO切換至空閑線程,來(lái)規(guī)避部分線程過(guò)載。

在線遷移: 老架構(gòu)普通云盤性能較差,部分普通云盤用戶業(yè)務(wù)發(fā)展較快,希望從普通云盤遷移至SSD云盤,滿足更高的業(yè)務(wù)發(fā)展需要。面對(duì)用戶訴求,UCloud采用從系統(tǒng)外圍支持在線遷移的方式,快速達(dá)到在線遷移的目的。

深入淺出分布式存儲(chǔ)的設(shè)計(jì)與優(yōu)化之道

據(jù)了解,SSD云盤相比普通云盤,IOPS提升了13倍,穩(wěn)定性提升了3倍,平均時(shí)延降低了10倍。新架構(gòu)推出后,已服務(wù)了現(xiàn)網(wǎng)用戶的3400多個(gè)云盤實(shí)例,總存儲(chǔ)容量達(dá)800TB,集群每秒IOPS均值31萬(wàn)。

基于CephFS的改進(jìn)及優(yōu)化——深信服科技 盧波

據(jù)IDC的調(diào)查報(bào)告顯示,企業(yè)中80%的數(shù)據(jù)都是非結(jié)構(gòu)化數(shù)據(jù),這些數(shù)據(jù)每年都按指數(shù)增長(zhǎng)60%。分布式文件存儲(chǔ)以其靈活擴(kuò)展、快速部署等特點(diǎn)越來(lái)越受到政府、教育、醫(yī)療等行業(yè)用戶的青睞。隨著OpenStack技術(shù)的發(fā)展,Ceph成為了分布式存儲(chǔ)的明星,來(lái)自深信服科技的存儲(chǔ)研發(fā)專家盧波結(jié)合深信服研發(fā)的分布式存儲(chǔ)系統(tǒng)EDS,分享了深信服針對(duì)Ceph的文件存儲(chǔ)所做的一些改進(jìn)及優(yōu)化,以及未來(lái)的一些思考。

Ceph 是一個(gè)分層的架構(gòu),底層是基于 CRush(哈希)的分布式對(duì)象存儲(chǔ)—Rados,上層提供對(duì)象存儲(chǔ)(RadosGW)、塊存儲(chǔ)(RDB)和文件系統(tǒng)(CephFS)三種訪問(wèn)方式。其中,CephFS 始于 Sage Weil 的博士論文研究,目標(biāo)是實(shí)現(xiàn)分布式的元數(shù)據(jù)管理以支持 EB 級(jí)別數(shù)據(jù)規(guī)模。下圖為CephFS的整體結(jié)構(gòu)。

深入淺出分布式存儲(chǔ)的設(shè)計(jì)與優(yōu)化之道

ceph-mds: 緩存文件系統(tǒng)元數(shù)據(jù),并將元數(shù)據(jù)持久化到rados中,自身運(yùn)行在rados之上,本身并不存儲(chǔ)數(shù)據(jù)。

open: 客戶端從MDS獲取文件元數(shù)據(jù)

write: 客戶端直接通過(guò)rados進(jìn)行數(shù)據(jù)寫入操作

所有數(shù)據(jù)的操作時(shí)均通過(guò)客戶端直接訪問(wèn)raods,多客戶端的數(shù)據(jù)訪問(wèn)操作時(shí)依靠OSD來(lái)控制,元數(shù)據(jù)和數(shù)據(jù)可以在不同的存儲(chǔ)池中。可以看到,CephFS是一個(gè)分布式系統(tǒng),需要跨網(wǎng)絡(luò)訪問(wèn),因此在實(shí)際使用中,其IO路徑較長(zhǎng),導(dǎo)致延時(shí)較高,性能受限。為了解決此問(wèn)題,深信服科技基于此架構(gòu)進(jìn)行了系列改進(jìn)。

全局緩存: 緩存是整系統(tǒng)全局共享的,即只要緩存在任意一個(gè)節(jié)點(diǎn)上的文件分條數(shù)據(jù),其它任意節(jié)點(diǎn)再次收到該數(shù)據(jù)的訪問(wèn)請(qǐng)求后都可以從一級(jí)緩存中命中該數(shù)據(jù)。通過(guò)全局緩存,實(shí)現(xiàn)數(shù)據(jù)合并,利用K-V存儲(chǔ)的高吞吐,從而大大提高系統(tǒng)整體性能。

FusionStorage: FusionStorage塊存儲(chǔ)根據(jù)業(yè)務(wù)不同的IO大小,智能地對(duì)不同大小的IO采取不同的處理方式。對(duì)于小塊IO,F(xiàn)usionStorage塊存儲(chǔ)采用多副本的方式寫入分布式EC Cache中,并在Cache中做條帶聚合;而對(duì)于大塊IO,則繞過(guò)分布式EC Cache,直接提交EC寫入后端硬盤。由于大塊IO直接下盤,系統(tǒng)可以釋放原來(lái)大塊IO占用的寶貴的Cache資源,緩存更多的隨機(jī)小塊I/O,間接的提高了隨機(jī)小塊I/O的Cache命中率,提升系統(tǒng)隨機(jī)小IO的性能。而HDD在寫入大塊順序IO時(shí),寫性能差距相比SSD并沒(méi)有那么明顯,加上多塊HDD并發(fā)處理,在大塊順序IO的場(chǎng)景下系統(tǒng)也能獲得很好的寫入帶寬,兼顧了系統(tǒng)的整體性能。

由于篇幅有限,本文僅整理了現(xiàn)場(chǎng)演講部分精彩內(nèi)容,感興趣的讀者可以點(diǎn)擊鏈接下載講師演講PPT了解更多技術(shù)詳情。

下載地址(提交表單后可下載):PPT下載地址

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI