Qumulo在2017年入圍Gartner魔力象限,僅兩年就成為了該領(lǐng)域的領(lǐng)導(dǎo)者。
Qumulo的創(chuàng)始人一共3人,他們都是Isilon的大牛。Isilon一共有62項(xiàng)專利,他們?nèi)司蛽碛?5項(xiàng)。
張克誠,本篇文章的譯者,原Panasas Technical and Business Development Manager。在HPC存儲(chǔ)領(lǐng)域里,Panasas不可小覷。
經(jīng)過譯者授權(quán),微信公眾號(hào)“樂生活愛IT”首次轉(zhuǎn)發(fā)這篇滿是干貨的譯文。另外前面有些信息和圖片,來自西瓜哥高端存儲(chǔ)知識(shí)的《2年就成為Gartner魔力象限領(lǐng)導(dǎo)者的Qumulo有啥特別?》
---譯文開始---
Qumulo FileFabric (QF2) 支持本地部署和跨云部署,百億級(jí)文件支持,極高擴(kuò)充能力的文件存儲(chǔ)。
QF2由軟件和服務(wù)兩部分組成,可根據(jù)預(yù)算靈活取舍。
核心是運(yùn)行在QF2集群中的節(jié)點(diǎn)上的軟件,包括強(qiáng)大的實(shí)時(shí)分析、容量限額、連續(xù)復(fù)制和快照。而其他的存儲(chǔ)系統(tǒng)僅僅包含集成的實(shí)時(shí)文件元數(shù)據(jù)聚合。
QF2文件系統(tǒng)構(gòu)建在Qumulo Scalable Block Store (SBS)之上,SBS采用海量擴(kuò)充分布式數(shù)據(jù)庫原理并且面向文件數(shù)據(jù)優(yōu)化。SBS是QF2的數(shù)據(jù)塊層,提供簡單部署和極度可靠的底部支撐。因此SBS也給了文件系統(tǒng)海量擴(kuò)充能力、優(yōu)化的性能及數(shù)據(jù)保護(hù)。
另外,QF2還提供基于云的監(jiān)控、趨勢(shì)分析作為可選模塊,與之伴隨的還有綜合用戶支撐模塊。云監(jiān)控包括類似磁盤故障這樣事故的前瞻探測(cè)以便事件真正發(fā)生前解決故障。對(duì)過去使用過程趨勢(shì)分析的訪問可以幫助用戶節(jié)省成本優(yōu)化存儲(chǔ)使用流程。
核心軟件可以運(yùn)行在公有云上,也可以運(yùn)行在數(shù)據(jù)中心中工業(yè)標(biāo)準(zhǔn)硬件平臺(tái)上,Qumulo當(dāng)前運(yùn)行在自己的QC系列白牌機(jī)服務(wù)器上,也運(yùn)行在HPE阿波羅服務(wù)器上。
事實(shí)上,QF2與硬件無關(guān),可以期待更多的OEM支撐。
QF2純軟件方式意味著對(duì)昂貴、私有硬件如NVRAM、InfiniBand交換機(jī)、私有閃存等沒有依賴,取而代之的是QF2依靠HDD和SSD的標(biāo)準(zhǔn)firmware,QF2中的SSD和HDD的組合使用實(shí)現(xiàn)了冷熱數(shù)據(jù)自動(dòng)分層,因此,QF2實(shí)現(xiàn)了在二級(jí)存儲(chǔ)的價(jià)格上提供閃存的性能。
QF2也可以在公有云上創(chuàng)建(當(dāng)前是AWS),基于云的QF2集群中的節(jié)點(diǎn)運(yùn)行本地部署相同的軟件,不同于其他面向云的文件存儲(chǔ)系統(tǒng),QF2運(yùn)行在公有云上也沒有性能和容量的硬限制。兩者都可以借助增加節(jié)點(diǎn)(計(jì)算實(shí)例和塊存儲(chǔ))來實(shí)現(xiàn)增加。
在公有云上運(yùn)行時(shí),QF2使用云的塊存儲(chǔ)的方式與SSD/HDD相結(jié)合的本地部署方式類似,QF2用低延遲塊存儲(chǔ)做高延遲塊存儲(chǔ)的Cache。
在每一個(gè)QF2集群的節(jié)點(diǎn)上,核心軟件在Linux的用戶態(tài)運(yùn)行,內(nèi)核模式是僅僅用于與特定硬件相關(guān)的設(shè)備驅(qū)動(dòng)程序。
用戶態(tài)運(yùn)行也意味著可以部署自己的重要協(xié)議,如:SMB、NFS、LDAP和AD。所以NFS是以系統(tǒng)服務(wù)的方式運(yùn)行并且有自己的用戶、組的概念,分離于借以運(yùn)行的底部的操作系統(tǒng)。
用戶態(tài)運(yùn)行也改善了可靠性。作為獨(dú)立的用戶態(tài)進(jìn)程,QF2與其他系統(tǒng)部件隔離,避免了其他部件引起的內(nèi)存故障帶來的影響,并且QF2開發(fā)的過程采用了高級(jí)內(nèi)存校驗(yàn)工具,實(shí)現(xiàn)了內(nèi)存相關(guān)的代碼故障在軟件正式發(fā)放前的前期探測(cè)。借助于軟件升級(jí)雙分割策略,Qumulo可以自動(dòng)的升級(jí)操作系統(tǒng)和核心軟件以保證快速和安全可靠。你可以簡單的重新啟動(dòng)QF2而不必重啟OS、節(jié)點(diǎn)或集群。
海量可擴(kuò)充的文件和目錄
當(dāng)有海量文件時(shí),目錄結(jié)構(gòu)和文件屬性本身變成了大數(shù)據(jù),直接結(jié)果是像treewalks這樣的順序處理(傳統(tǒng)存儲(chǔ)的基礎(chǔ))變得計(jì)算上不在可行。相反,查詢一個(gè)大的文件系統(tǒng)并且管理它就需要并行和分布式算法的新的方法。
QF2具備這個(gè)獨(dú)特的能力。設(shè)計(jì)部署的原理類似于現(xiàn)代、大規(guī)模、分布式數(shù)據(jù)庫。帶來的直接效果是文件系統(tǒng)具有無可匹敵的擴(kuò)充特性。相比照的是傳統(tǒng)存儲(chǔ)沒有具備這個(gè)擴(kuò)充能力。
文件系統(tǒng)位于虛擬化的塊層SBS之上。在QF2中,耗時(shí)的保護(hù)、重構(gòu)、以及判定SBS層中哪個(gè)數(shù)據(jù)在哪個(gè)磁盤上的工作位于文件系統(tǒng)之下。
SBS中虛擬化的被保護(hù)的塊的功能是本文件系統(tǒng)的一個(gè)重大優(yōu)勢(shì)。傳統(tǒng)存儲(chǔ)系統(tǒng)沒有SBS,保護(hù)實(shí)現(xiàn)在文件層面上,或者混合的RAID組上,那樣會(huì)帶來嚴(yán)重的問題,比如,很長的重構(gòu)時(shí)間、小文件的低效存儲(chǔ)、以及較大的磁盤布局管理開銷。沒有虛擬化的塊層,傳統(tǒng)存儲(chǔ)系統(tǒng)也必須在元數(shù)據(jù)層實(shí)施數(shù)據(jù)保護(hù),這個(gè)附加的復(fù)雜度限制了這些系統(tǒng)優(yōu)化分布式處理這些目錄數(shù)據(jù)結(jié)構(gòu)和元數(shù)據(jù)的能力。
對(duì)于文件和目錄的擴(kuò)充能力,QF2文件系統(tǒng)強(qiáng)化使用了被稱為B-trees的索引數(shù)據(jù)架構(gòu)。B-trees特別適用于讀寫海量數(shù)據(jù)塊的系統(tǒng),因?yàn)樗麄儗儆凇皽\”數(shù)據(jù)結(jié)構(gòu),在數(shù)據(jù)量增加時(shí)最小化了每個(gè)操作的IO請(qǐng)求的數(shù)量。以B-trees為基礎(chǔ),當(dāng)數(shù)據(jù)量增加時(shí)讀或者插入數(shù)據(jù)塊的運(yùn)算開銷增長非常緩慢。所以,B-trees對(duì)文件系統(tǒng)和大型數(shù)據(jù)庫索引來說非常完美。
在QF2中,B-trees是基于塊的,每個(gè)塊4096字節(jié)。以下是B-tree的結(jié)構(gòu)。
每個(gè)4K塊可能含有指針指向其他的4K塊。該例的分叉因子為3,分叉因子指的是樹中每個(gè)節(jié)點(diǎn)孩子的數(shù)量(子節(jié)點(diǎn))。
即使有百萬級(jí)別的數(shù)據(jù)塊,SBS中的B-tree的高度,從根到數(shù)據(jù)實(shí)際的位置,也就兩到三層。比如,上圖中查找?guī)в兴饕?的q標(biāo)簽,僅需穿過樹的兩層。
本文件系統(tǒng)把B-tree用于多個(gè)目的。
有一個(gè)inode B-tree,扮演所有文件索引的角色。Inode列表是一個(gè)標(biāo)準(zhǔn)文件系統(tǒng)部署技術(shù)用于目錄層級(jí)無關(guān)的文件系統(tǒng)一致性檢查。Inode也用于目錄高效移動(dòng)操作的更新等。
文件和目錄在B-tree中表現(xiàn)為各自的鍵/值對(duì),比如文件名、文件尺寸、訪問列表(ACL)或者POSIX許可等。
配置數(shù)據(jù)也是一個(gè)B-tree,包含類似IP地址和集群等信息。
事實(shí)上,QF2文件系統(tǒng)可以理解為是一個(gè)樹的樹。如:
最頂層的樹叫超級(jí)B-tree。系統(tǒng)啟動(dòng)時(shí),處理從這里開始。根總是存儲(chǔ)在虛擬保護(hù)的塊的陣列的首個(gè)地址(paddr 1.1)。根樹指向其他的B-trees。例如,如果QF2文件系統(tǒng)需要訪問配置數(shù)據(jù),就會(huì)走到配置B-trees。查找一個(gè)特定的文件,系統(tǒng)詢問inode B-tree使用inode編碼作為索引。系統(tǒng)穿越inodetree直到發(fā)現(xiàn)指向文件B-tree的指針。從那里文件系統(tǒng)就能夠找到包含文件本身的所有內(nèi)容。目錄的處理過程和文件一樣。
依靠B-tree,指向SBS中虛擬化的、受保護(hù)的塊存儲(chǔ)是文件系統(tǒng)處理萬億級(jí)文件的核心。
QumuloDB實(shí)現(xiàn)實(shí)時(shí)可視及控制
QF2設(shè)計(jì)理念不僅僅是存儲(chǔ)文件數(shù)據(jù),也幫助你實(shí)時(shí)管理你的數(shù)據(jù)和用戶。傳統(tǒng)存儲(chǔ)管理人員受限于看不見數(shù)據(jù),所以不知道文件系統(tǒng)中真實(shí)發(fā)生了什么。QF2的設(shè)計(jì)是真正可視的,這不管你存儲(chǔ)了多少文件和目錄。例如,你能立即看到吞吐量變化趨勢(shì)以及熱點(diǎn)。你也可以設(shè)置實(shí)時(shí)容量限額,避免了在傳統(tǒng)存儲(chǔ)中限額實(shí)現(xiàn)的時(shí)間開銷。信息通過圖形用戶接口得以訪問,當(dāng)然REST API也可以實(shí)現(xiàn)信息編程訪問。
QF2文件系統(tǒng)的集成分析特性被稱為QumuloDB的組件支撐實(shí)現(xiàn)。
當(dāng)系統(tǒng)擴(kuò)充時(shí)觀察實(shí)時(shí)分析特性,人們通常會(huì)問它怎么會(huì)這么快?這里有三個(gè)原因。
1、在QF2文件系統(tǒng)中,QumuloDB分析是內(nèi)置的并完全與文件系統(tǒng)本身集成,傳統(tǒng)存儲(chǔ),元數(shù)據(jù)查詢的回饋來自于核心文件系統(tǒng)以外的非相關(guān)的軟件組件。
2、QF2文件系統(tǒng)依托B-trees,QumuloDB分析能夠使用一個(gè)實(shí)時(shí)聚合的創(chuàng)新系統(tǒng),下面的章節(jié)會(huì)介紹。
3、最后,QumuloDB分析是因?yàn)镼F2文件系統(tǒng)是一個(gè)流線型設(shè)計(jì),因?yàn)樗捎昧薆-tree索引和虛擬化的受保護(hù)的塊以及SBS交互處理。
元數(shù)據(jù)的實(shí)時(shí)聚合
QF2文件系統(tǒng)中,像所用字節(jié)和文件計(jì)數(shù)的元數(shù)據(jù)是在文件和目錄在創(chuàng)建時(shí)或修改時(shí)聚合的,這就意味著處理時(shí)信息可以即時(shí)訪問而沒有昂貴的文件系統(tǒng)treewalks.
QumuloDB維持一個(gè)即時(shí)更新的元數(shù)據(jù)概覽,使用文件系統(tǒng)的B-trees收集文件系統(tǒng)的更新信息。不同的元數(shù)據(jù)域在文件系統(tǒng)中創(chuàng)建一個(gè)虛擬索引來概述。你在GUI中見到的性能分析基于采樣機(jī)制被REST API抽出,采樣機(jī)制是嵌入到QF2文件系統(tǒng)的。統(tǒng)計(jì)有效的采樣技術(shù)源自于即時(shí)更新的元數(shù)據(jù)概覽,它允許采樣算法對(duì)大目錄和文件施加較大的權(quán)重。
在QF2中聚合元數(shù)據(jù)采用了自下而上和自上而下的方法。
當(dāng)每一個(gè)文件或目錄新的聚合元數(shù)據(jù)更新時(shí),它的父目錄被標(biāo)注為dirty,其他的更新事件為這個(gè)父目錄進(jìn)行排隊(duì)。用這樣的方法,文件系統(tǒng)信息在穿越樹時(shí)被收集和聚合。元數(shù)據(jù)繁殖于單個(gè)的inode,在最低的層級(jí)上,在數(shù)據(jù)實(shí)時(shí)訪問時(shí)到達(dá)文件系統(tǒng)的根。每個(gè)文件和目錄的操作都不會(huì)漏掉,這些信息最終繁殖到非常核心的文件系統(tǒng)中。這里是個(gè)舉例。
左邊的樹聚集了文件和目錄的信息并合并他們到元數(shù)據(jù)。然后為了父目錄將該更新排入隊(duì)列。信息上移,從該級(jí)(葉)到根。
并行的從下至上繁衍更新元數(shù)據(jù),定期的從文件系統(tǒng)頂部開始掃描讀取元數(shù)據(jù)中呈現(xiàn)的信息。當(dāng)掃描發(fā)現(xiàn)更新的聚合信息時(shí),修整這個(gè)掃描轉(zhuǎn)到下一個(gè)分叉。一個(gè)假定是在文件系統(tǒng)樹中從當(dāng)前位置往下到葉(層)(包括了所有文件和目錄的層或葉)的聚合信息是實(shí)時(shí)更新的,不需要掃描更低層做更多的分析。大部分的元數(shù)據(jù)概覽已經(jīng)被計(jì)算過,理想情況下,掃描僅僅需要重新描述整個(gè)文件系統(tǒng)中的一小部分。效果是聚合的兩個(gè)進(jìn)程會(huì)在中間某個(gè)點(diǎn)相遇,無需從上至下檢索整個(gè)文件系統(tǒng)樹。
采樣和元數(shù)據(jù)查詢
QF2實(shí)時(shí)分析的一個(gè)明顯例子是性能熱點(diǎn)報(bào)表。這是一個(gè)圖形界面截屏。
在大的文件系統(tǒng)中用GUI描述每個(gè)吞吐量操作和IOPS是不可能的。取而代之,QumuloDB查詢采用概率論采樣從而提供接近有效的信息。IOPS的讀寫操作數(shù)、總體的IO吞吐量是從緩存中抽樣提取的,這個(gè)緩存含有4096個(gè)條目,其內(nèi)容數(shù)秒更新一次。
這個(gè)報(bào)表顯示的操作是對(duì)集群產(chǎn)生最大影響的操作。這些操作在GUI中被表述成熱點(diǎn)(hotspots)。
QF2使用概率論采樣的有效統(tǒng)計(jì)能力僅僅因?yàn)镼umuloDB中連續(xù)實(shí)時(shí)記錄了描述每個(gè)目錄的元數(shù)據(jù)(使用的字節(jié)數(shù),文件計(jì)數(shù))。這是QF2高級(jí)軟件技術(shù)獨(dú)一無二的優(yōu)勢(shì),其他的文件存儲(chǔ)系統(tǒng)不具備。
實(shí)時(shí)限額
正像實(shí)時(shí)元數(shù)據(jù)聚合實(shí)現(xiàn)了QF2的實(shí)時(shí)分析,它也實(shí)現(xiàn)了實(shí)時(shí)的容量限額。限額使得管理人員可以定義一個(gè)給定的目錄可以占用的空間容量。例如,如果管理員發(fā)現(xiàn)某個(gè)無賴用戶的子目錄占用空間過快,管理員則可以即時(shí)限制那個(gè)用戶所用目錄的空間容量。
在QF中,限額是即時(shí)部署的,不必事前定義供給??梢詫?shí)時(shí)實(shí)施和變化。一個(gè)額外的好處是限額設(shè)定到目錄搬移,目錄本身可以搬移進(jìn)或者搬移出限額域。
不像其他的文件系統(tǒng),Qumulo限額不需要嵌入到文件系統(tǒng)卷中。另外,QF2移動(dòng)限額或在限額域中移動(dòng)目錄,不會(huì)引入過長的treewalks、作業(yè)調(diào)度、繁瑣處理以及多步進(jìn)程。QF2中的限額可以實(shí)施到任意目錄,甚至是套疊的目錄。如果因?yàn)樘庄B的目錄原因發(fā)生空間分配與多個(gè)限額相關(guān),所有的限額必須被滿足以便分配請(qǐng)求的存儲(chǔ)空間。
因?yàn)镼F2中限額限制是在目錄級(jí)別以元數(shù)據(jù)方式記錄保存,限額就可以在目錄樹中任意層級(jí)設(shè)置。當(dāng)寫操作發(fā)生時(shí),所有相關(guān)限額必須被滿足。這是硬限額限制。QF2實(shí)時(shí)限額的精確性和敏捷性是由內(nèi)置聚合器連續(xù)不斷的對(duì)每個(gè)目錄所占空間描述的即時(shí)更新保證的。
快照
快照使得系統(tǒng)管理員對(duì)文件系統(tǒng)或者目錄在任意給定時(shí)間點(diǎn)的狀態(tài)進(jìn)行保護(hù)。如果一個(gè)文件或者目錄被無意修改或者刪除,用戶或系統(tǒng)管理員可以恢復(fù)其到保存的狀態(tài)。
QF2中的快照,是極端有效和高度可擴(kuò)充的部署。一個(gè)QF2集群可以有幾乎無數(shù)量限制的并發(fā)快照,同時(shí)快照不帶來性能和容量的下降。
快照的部署原理是out-of-placeblock writes??煺瞻l(fā)生同時(shí)有塊被修改時(shí),他們被寫到一個(gè)新的B-treeblocks的骨干上。沒有發(fā)生變化的現(xiàn)有數(shù)據(jù)塊被鏈接到這個(gè)新的骨干上并且共享。該新被修改的骨干寫的方式是“out ofplace”,但依然鏈接到現(xiàn)有數(shù)據(jù),共享沒有發(fā)生變化的數(shù)據(jù)塊。直到數(shù)據(jù)被修改或被刪除快照都不占用額外空間。
比如,把一個(gè)4MB的文件寫到QF2的文件系統(tǒng)中,做一個(gè)快照??煺胀瓿珊?,所占空間容量仍然是4MB。然后該文件中1MB的區(qū)域發(fā)生了變化。新數(shù)據(jù)(1MB)被寫到了別的位置(out of place),但與該文件的活躍(live)版本相關(guān)聯(lián)。4MB數(shù)據(jù)中原始的3MB數(shù)據(jù)在活躍版本和快照版本之間共享。該文件現(xiàn)在總共占用5MB空間。
快照是一個(gè)安全特性,保證文件系統(tǒng)快速恢復(fù),避免用戶誤刪除和誤修改帶來數(shù)據(jù)損失。比如,如果一些數(shù)據(jù)意外被刪除,用戶就可以從從前的快照中恢復(fù)數(shù)據(jù)。單個(gè)文件或整個(gè)目錄借助于把他們拷貝回活躍文件系統(tǒng)得以恢復(fù)。
當(dāng)存儲(chǔ)可用空間變得很少時(shí),管理員通常決定刪除快照釋放存儲(chǔ)空間。因?yàn)榭煺展蚕頂?shù)據(jù),刪除快照通常不會(huì)回收到與整個(gè)文件所占全部空間相當(dāng)?shù)娜萘?。在傳統(tǒng)存儲(chǔ)系統(tǒng)中,事實(shí)上很難知道回收了多少存儲(chǔ)空間。
QF2中的快照,利用內(nèi)置于文件系統(tǒng)的智能優(yōu)勢(shì),管理員能夠計(jì)算出刪除快照后能回收的實(shí)際空間容量。
連續(xù)復(fù)制
QF2提供了橫跨不同存儲(chǔ)集群之間的連續(xù)復(fù)制能力,無論這些集群是本地部署還是公有云部署。一旦在源集群和目標(biāo)集群之間建立了復(fù)制關(guān)系并同步,QF2將自動(dòng)的保持?jǐn)?shù)據(jù)連貫和一致。
QF2中的連續(xù)復(fù)制,是借助QF2的高級(jí)快照能力確保數(shù)據(jù)副本的一致性。有了QF2的快照,目標(biāo)集群上的一個(gè)副本復(fù)制某個(gè)精確瞬間源目錄的狀態(tài)。QF2的復(fù)制關(guān)系為了最大的靈活性可以建立在每個(gè)目錄的基礎(chǔ)上。
Qumulo利用智能算法管理復(fù)制,所以沒有必要管理員介入。QF2的復(fù)制頻率取決于對(duì)整個(gè)集群性能沒有負(fù)面影響的實(shí)際情況。QF2中的連續(xù)復(fù)制現(xiàn)在是單向異步的;就是說有一個(gè)源和一個(gè)只讀的目標(biāo)。源目錄的變化被異步的復(fù)制到目標(biāo)上。
Qumulo ScalableBlock Store (SBS)
現(xiàn)在我們看一下QF2文件系統(tǒng)的內(nèi)部,QF2在SBS中的分布式塊管理的的高級(jí)策略。下面是一個(gè)概覽。
SBS提供一個(gè)受保護(hù)的存儲(chǔ)塊的傳輸虛擬層。取代了系統(tǒng)中文件必須配置自己的保護(hù)模式,數(shù)據(jù)保護(hù)設(shè)置在文件系統(tǒng)下面,也就是說塊層。
QF2基于塊的保護(hù)機(jī)制,由SBS實(shí)現(xiàn),為PB數(shù)據(jù)環(huán)境和混合文件尺寸負(fù)載提供出眾的性能。
SBS的優(yōu)勢(shì)有很多,其中包括:
磁盤失效情況下的快速重構(gòu)時(shí)間
重構(gòu)操作時(shí)持續(xù)的正常文件操作能力
常規(guī)文件寫操作和重構(gòu)時(shí)發(fā)生的寫操作有競(jìng)爭時(shí)無性能衰減
大文件小文件有相同的存儲(chǔ)效率
可用空間的精確報(bào)表
高效傳輸(交易)允許QF2集群擴(kuò)展至數(shù)百節(jié)點(diǎn)
內(nèi)置的冷熱數(shù)據(jù)分層技術(shù)實(shí)現(xiàn)了歸檔存儲(chǔ)價(jià)格閃存性能。
受保護(hù)的虛擬塊
QF2集群的整體存儲(chǔ)容量概念上以單一、受保護(hù)的虛擬地址空間來組織,如圖。
空間中每個(gè)受保護(hù)的地址存儲(chǔ)一個(gè)4K字節(jié)的數(shù)據(jù)塊。受保護(hù)的意思是即使多個(gè)磁盤發(fā)生故障,所有的數(shù)據(jù)塊都是可恢復(fù)的。
整個(gè)文件系統(tǒng)駐留在SBS提供的受保護(hù)的虛擬地址空間中,包括用戶數(shù)據(jù),文件元數(shù)據(jù),目錄結(jié)構(gòu),分析信息,配置信息等。換句話說,受保護(hù)的存儲(chǔ)空間扮演了文件系統(tǒng)和記錄在塊設(shè)備上的基于塊的數(shù)據(jù)之間的接口角色。這些設(shè)備可能是由SSD和HDD相結(jié)合或者公有云中的塊存儲(chǔ)資源形成的虛擬磁盤。
必須記住,受保護(hù)地址空間中的塊是分布于所有集群節(jié)點(diǎn)中或者QF2集群實(shí)例中的。然而,QF2文件系統(tǒng)看見的僅僅是全保護(hù)塊的線性陣列。
基于糾刪碼的數(shù)據(jù)保護(hù)
對(duì)于磁盤故障引起的數(shù)據(jù)丟失保護(hù),總是包括某種形式的橫跨存儲(chǔ)設(shè)備的信息冗余或者信息復(fù)制。數(shù)據(jù)保護(hù)的最簡單形式是鏡像。鏡像意味著有兩個(gè)或多個(gè)完整數(shù)據(jù)副本處于保護(hù)狀態(tài)。每個(gè)副本駐留在不同的磁盤上,所以一個(gè)磁盤故障后他是可以恢復(fù)的。
鏡像容易部署,但與更現(xiàn)代的保護(hù)技術(shù)相比有明顯的劣勢(shì)。鏡像保護(hù)數(shù)據(jù)非常浪費(fèi)存儲(chǔ)空間,并且僅能應(yīng)對(duì)單一磁盤故障,在節(jié)點(diǎn)密度和集群規(guī)模增加時(shí)這種保護(hù)級(jí)別是明顯不夠的。
數(shù)據(jù)保護(hù)的其他策略包括RAIDStriping。RAID與之伴隨的是極度復(fù)雜的管理負(fù)擔(dān),緩慢的重構(gòu)時(shí)間,迫使管理員在不可接受的漫長重構(gòu)和不可接受的存儲(chǔ)利用率之間作出選擇。
SBS采用高效的糾刪碼部署基于塊的數(shù)據(jù)保護(hù)。SBS用的是Reed Solomon碼。EC是比較快的,與鏡像或者RAID Striping比較起來更可配置更節(jié)省空間。
糾刪碼采用存儲(chǔ)于分布于不同的物理介質(zhì)的冗余數(shù)據(jù)切片編碼塊存儲(chǔ)。EC的高利用率帶來了低的每可用TB的成本。
糾刪碼的配置可以在性能、故障發(fā)生后的恢復(fù)時(shí)間、允許并發(fā)故障數(shù)量等情形下作出妥協(xié)。本文使用標(biāo)記(m,n)標(biāo)識(shí)糾刪碼配置,m代表物理介質(zhì)能安全存儲(chǔ)n個(gè)用戶數(shù)據(jù)塊總的數(shù)據(jù)塊數(shù)量。這個(gè)編碼代表最多m-n個(gè)數(shù)據(jù)塊損壞的情況下不會(huì)發(fā)生用戶數(shù)據(jù)丟失。換句話說,n個(gè)磁盤的組合可以恢復(fù)所有的用戶數(shù)據(jù),哪怕一些磁盤含有用戶數(shù)據(jù)。這種編碼的有效率可以用n/m來計(jì)算,或者用戶數(shù)據(jù)塊數(shù)除以全部數(shù)據(jù)塊數(shù)。
EC用舉例的方式及其容易理解,這是一個(gè)(3,2)編碼。
一個(gè)A(3,2)編碼需要三個(gè)塊(m=3),駐留在三個(gè)有區(qū)別的物理設(shè)備上,以保證安全的存放兩個(gè)塊(n=2)。其中的兩個(gè)數(shù)據(jù)塊存放用戶數(shù)據(jù)并被保護(hù),第三個(gè)塊叫奇偶校驗(yàn)塊。奇偶校驗(yàn)塊的內(nèi)容用糾刪碼算法計(jì)算得出。盡管這是一個(gè)極其簡單的方案,也比鏡像有效– 每兩個(gè)數(shù)據(jù)塊僅僅寫一個(gè)奇偶校驗(yàn)塊。在一個(gè)(3,2)編碼中,含有三個(gè)塊中任意一個(gè)的磁盤出現(xiàn)故障,在1和2兩個(gè)塊中的用戶數(shù)據(jù)是安全的。
他的工作原理是,如果數(shù)據(jù)塊1是可用的,那么就簡單的讀取它。對(duì)于數(shù)據(jù)塊2同樣適用。然而,如果數(shù)據(jù)塊1故障,EC系統(tǒng)讀取數(shù)據(jù)塊2和奇偶校驗(yàn)塊并使用Reed-Solomon碼方程式重構(gòu)出數(shù)據(jù)塊1的值(這個(gè)特定的例子就是簡單異或運(yùn)算)。相同的,如果數(shù)據(jù)塊2駐留的磁盤故障,系統(tǒng)讀取數(shù)據(jù)塊1和奇偶校驗(yàn)塊。SBS將確保數(shù)據(jù)塊駐留在不同的物理磁盤上所以系統(tǒng)能同時(shí)讀取這些塊。
一個(gè)(3,2)編碼的容量效率是2/3(n/m),或者是67%。從數(shù)據(jù)存儲(chǔ)角度說比50%效率的鏡像要好,(3,2)編碼僅僅能防范單盤故障。
在QF2中最小的編碼設(shè)置是(6,4),比鏡像模式多存儲(chǔ)1/3的用戶數(shù)據(jù),但可以允許兩塊磁盤同時(shí)故障。哪怕包含用戶數(shù)據(jù)的兩個(gè)數(shù)據(jù)塊失效,系統(tǒng)仍然能夠讀取兩個(gè)數(shù)據(jù)塊和兩個(gè)奇偶校驗(yàn)塊來恢復(fù)丟失的數(shù)據(jù)。
橫跨節(jié)點(diǎn)的受保護(hù)的虛擬塊的分布
在EC系統(tǒng)中對(duì)海量可擴(kuò)充的能力有很多實(shí)際的考慮。為了寫需要的奇偶較快的過程更容易(以及磁盤故障恢復(fù)數(shù)據(jù)),SBS把4K塊的虛擬地址空間分割到叫做受保護(hù)的存儲(chǔ)體或pstores的邏輯切片中。
SBS獨(dú)立管理每一個(gè)pstores,這樣使得受保護(hù)的地址空間與磁盤的關(guān)聯(lián)機(jī)制更靈活。所有的pstores大小相同。數(shù)據(jù)保護(hù)完全部署在系統(tǒng)的pstores這個(gè)級(jí)別。
Pstores可以理解為是一個(gè)映射受保護(hù)虛擬地址空間范圍到QF2集群節(jié)點(diǎn)虛擬磁盤上的存儲(chǔ)連續(xù)區(qū)域的表格。這個(gè)連續(xù)區(qū)域稱作bstores。
Pstores到bstores的映射存儲(chǔ)在集群中的每個(gè)節(jié)點(diǎn)上。為了可靠性集群節(jié)點(diǎn)采用Paxos的分布式算法來保持像pstores到bstores映射等的全局共享共識(shí)的一致性。集群設(shè)置了節(jié)點(diǎn)的仲裁以保證集群關(guān)鍵數(shù)據(jù)結(jié)構(gòu)的安全。
每個(gè)bstore使用一個(gè)特定虛擬磁盤的切片(也就是說,bstore是與特定的SSD和HDD對(duì)相關(guān)聯(lián)的)。當(dāng)bstore與SSD相關(guān)的空間動(dòng)態(tài)分配時(shí)每個(gè)bstore分配到相關(guān)HDD的連續(xù)空間上。Bstore的元數(shù)據(jù)也共存在相關(guān)的SSD上。Bstore元數(shù)據(jù)包括應(yīng)用中的地址信息,標(biāo)識(shí)每個(gè)指向SSD存儲(chǔ)的bstore中的塊地址與哪個(gè)HDD映射的信息。
讀或?qū)憰r(shí),pstore決定哪個(gè)bstore 需要被訪問。
當(dāng)文件系統(tǒng)的一個(gè)客戶端觸發(fā)了寫操作,它像一個(gè)原始數(shù)據(jù)流進(jìn)入SBS。系統(tǒng)識(shí)別出哪個(gè)bstore來寫入這個(gè)數(shù)據(jù),計(jì)算出校驗(yàn)數(shù)據(jù),把原始數(shù)據(jù)和校驗(yàn)數(shù)據(jù)同時(shí)寫入SSDs,即便SSDs駐留在不同的節(jié)點(diǎn)上也是如此。一旦數(shù)據(jù)寫完,客戶端將得到反饋,寫操作已經(jīng)發(fā)生。
含有用戶數(shù)據(jù)塊和校驗(yàn)信息數(shù)據(jù)塊的數(shù)據(jù)塊同時(shí)被寫入bstores,一個(gè)特定的bstore,在它的存活周期內(nèi),要么包含用戶數(shù)據(jù)塊,要么包含奇偶校驗(yàn)數(shù)據(jù)塊,但不能兩者同時(shí)包含。因?yàn)镋C實(shí)施部署在SBS的pstore層,含有校驗(yàn)信息數(shù)據(jù)塊的bstore和含有用戶數(shù)據(jù)塊的bstore運(yùn)作形式完全一樣。
分配給bstore的存儲(chǔ)容量大小取決于EC的定義。Pstore的尺寸大小前后一致,系統(tǒng)bstore的尺寸大小依編碼機(jī)制而變化。例如,如果pstore是70GB,在(6,4)的編碼機(jī)制情況下,每個(gè)bstore大約是17.5GB,也就是說pstore被分成了4個(gè)bstores。對(duì)于(10,8)的編碼機(jī)制來說bstore的大小將是前例的一半。
在云情況下,QF2采用和本地部署相同的數(shù)據(jù)保護(hù)機(jī)制,但有一個(gè)例外。本地部署,數(shù)據(jù)保護(hù)機(jī)制需要集群至少包含4個(gè)節(jié)點(diǎn),在云環(huán)境下,單節(jié)點(diǎn)集群也是可能的,因?yàn)镼F2可以使用內(nèi)置的鏡像,它存在于每一個(gè)彈性存儲(chǔ)塊中。云環(huán)境下的單節(jié)點(diǎn)集群采用(5,4)的糾刪碼機(jī)制。
快速重構(gòu)時(shí)間
QF2的重構(gòu)時(shí)間以小時(shí)計(jì),與之對(duì)應(yīng)傳統(tǒng)的存儲(chǔ)系統(tǒng),即便面向非常小的數(shù)據(jù)負(fù)載設(shè)計(jì),重構(gòu)時(shí)間也以天計(jì)。大量的文件,混合負(fù)載,不斷增加的磁盤密度都對(duì)傳統(tǒng)存儲(chǔ)的重構(gòu)時(shí)間帶來了危機(jī)。QF2在重構(gòu)時(shí)間方面的戲劇性優(yōu)勢(shì)是SBS高級(jí)的基于塊的保護(hù)的直接結(jié)果。
基于塊的保護(hù)機(jī)制在今天的現(xiàn)代負(fù)載情況下是非常理想的,現(xiàn)代負(fù)載通常是PB數(shù)據(jù),百萬文件,同時(shí)有很多小文件。SBS保護(hù)系統(tǒng)不需要做耗時(shí)的treewalks或者一個(gè)文件又一個(gè)文件的重構(gòu)操作,取而代之的是,重構(gòu)操作發(fā)生在pstores層面。帶來的結(jié)果是重構(gòu)時(shí)間不受文件尺寸大小的影響。小文件的處理與大文件一樣高效,保護(hù)百萬文件完全高效可靠。
另外,QF2的設(shè)計(jì),集群的規(guī)模大小不會(huì)對(duì)重構(gòu)時(shí)間帶來負(fù)面影響。事實(shí)上,其他系統(tǒng)的負(fù)面影響肯定存在。在QF2中,大規(guī)模集群的重構(gòu)時(shí)間還要快于小規(guī)模集群。原因就是SBS在整個(gè)集群中的節(jié)點(diǎn)上分散了重構(gòu)的計(jì)算負(fù)載。節(jié)點(diǎn)越多,重構(gòu)時(shí)每個(gè)節(jié)點(diǎn)要做的工作就越少。
傳統(tǒng)存儲(chǔ)系統(tǒng)較長時(shí)間的重構(gòu)會(huì)帶來重構(gòu)時(shí)其他磁盤故障帶來的巨大風(fēng)險(xiǎn)。換句話說,較長時(shí)間的重構(gòu)對(duì)于可靠性來說有巨大的負(fù)面影響。典型的情況是,管理人員用過分配的方法來補(bǔ)償(增加數(shù)據(jù)冗余度降低存儲(chǔ)效率)。QF2快速的重構(gòu)時(shí)間,管理員能夠保證他們的數(shù)據(jù)丟失時(shí)間窗口(MTTDL:Mean Time To Data Loss)目標(biāo)而不必做出很大的冗余代價(jià),即節(jié)省時(shí)間也節(jié)省錢。
Pstores的重構(gòu)
磁盤故障時(shí),pstore依然存在。它仍然可以讀出與寫入。然而,一些pstores會(huì)有丟失或損毀的bstores。這些pstores被稱為降級(jí)(degraded)pstores。正是因?yàn)镋C,你能夠連續(xù)的讀取這些降級(jí)的pstores,但是這些數(shù)據(jù)不再是全方位受保護(hù)的,換句話說,在第一次故障時(shí),你仍然擁有數(shù)據(jù)的完整性但是是一個(gè)磁盤接近了數(shù)據(jù)丟失。
重新保護(hù)數(shù)據(jù),系統(tǒng)在一個(gè)接一個(gè)的pstore層面上重構(gòu)駐留在失效磁盤上的bstores(不是傳統(tǒng)RAID組中一個(gè)接一個(gè)的文件層面)。SBS預(yù)留了一個(gè)小的額外磁盤空間實(shí)現(xiàn)該操作。這個(gè)叫做備用品(sparing)。
既然全局pstore到bstore的映射涵蓋了與bstore相關(guān)聯(lián)的虛擬磁盤的ID,這個(gè)信息就能簡單知道當(dāng)一個(gè)特定磁盤故障時(shí)哪個(gè)pstore需要處理。既然這個(gè)映射把pstore與bstore相關(guān)聯(lián)且數(shù)據(jù)量足夠小并駐留在每個(gè)節(jié)點(diǎn)的內(nèi)存中,集群節(jié)點(diǎn)就能快速翻譯從pstore到bstore的虛擬數(shù)據(jù)塊的地址。
在重構(gòu)的過程中,SBS順序讀寫bstores。既然bstores在磁盤上是連續(xù)分布的,降級(jí)pstores就能夠快速重構(gòu)。順序操作比很多小IO的操作要快很多,小IO操作很慢也能造成磁盤競(jìng)爭。SBS的重構(gòu)過程非常高效– 重構(gòu)過程中關(guān)聯(lián)到的磁盤一次只有一個(gè)讀或者寫的數(shù)據(jù)流。不需要隨機(jī)IO。另外,bstores也足夠小所以重新保護(hù)操作是高效的分發(fā)到整個(gè)集群的。
常規(guī)文件操作不受重構(gòu)影響
在傳統(tǒng)文件系統(tǒng)中,鎖機(jī)制的競(jìng)爭影響重構(gòu)時(shí)間并造成重構(gòu)時(shí)文件系統(tǒng)性能下降。這是因?yàn)檫@些文件操作與重構(gòu)/重保護(hù)的線程存在競(jìng)爭。QF2采用了帶有獨(dú)立鎖機(jī)制的寫操作分層技術(shù)所以重構(gòu)操作與常規(guī)文件系統(tǒng)的操作沒有競(jìng)爭和沖突。
運(yùn)行這些寫操作,系統(tǒng)對(duì)降級(jí)pstore增加了一層虛擬bstore。這被稱之為“pushing a layer”。寫操作進(jìn)入這一新的bstores層而讀操作則結(jié)合了每一層的信息。這里是一個(gè)示例。
新的寫操作進(jìn)入到上層的bstores。一個(gè)讀操作則借助EC算法結(jié)合了來自上層和下層的信息。一旦bstore的重構(gòu)完成這個(gè)push層就會(huì)消失。這些層是由SBS處理系統(tǒng)的多個(gè)組件以一種無阻塞的方式構(gòu)建成的。
小文件與大文件一樣高效
因?yàn)镼F2文件系統(tǒng)采用了基于數(shù)據(jù)塊的保護(hù),小文件的處理與大文件的處理有相同的效率。他們能與其他文件一起共享?xiàng)l帶(strips),并同時(shí)共享保護(hù)。每個(gè)文件都包含數(shù)據(jù)塊,至少一個(gè)inode塊,以及必須的其他的塊。非常小的文件是inlined到inode塊中的。本系統(tǒng)是采用了4K大小的數(shù)據(jù)塊,所有的塊都以系統(tǒng)的保護(hù)比率得到保護(hù)。
帶有小文件的QF2文件系統(tǒng)的效率是相較于傳統(tǒng)存儲(chǔ)系統(tǒng)的一個(gè)巨大優(yōu)勢(shì),他們對(duì)小文件和系統(tǒng)元數(shù)據(jù)采取的是無效的鏡像技術(shù)。
所呈現(xiàn)的全部存儲(chǔ)容量對(duì)用戶文件來說都是可用的
QF2用戶文件能百分之百的占用呈現(xiàn)空間(provisioned),而傳統(tǒng)scale-out存儲(chǔ)系統(tǒng)建議僅僅使用80%到85%。基于塊保護(hù)的QF2不需要預(yù)留空間(user-provisioned)實(shí)現(xiàn)重保護(hù),而是用一個(gè)小量空間來sparing,這個(gè)空間不屬于用戶呈現(xiàn)存儲(chǔ)空間。與之對(duì)照的是常規(guī)存儲(chǔ)系統(tǒng)部署保護(hù)機(jī)制不是用固定的RAID組技術(shù)就是用基于文件的糾刪碼技術(shù),這就意味著重保護(hù)也發(fā)生在文件級(jí)別并且需要用戶呈現(xiàn)存儲(chǔ)空間來實(shí)現(xiàn)數(shù)據(jù)恢復(fù)。
另外,QF2文件系統(tǒng)能精確顯示用于用戶文件的可用存儲(chǔ)空間。這種可預(yù)測(cè)性來源于基于塊的保護(hù)技術(shù)。傳統(tǒng)存儲(chǔ)系統(tǒng)存儲(chǔ)的使用依賴文件的大小,所以這些系統(tǒng)僅僅能顯示裸空間(raw space)- 管理員需估算多少空間實(shí)際可用。
當(dāng)比較QF2和傳統(tǒng)系統(tǒng)時(shí),需要考慮每個(gè)類型的系統(tǒng)用戶呈現(xiàn)容量實(shí)際上有多少空間可用。
數(shù)據(jù)處理
在SBS中,對(duì)受保護(hù)的虛擬地址空間的讀寫操作是可交易的。這就意味著,例如,當(dāng)一個(gè)QF2文件系統(tǒng)操作需要一個(gè)寫操作涉及到多于一個(gè)數(shù)據(jù)塊時(shí),該操作將不是寫所有相關(guān)數(shù)據(jù)塊就是一個(gè)數(shù)據(jù)塊都不寫。原子讀寫操作本質(zhì)上用于數(shù)據(jù)的一致性以及像文件協(xié)議SMB和NFS的正確部署和實(shí)現(xiàn)。
為了優(yōu)化性能,SBS在保證可交易的一致性的IO操作時(shí)最大化的實(shí)現(xiàn)并行和分布式計(jì)算的技術(shù)。例如,SBS的設(shè)計(jì)在需要順序而非并行的操作時(shí)避免了串型瓶頸。
SBS處理系統(tǒng)原理來源于ARIES算法來實(shí)現(xiàn)無阻塞處理,包括了超前寫日志、回滾操作時(shí)的記錄重復(fù)。然而,SBS處理系統(tǒng)的部署與ARIES有幾個(gè)重要的不同。
SBS充分利用觸發(fā)交易的QF2文件系統(tǒng)是可以預(yù)判的事實(shí)– 出色的存活短,與之對(duì)照的通用數(shù)據(jù)庫處理時(shí)的相對(duì)存活較長。一個(gè)存活短交易的應(yīng)用模版允許SBS為了效率能頻繁裁剪處理的日志。存活期短的處理實(shí)現(xiàn)了快速的指令執(zhí)行。
另外,SBS處理系統(tǒng)是高度分布執(zhí)行的而不需要全局定義的,每一個(gè)處理日志入口ARIES風(fēng)格的順序編號(hào)的全部指令的執(zhí)行。取而代之的是,每一個(gè)bstore中本地化的日志順序處理以及全局層面上使用部分指令機(jī)制實(shí)現(xiàn)順序約束執(zhí)行的聯(lián)合協(xié)調(diào)。
Qumulo DB采用兩階段鎖(2PL)協(xié)議部署用于一致性的串型指令運(yùn)行。串型操作分布到全部bstores中執(zhí)行,并且執(zhí)行操作順序可以重新構(gòu)造這是由私有的技術(shù)來保證的。SBS方法的優(yōu)越性是處理IO操作會(huì)用到絕對(duì)最少數(shù)量的鎖操作,同時(shí)這就使得QF2集群可以擴(kuò)充到數(shù)百個(gè)節(jié)點(diǎn)。
冷/熱分層實(shí)現(xiàn)讀/寫優(yōu)化
SBS內(nèi)置了冷熱數(shù)據(jù)分層技術(shù)以優(yōu)化讀寫性能。
本地部署時(shí),QF2充分利用了SSD的速度優(yōu)勢(shì)和傳統(tǒng)機(jī)械盤的廉價(jià)優(yōu)勢(shì)。SSD配合HDD在每個(gè)節(jié)點(diǎn)上存在。這個(gè)配合方法被稱為虛擬磁盤。系統(tǒng)中每個(gè)HDD都有一個(gè)虛擬磁盤。
數(shù)據(jù)總是被首先被寫到SSD上。因?yàn)樽x操作典型的是訪問最近寫入的數(shù)據(jù),SSD總是扮演緩存的角色。當(dāng)SSD的空間占用接近80%的時(shí)候,非頻繁訪問的數(shù)據(jù)被推送到HDD上。HDD為大尺寸的數(shù)據(jù)提供存儲(chǔ)空間順序讀寫操作。
云部署時(shí),QF2借助匹配高性能塊存儲(chǔ)和廉價(jià)低性能塊存儲(chǔ)優(yōu)化塊存儲(chǔ)資源的使用。
看一下下列SBS熱冷分層的因素:
如何寫和往哪里寫數(shù)據(jù)
元數(shù)據(jù)往哪里寫
數(shù)據(jù)何時(shí)失效
數(shù)據(jù)如何緩存和讀取
初始寫
對(duì)一個(gè)集群的寫操作,一個(gè)客戶端發(fā)送數(shù)據(jù)到一個(gè)節(jié)點(diǎn)。該節(jié)點(diǎn)選取一個(gè)或多個(gè)pstores存放數(shù)據(jù),對(duì)于硬件來說,總是寫到SSD或者云環(huán)境下的低延遲的塊存儲(chǔ)資源上。(回想一下,本地部署的SSD和云部署的低延遲塊存儲(chǔ),我們的使用方法是類似的)。這些SSD分布于多個(gè)節(jié)點(diǎn)上。
所有的寫操作都是面向SSDs;SBS從來不直接寫入HDD。即便是一個(gè)SSD已被寫滿,系統(tǒng)也會(huì)清除前面緩存的數(shù)據(jù)為這些新數(shù)據(jù)騰出空間。
元數(shù)據(jù)處理
通常來說,元數(shù)據(jù)居于SSD上。數(shù)據(jù)典型的被寫入到bstore的低可用地址上所以bstore數(shù)據(jù)的增長是從開始直到存滿。元數(shù)據(jù)的存放是相反的,從bstore的結(jié)尾往它的開始方向增長。這就是說元數(shù)據(jù)在用戶數(shù)據(jù)的右邊。下圖顯示了bstore中元數(shù)據(jù)的存放位置。
QF2在SSD上的bstore中為元數(shù)據(jù)分配了最多不到1%的空間并且永久有效。這1%空間中的數(shù)據(jù)永遠(yuǎn)不會(huì)推送到HDD上,如果元數(shù)據(jù)的大小超過1%就會(huì)失效,但是典型工作負(fù)載僅有接近1%的元數(shù)據(jù)量。如果沒有足夠的元數(shù)據(jù)量空間也不會(huì)浪費(fèi),其他數(shù)據(jù)也可以占用這個(gè)空間。
數(shù)據(jù)失效
在一些關(guān)鍵點(diǎn)上,系統(tǒng)需要更多的SSD上的空間所以一些數(shù)據(jù)會(huì)失效,或者從SSD移到HDD。把數(shù)據(jù)從SSD拷貝到HDD,而后一旦數(shù)據(jù)存到了HDD,就被從SSD上刪除。
失效操作始于一個(gè)SSD的所用空間已達(dá)80%,停止于空間占用返回到小于80%。這個(gè)80%的門檻是一個(gè)摸索出來的目的在于優(yōu)化性能– SSD空間占用在0%到80%之間時(shí)寫操作非常快同時(shí)失效也不會(huì)出現(xiàn)。
在數(shù)據(jù)從SSD被移動(dòng)到HDD時(shí),SBS會(huì)優(yōu)化順序?qū)懙紿DD,這也是為了優(yōu)化磁盤性能。填滿大的、連續(xù)的字節(jié)對(duì)寫HDD來說可能是最高效的方法。
緩存數(shù)據(jù)
下面的說明顯示了所有QF2的緩存。所有的綠色部分都是能存儲(chǔ)數(shù)據(jù)的地方,它既可能在SSD上,也可能在HDD上。
QF2的IO操作使用了三種不同類型的緩存??蛻舳丝偸菚?huì)有一些緩存,存儲(chǔ)節(jié)點(diǎn)上有兩類緩存。一種是交易緩存,可以被認(rèn)為是客戶端直接請(qǐng)求的文件系統(tǒng)數(shù)據(jù)。另一種類型是磁盤緩存,用于來自磁盤的數(shù)據(jù)塊保存在內(nèi)存中。
作為一個(gè)舉例,假定一個(gè)客戶端連接到節(jié)點(diǎn)1上啟動(dòng)了一個(gè)文件X的讀操作。節(jié)點(diǎn)1發(fā)現(xiàn)這些數(shù)據(jù)塊駐留在節(jié)點(diǎn)2上所以知會(huì)節(jié)點(diǎn)2想要這些數(shù)據(jù),本例中數(shù)據(jù)存儲(chǔ)在節(jié)點(diǎn)2 的SSD上。節(jié)點(diǎn)2讀取該數(shù)據(jù)并將其置于與這個(gè)SSD關(guān)聯(lián)的磁盤緩存中。節(jié)點(diǎn)2回復(fù)節(jié)點(diǎn)1并且發(fā)送這個(gè)數(shù)據(jù)。此時(shí)這個(gè)數(shù)據(jù)進(jìn)入節(jié)點(diǎn)1的交易緩存,而后知會(huì)客戶端它有了文件X的數(shù)據(jù)。
連接這個(gè)磁盤的節(jié)點(diǎn)是磁盤緩存所在的節(jié)點(diǎn)。而連接客戶端的節(jié)點(diǎn)是交易緩存所在的節(jié)點(diǎn)。磁盤緩存存有數(shù)據(jù)塊數(shù)據(jù)而交易緩存存有實(shí)際文件數(shù)據(jù)。交易緩存和磁盤緩存共享內(nèi)存,但是并沒有一個(gè)特定的數(shù)量分配給他們中的任何一個(gè)。
工業(yè)標(biāo)準(zhǔn)協(xié)議
QF2采用了標(biāo)準(zhǔn)的NFSv3和SMBv2.1協(xié)議。
REST API
QF2囊括了豐富的REST API。事實(shí)上QF2 GUI所呈現(xiàn)的全部信息都是生成于QF2 RESTAPI調(diào)用。GUI中的每個(gè)鍵都提供一個(gè)可用REST API調(diào)用的自描述資源??梢栽谶\(yùn)行的集群上執(zhí)行這些調(diào)用驗(yàn)證這些API,實(shí)時(shí)檢測(cè)請(qǐng)求和結(jié)果。這是一個(gè)舉例的截屏。
所有呈現(xiàn)的GUI分析信息都可以用REST調(diào)用API編程取回,存儲(chǔ)在外部數(shù)據(jù)庫中,或傳遞給像Splunk和Tableau這樣的其他應(yīng)用系統(tǒng)。大部分的文件系統(tǒng)操作也可以由REST API請(qǐng)求執(zhí)行。
結(jié)論
期待本文揭示了QF2的內(nèi)在秘密并且能被理解,讓讀者明白為什么QF2性能出色、擴(kuò)張能力超強(qiáng)的原理。如有更多的興趣,請(qǐng)聯(lián)系我們。
關(guān)鍵內(nèi)容
* 數(shù)據(jù)爆炸式增長,現(xiàn)代工作負(fù)荷是PB規(guī)模,數(shù)十億文件數(shù)量,文件大小不一。
* 很多存儲(chǔ)系統(tǒng)還基于數(shù)十年前的技術(shù),無法應(yīng)對(duì)當(dāng)今的工作負(fù)載。
* QF2是一個(gè)現(xiàn)代技術(shù)存儲(chǔ)系統(tǒng),特別針對(duì)當(dāng)今工作負(fù)載。
* QF2基于標(biāo)準(zhǔn)商用硬件,可本地部署,可云中部署。
* QF2使用了SSD和HDD的混合體系架構(gòu)。
* QF2采用實(shí)際文件系統(tǒng)下面的塊保護(hù)機(jī)制。
* QF2具備快速重構(gòu)能力,以小時(shí)計(jì),是業(yè)界最快的。
* 用戶文件可以占用100%的呈現(xiàn)容量。
* 小文件和大文件一樣高效。
* 整個(gè)文件系統(tǒng)像一個(gè)單一卷一樣存在。
* QF2的文件系統(tǒng)采用了與大型分布式數(shù)據(jù)庫一樣的技術(shù)。
* 實(shí)時(shí)分析給出文件系統(tǒng)當(dāng)前發(fā)生事件的洞察力。
* 使用空間的精確報(bào)表。
* 管理員可實(shí)施實(shí)時(shí)限額。
* 管理員明晰刪除快照的精確回收空間。
* QF2具備異步數(shù)據(jù)復(fù)制功能。
* QF2支持NFS和SMB標(biāo)準(zhǔn)協(xié)議,豐富的REST API。
---譯文結(jié)束---
聯(lián)系客服