版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
一、內(nèi)容總括分布式存儲(chǔ)系統(tǒng)是基于分布式架構(gòu),由多個(gè)軟硬件協(xié)同的存儲(chǔ)節(jié)點(diǎn)通過(guò)網(wǎng)絡(luò)互聯(lián)來(lái)提供存儲(chǔ)服務(wù)的系統(tǒng)。或簡(jiǎn)言之,分布式存儲(chǔ)系統(tǒng)使用分布式的方法來(lái)提供存儲(chǔ)服務(wù)。分布式存儲(chǔ)系統(tǒng)首先是存儲(chǔ)系統(tǒng)。作為存儲(chǔ)存儲(chǔ)系統(tǒng),最基本的需求是提供系統(tǒng)的可靠性和可用性??煽啃允侵?,用戶(hù)在存儲(chǔ)系統(tǒng)寫(xiě)入的數(shù)據(jù)不能丟,讀取的數(shù)據(jù)不能錯(cuò);可用性是指,系統(tǒng)提供的服務(wù)不中斷。除了可靠性和可用性,存儲(chǔ)系統(tǒng)還需要具備高性能、高數(shù)據(jù)存儲(chǔ)效率、高安全、易管理等特點(diǎn)。高性能是指系統(tǒng)提供高IOPS、高帶寬、低時(shí)延;高數(shù)據(jù)存儲(chǔ)效率是指,存儲(chǔ)系統(tǒng)利用數(shù)據(jù)縮減方法(如RAID、EC、重刪、壓縮等)使用戶(hù)寫(xiě)入的數(shù)據(jù)占用盡量小的存儲(chǔ)空間;高安全主要針對(duì)存儲(chǔ)系統(tǒng)的用戶(hù)業(yè)務(wù)、存儲(chǔ)設(shè)備、存儲(chǔ)網(wǎng)絡(luò)等,需要保證它們不易受到安全威脅和攻擊,即使收到攻擊后也易于恢復(fù);易管理是指系統(tǒng)在生命周期內(nèi)可以進(jìn)行方便的配置、維護(hù)、優(yōu)化等。分布式存儲(chǔ)是使用分布式的方法設(shè)計(jì)的,必然具有分布式系統(tǒng)的特點(diǎn)。這些特點(diǎn)包括易擴(kuò)展、融合存儲(chǔ)服務(wù)、生態(tài)開(kāi)放等。易擴(kuò)展是指可以在方便地在已有的分布式存儲(chǔ)系統(tǒng)中添加(或縮減)節(jié)點(diǎn),并且系統(tǒng)的整體性能(IOPS、帶寬)和節(jié)點(diǎn)數(shù)量(近)線(xiàn)性相關(guān);融合服務(wù)能力是指存儲(chǔ)系統(tǒng)可以同時(shí)支持塊、文件、對(duì)象、HDFS等多種存儲(chǔ)服務(wù);生態(tài)開(kāi)放是指分布式存儲(chǔ)不僅可以方便地對(duì)接各種上層應(yīng)用,其系統(tǒng)自身的軟硬件也具有相對(duì)開(kāi)放的生態(tài)。人們總是追求完美的產(chǎn)品。對(duì)于分布式存儲(chǔ)產(chǎn)品,也不例外。比如數(shù)據(jù)高可靠要高,永遠(yuǎn)不會(huì)丟數(shù)據(jù);系統(tǒng)可用性要高,永遠(yuǎn)在線(xiàn);系統(tǒng)擴(kuò)展性要強(qiáng),可任意擴(kuò)、縮存儲(chǔ)節(jié)點(diǎn);系統(tǒng)容錯(cuò)性強(qiáng),隨便壞幾塊硬盤(pán),甚至壞幾個(gè)節(jié)點(diǎn)都不會(huì)影響存儲(chǔ)系統(tǒng)的可靠性和系統(tǒng)可用性;當(dāng)然,存儲(chǔ)還必須具備高性能。但是,完美的存儲(chǔ)系統(tǒng)是不存在的。這倒不完全是由于技術(shù)的原因,一些更深層的原理,比如分布式存儲(chǔ)中的CAP理論,就從理論上制約了完美存儲(chǔ)的存在。實(shí)際上,我們?cè)谠O(shè)計(jì)分布式系統(tǒng)的時(shí)候,往往要在可靠性、可用性、性能、存儲(chǔ)效率、成本等不同的方面進(jìn)行權(quán)衡和取舍。不同的用戶(hù)、不同的應(yīng)有場(chǎng)景,對(duì)分布式存儲(chǔ)系統(tǒng)的關(guān)注點(diǎn)也不盡相同。這也是為什么即使是同一個(gè)的廠商的分布式存儲(chǔ)產(chǎn)品,也會(huì)分成不同的產(chǎn)品系列和型號(hào)。其主要作用就是滿(mǎn)足不同場(chǎng)景和用戶(hù)的需求。本文的主要目的,是對(duì)分布式存儲(chǔ)系統(tǒng)設(shè)計(jì)中所關(guān)注的問(wèn)題和方法做一些簡(jiǎn)要的說(shuō)明,以期讀者通過(guò)此文對(duì)分布式存儲(chǔ)系統(tǒng)有一個(gè)基本的了解。下面,我將對(duì)本文中提及的分布式存儲(chǔ)的特征做一個(gè)基本描述。因?yàn)槲恼麻L(zhǎng)度的限制,這里的描述是粗略的。之后,我希望根據(jù)讀者的興趣和本人的能力,對(duì)分布式存儲(chǔ)系統(tǒng)中的一些問(wèn)題和方法進(jìn)行專(zhuān)題論述。二、可靠性首先,我們看一下分布式存儲(chǔ)系統(tǒng)的可靠性?!翱煽啃浴痹诓煌恼Z(yǔ)境下有不同的含義。為避免歧義,此文中我們特指存儲(chǔ)系統(tǒng)數(shù)據(jù)的可靠性。更加嚴(yán)格一點(diǎn)說(shuō),是指存儲(chǔ)系統(tǒng)在給定的時(shí)間內(nèi)(定量計(jì)算中一般取一年)數(shù)據(jù)不丟失的概率。比如,亞馬遜S3存儲(chǔ)服務(wù)的數(shù)據(jù)可靠性指標(biāo)是11個(gè)9,也就是99.999999999%。照此計(jì)算,用戶(hù)存儲(chǔ)百億對(duì)象,平均十年可能出現(xiàn)1個(gè)對(duì)象丟失。對(duì)分布式存儲(chǔ)系統(tǒng)來(lái)說(shuō),造成數(shù)據(jù)丟失的主要原因是硬件失效(除硬件失效外,軟件Bug也會(huì)造成數(shù)據(jù)可靠性降低,軟件Bug不在本文中論述)。硬件失效包括硬盤(pán)失效、存儲(chǔ)節(jié)點(diǎn)失效、網(wǎng)絡(luò)異常、IDC故障等。硬件失效時(shí)不可避免的。為了保證在發(fā)生硬件失效時(shí),從整個(gè)存儲(chǔ)系統(tǒng)的角度不丟失數(shù)據(jù),一般采用數(shù)據(jù)冗余的方法,在分布式存儲(chǔ)集群內(nèi)做數(shù)據(jù)冗余,甚至在IDC機(jī)房間的不同分布式存儲(chǔ)集群間做數(shù)據(jù)冗余(數(shù)據(jù)備份)。當(dāng)前較為成熟的數(shù)據(jù)冗余方法包括多副本和糾刪碼,一些新的網(wǎng)絡(luò)編碼方案也探索中。多副本,顧名思義,就是把數(shù)據(jù)在分布式系統(tǒng)中保存多份;糾刪碼是RAID技術(shù)的拓展,它把將存儲(chǔ)數(shù)據(jù)分割成固定長(zhǎng)度的數(shù)據(jù)片段,基于這些數(shù)據(jù)片段,利用算法計(jì)算出若干個(gè)校驗(yàn)片段,然后把數(shù)據(jù)片段和校驗(yàn)片段存儲(chǔ)到不同的存儲(chǔ)介質(zhì)上。為了最大限度的提高數(shù)據(jù)可靠性,數(shù)據(jù)的不同副本或糾刪碼片段盡量要存儲(chǔ)在不同存儲(chǔ)節(jié)點(diǎn)(甚至不同機(jī)架)。基于硬件失效(硬盤(pán)、節(jié)點(diǎn)、網(wǎng)絡(luò)等)的數(shù)據(jù)可靠性可以通過(guò)建模的方法計(jì)算出來(lái)。常見(jiàn)的算法模型包括蒙特卡洛方法和基于泊松分布的數(shù)據(jù)估計(jì)方法,后續(xù)文章專(zhuān)門(mén)論述,本文從略。數(shù)據(jù)可靠性還包含了數(shù)據(jù)完整性。用戶(hù)寫(xiě)入存儲(chǔ)系統(tǒng)的數(shù)據(jù)再讀取時(shí)必須正確的。實(shí)際上,數(shù)據(jù)進(jìn)入存儲(chǔ)系統(tǒng),要經(jīng)過(guò)網(wǎng)卡、CPU、內(nèi)存、RAID(HBA)卡、硬盤(pán)等多個(gè)部件的處理,理論上,每個(gè)部件在處理過(guò)程中都可能發(fā)生數(shù)據(jù)錯(cuò)誤。為避免這些可能的錯(cuò)誤,需要數(shù)據(jù)中添加校驗(yàn)信息,以保障最終落盤(pán)數(shù)據(jù)的完整性。校驗(yàn)信息不僅可以保障落盤(pán)數(shù)據(jù)的完整性,還可以避免另一類(lèi)重要問(wèn)題,即靜默錯(cuò)誤(SilentDataCorruption)。磁盤(pán)發(fā)生靜默錯(cuò)誤的原因包括介質(zhì)損壞、firmware問(wèn)題等。在讀取發(fā)生靜默錯(cuò)誤的數(shù)據(jù)時(shí),通過(guò)校驗(yàn)信息,就可以發(fā)現(xiàn)讀物數(shù)據(jù)的問(wèn)題,此時(shí),通過(guò)其他副本(或其他校驗(yàn)方法)可以重新讀出正確的數(shù)據(jù),保證讀取數(shù)據(jù)的完整性。為了提升分布式存儲(chǔ)系統(tǒng)的數(shù)據(jù)可靠性,需要從多個(gè)維度進(jìn)行考量。從存儲(chǔ)節(jié)點(diǎn)部件(硬盤(pán)、內(nèi)存、CPU、RAID/HBA卡)級(jí),到存儲(chǔ)集群系統(tǒng)級(jí),再到解決方案級(jí),需要多個(gè)層次通盤(pán)考慮。在部件級(jí),硬盤(pán)(包括HDD和SSD)最終承載了用戶(hù)數(shù)據(jù),且其數(shù)量大,相對(duì)易出錯(cuò),所以,如何有效、快速地識(shí)別和處理硬盤(pán)故障,把硬盤(pán)故障對(duì)整個(gè)系統(tǒng)的影響降到最低,是可靠性設(shè)計(jì)面臨的關(guān)鍵挑戰(zhàn)。對(duì)硬盤(pán)可靠性提升的方法包括硬盤(pán)壞道檢測(cè)、錯(cuò)誤處理、滿(mǎn)盤(pán)檢測(cè)和隔離、故障預(yù)測(cè)等內(nèi)容。除硬盤(pán)外,網(wǎng)卡、內(nèi)存等部件有需要相應(yīng)的可靠性檢測(cè)和保護(hù)技術(shù)。存儲(chǔ)集群系統(tǒng)級(jí)的可靠性技術(shù)包括數(shù)據(jù)布局的方法、故障節(jié)點(diǎn)的快速檢測(cè)和切換、數(shù)據(jù)的快速重構(gòu)等。數(shù)據(jù)布局技術(shù)就是數(shù)據(jù)的副本或EC分片在存儲(chǔ)集群中的分布方法。良好的數(shù)據(jù)布局在可以在相同副本或EC配置下最大化數(shù)據(jù)可靠性。為此,經(jīng)常需要綜合利用節(jié)點(diǎn)池、硬盤(pán)池、故障域、保護(hù)域等多種技術(shù)。節(jié)點(diǎn)故障(包括硬盤(pán)故障)的快速檢測(cè)對(duì)提升存儲(chǔ)系統(tǒng)數(shù)據(jù)可靠性和系統(tǒng)可用性(下文中詳細(xì)講解)都要重要作用。通常利用基于軟件心跳的方法檢測(cè)節(jié)點(diǎn)故障,部分廠商基于硬件故障上報(bào)或軟硬結(jié)合的方法,可以更快地進(jìn)行故障檢測(cè)和切換。在單個(gè)硬盤(pán)或節(jié)點(diǎn)失效時(shí),存儲(chǔ)系統(tǒng)部分?jǐn)?shù)據(jù)可靠性處于降級(jí)狀態(tài),此時(shí),需要盡快地進(jìn)行數(shù)據(jù)重構(gòu),恢復(fù)數(shù)據(jù)完整性。計(jì)算表明,數(shù)據(jù)重構(gòu)的時(shí)間和數(shù)據(jù)可靠性并非線(xiàn)性關(guān)系,而是指數(shù)型關(guān)系,所以快速重構(gòu)對(duì)于數(shù)據(jù)可靠性的提升具有重大意義。而數(shù)據(jù)重構(gòu)速度在很大程度上依賴(lài)于數(shù)據(jù)布局策略,良好的數(shù)據(jù)布局可以充分發(fā)揮分布式存儲(chǔ)的特點(diǎn),多個(gè)節(jié)點(diǎn)(硬盤(pán))并行重構(gòu)數(shù)據(jù),從而大幅提升重構(gòu)效率。解決方案級(jí)的數(shù)據(jù)可靠性技術(shù)主要包括不同存儲(chǔ)系統(tǒng)間的異步復(fù)制和同步復(fù)制技術(shù)。此處不詳述。三、可用性系統(tǒng)的可用性(availability)指系統(tǒng)可以正常提供服務(wù)的能力。對(duì)分布式存儲(chǔ)系統(tǒng)而言,可用性就是指系統(tǒng)可以正常提供讀/寫(xiě)數(shù)據(jù)的能力。這里所謂的“正?!保侵赣脩?hù)的讀寫(xiě)操作在合理的時(shí)間內(nèi)被存儲(chǔ)系統(tǒng)執(zhí)行,用戶(hù)寫(xiě)入數(shù)據(jù)被正確地持久化在存儲(chǔ)系統(tǒng)內(nèi),用戶(hù)讀出的數(shù)據(jù)是最近更新成功的數(shù)據(jù)??捎眯砸话阌孟到y(tǒng)提供正常服務(wù)的時(shí)長(zhǎng)與總時(shí)長(zhǎng)的比例來(lái)衡量。比如,若一個(gè)存儲(chǔ)系統(tǒng)的可用性指標(biāo)是99.9999%,則該系統(tǒng)在一年內(nèi)不能提供服務(wù)的時(shí)間約為30秒。對(duì)分布式存儲(chǔ)系統(tǒng)來(lái)說(shuō),硬件部件(如硬盤(pán))故障、節(jié)點(diǎn)失效、網(wǎng)絡(luò)故障都被視為無(wú)可避免的正常情況。要實(shí)現(xiàn)系統(tǒng)高可靠,就是在這些情況出現(xiàn),分布式存儲(chǔ)整體作為一個(gè)系統(tǒng),將不可提供讀寫(xiě)服務(wù)的時(shí)間壓縮到最短,甚至沒(méi)有(主機(jī)應(yīng)用讀寫(xiě)無(wú)感知)。理論上將,對(duì)于一個(gè)含有N個(gè)節(jié)點(diǎn)的對(duì)稱(chēng)式分布式存儲(chǔ)集群來(lái)說(shuō),每一份寫(xiě)入集群的數(shù)據(jù)最好能在每個(gè)節(jié)點(diǎn)上有一個(gè)副本,這樣,及時(shí)N-1個(gè)節(jié)點(diǎn)全部失效,剩下的一個(gè)節(jié)點(diǎn)也包含完整數(shù)據(jù),可以對(duì)外提供讀寫(xiě)服務(wù)。但如果這樣做,必然導(dǎo)致數(shù)據(jù)存儲(chǔ)效率的降低,以及較低的性能。這時(shí)顯而易見(jiàn)的。所以,系統(tǒng)設(shè)計(jì)時(shí),要在可用性和存儲(chǔ)效率、性能之間做一定的取舍和均衡。分布式存儲(chǔ)系統(tǒng)的一個(gè)好處是,系統(tǒng)中的任何一個(gè)節(jié)點(diǎn)都可以提供讀寫(xiě)服務(wù)。一個(gè)自然的要求是,我們希望每個(gè)節(jié)點(diǎn)在同一時(shí)刻看到的數(shù)據(jù)是一致的。更具體地說(shuō),就是在一個(gè)具有一致性的分布式系統(tǒng)中,一旦對(duì)任何一個(gè)節(jié)點(diǎn)的寫(xiě)入返回成功,后續(xù)系統(tǒng)中其它任何節(jié)點(diǎn)都可以立即讀到這個(gè)更新值。這個(gè)性能稱(chēng)為分布式系統(tǒng)的一致性(Consistency)。一致性的要求是合理的,比如對(duì)于一個(gè)分布式應(yīng)用來(lái)說(shuō),一些節(jié)點(diǎn)需要從存儲(chǔ)系統(tǒng)的不同節(jié)點(diǎn)上讀取數(shù)據(jù)的最新寫(xiě)入值,并根據(jù)這個(gè)值做進(jìn)一步處理。此時(shí),如果不能滿(mǎn)足數(shù)據(jù)一致性的要求,就可能導(dǎo)致應(yīng)用錯(cuò)誤。分布式系統(tǒng)的另一個(gè)合理要求是分區(qū)容錯(cuò)性(Partitiontolerance)。分區(qū)即網(wǎng)絡(luò)分區(qū),是因?yàn)榫W(wǎng)絡(luò)故障導(dǎo)致網(wǎng)絡(luò)不連通,不同節(jié)點(diǎn)分布在不同的子網(wǎng)絡(luò)中,子網(wǎng)內(nèi)通信正常。分區(qū)容錯(cuò)性就是在發(fā)生網(wǎng)絡(luò)分區(qū)時(shí),系統(tǒng)仍然可提供服務(wù),系統(tǒng)仍然可用。從需求上說(shuō),系統(tǒng)可用性、一致性、分區(qū)容錯(cuò)性都是分布式存儲(chǔ)的必備性質(zhì)。然而,2002年,麻省理工學(xué)院的Gilbert和Lynch發(fā)表了著名的CAP定理,證明了在分布式系統(tǒng)中,一致性(Consistency)、可用性(Availability)、分區(qū)容錯(cuò)性(Partitiontolerance)不可兼得。雖然CAP定理存在一定爭(zhēng)議,但爭(zhēng)議本身已在不斷加深人們對(duì)分布式系統(tǒng)內(nèi)在性質(zhì)的理解。實(shí)際上,一致性的模型是比較復(fù)雜的。從概念上分,一致性模型包括嚴(yán)格一致性、線(xiàn)性一致性、順序一致性、因果一致性、單調(diào)一致性、最終一致性等。CAP定理中的一致性指線(xiàn)性一致性,屬于強(qiáng)一致性中的一種。對(duì)一致性的詳細(xì)介紹在專(zhuān)門(mén)的文章中討論。對(duì)分布式存儲(chǔ)來(lái)說(shuō),網(wǎng)絡(luò)分區(qū)(P)是不可避免的。而C、A、P又不能共存,那么我們只能選擇CP或者AP。對(duì)于一個(gè)通用的分布式存儲(chǔ)系統(tǒng)來(lái)說(shuō),缺少一致性對(duì)部分應(yīng)用來(lái)說(shuō)是不可接受的,所以,大部分分布式存儲(chǔ)系統(tǒng)都是CP型系統(tǒng)。當(dāng)然,這并不意味著完全舍棄了可用性(A)。實(shí)際上,CAP理論中的A是理論上的最高可用性。在實(shí)際的系統(tǒng)中,并不會(huì)放棄A,設(shè)計(jì)者只是選擇在C和A中選擇哪個(gè)更多一點(diǎn),再一次做權(quán)衡和取舍。在發(fā)生分區(qū)的時(shí)候,我們選擇了CP;不發(fā)生分區(qū)的時(shí)候,C和A自然是可以兼顧的。然而在此時(shí),可用性和性能,具體地說(shuō),是可用性和時(shí)延又成了一對(duì)不可兼得的特性。也就是說(shuō),在無(wú)分區(qū)的情況下,要追求更強(qiáng)的一致性,就得接受更高的響應(yīng)時(shí)長(zhǎng)。這個(gè)結(jié)論出自PACELC定理。對(duì)這個(gè)定理的一個(gè)粗略解釋是:更強(qiáng)的一致性必然要求數(shù)據(jù)以同步的方式進(jìn)行復(fù)制,相比于異步復(fù)制,同步復(fù)制需要花費(fèi)更多的時(shí)間。響應(yīng)時(shí)長(zhǎng)就是性能三大指標(biāo)之一的時(shí)延。從這里我們也可以看到,及時(shí)在不發(fā)生網(wǎng)絡(luò)分區(qū)的情況下,可用性和性能(時(shí)延)之間也要做仔細(xì)的權(quán)衡和取舍。分布式存儲(chǔ)系統(tǒng)要做到高可用,需要從多個(gè)角度進(jìn)行設(shè)計(jì)。分布式存儲(chǔ)系統(tǒng)自身首先要做到高可用。存儲(chǔ)系統(tǒng)中保存多份數(shù)據(jù)(數(shù)據(jù)可靠性),并且其中多個(gè)(甚至所有)節(jié)點(diǎn)都可以獨(dú)立對(duì)外提供存儲(chǔ)服務(wù),這是高可用的基礎(chǔ)。另外,在系統(tǒng)中發(fā)生故障時(shí),需要系統(tǒng)具備快速的故障檢測(cè)和故障轉(zhuǎn)移能力。距離來(lái)說(shuō),外部主機(jī)通過(guò)虛擬地址連接到存儲(chǔ)集群中的某一臺(tái)存儲(chǔ)節(jié)點(diǎn)讀寫(xiě)集群數(shù)據(jù),在該存儲(chǔ)節(jié)點(diǎn)發(fā)生宕機(jī)等事件無(wú)法繼續(xù)提供服務(wù)時(shí),存儲(chǔ)系統(tǒng)要具備快速將服務(wù)切換到虛擬地址對(duì)應(yīng)的備用存儲(chǔ)節(jié)點(diǎn)上繼續(xù)提供服務(wù)。要提升可用性,有時(shí)還需要應(yīng)用側(cè)(主機(jī)側(cè))進(jìn)行配合。比如,在主機(jī)通過(guò)多路徑軟件連接到分布式存儲(chǔ)集群時(shí),在存儲(chǔ)集群檢測(cè)到其中某個(gè)存儲(chǔ)節(jié)點(diǎn)故障時(shí),可以立即通知主機(jī)側(cè)(如通過(guò)主機(jī)上安裝的代理軟件),進(jìn)行快速路徑切換。這種方法比簡(jiǎn)單地通過(guò)主機(jī)側(cè)利用軟件超時(shí)的方法進(jìn)行故障倒換要快的多。再比如,在主機(jī)側(cè)安裝特定的存儲(chǔ)客戶(hù)端軟件,使主機(jī)以負(fù)載分擔(dān)的方法,和存儲(chǔ)集群中的多個(gè)節(jié)點(diǎn)同時(shí)通信。此時(shí),若某個(gè)節(jié)點(diǎn)故障,主機(jī)還可以通過(guò)其他鏈路讀寫(xiě)集群數(shù)據(jù),這也是對(duì)可用性的提升。除了在本地分布式存儲(chǔ)集群中考慮提升可用性外,如果有更高的可用性要求,可以考慮基于不同地理位置的業(yè)務(wù)連續(xù)性保護(hù)方案,典型如異步復(fù)制方案、AA雙活方案等。異步復(fù)制方案中,存儲(chǔ)系統(tǒng)一般分為主端和從端。主端存儲(chǔ)系統(tǒng)的數(shù)據(jù)會(huì)周期性地備份到從端存儲(chǔ)系統(tǒng)。這樣,在主存儲(chǔ)端整體不可用(如斷電、火災(zāi)等)時(shí),還可以利用從端的數(shù)據(jù)繼續(xù)提供服務(wù)。AA雙活的兩個(gè)存儲(chǔ)系統(tǒng)均處于活躍(Active),用戶(hù)端從任意一個(gè)系統(tǒng)寫(xiě)入的數(shù)據(jù)會(huì)以同步的方式寫(xiě)入到另一個(gè)系統(tǒng)。當(dāng)一個(gè)系統(tǒng)發(fā)生設(shè)備故障,甚至單個(gè)系統(tǒng)整體故障時(shí),業(yè)務(wù)自動(dòng)切換到另一個(gè)存儲(chǔ)系統(tǒng)。AA雙活系統(tǒng)比異步遠(yuǎn)程復(fù)制提供更高的可用性(以及數(shù)據(jù)可靠性),當(dāng)然,其實(shí)現(xiàn)的技術(shù)復(fù)雜度、實(shí)施成本、技術(shù)限制(互聯(lián)距離、互聯(lián)帶寬/時(shí)延要求)也更高。高可用性的獲得不僅體現(xiàn)在技術(shù)上,也體現(xiàn)在服務(wù)能力上。比如,備件能力、可維護(hù)性等??傊?,系統(tǒng)的高可用性是多個(gè)因素共同作用的結(jié)果。四、IO性能對(duì)于存儲(chǔ)系統(tǒng),經(jīng)常用IOPS(I/Opersecond)、帶寬(Throughput)、時(shí)延(Latency)這三個(gè)參數(shù)作為性能衡量指標(biāo)。IOPS指的是系統(tǒng)在單位時(shí)間(1秒)內(nèi)能處理的最大的I/O數(shù)量。把IOPS的值乘以IO尺寸,就得到了帶寬指標(biāo)。所以說(shuō),IOPS和帶寬不是兩個(gè)獨(dú)立的指標(biāo)。那為什么人們?yōu)槭裁匆捎脙蓚€(gè)指標(biāo)來(lái)做度量呢?實(shí)際上,這和存儲(chǔ)系統(tǒng)本身的特性相關(guān):對(duì)于不同尺寸和訪問(wèn)模式(隨機(jī)/順序)的數(shù)據(jù),存儲(chǔ)系統(tǒng)性能會(huì)表現(xiàn)出很大差異!具體來(lái)說(shuō),在相同的設(shè)備上,對(duì)于小尺寸IO(如4KB、8KB)的隨機(jī)讀寫(xiě)和大尺寸IO(如1MB以上)的讀寫(xiě),從存儲(chǔ)系統(tǒng)所能獲得的帶寬可能有數(shù)量級(jí)的差異!所以,我們提到存儲(chǔ)存儲(chǔ)系統(tǒng)的IOPS,一般是指在小尺寸IO(即小IO)下每秒內(nèi)可獲得的IO次數(shù);而帶寬指大尺寸IO(即大IO)下(這里不再區(qū)分隨機(jī)/順序不同模式的原因是大IO性能對(duì)不同模式不敏感)的讀寫(xiě)存儲(chǔ)系統(tǒng)所獲得的吞吐量。再進(jìn)一步追問(wèn),為什么不同尺寸IO在性能上會(huì)有如此大的差異呢?這是存儲(chǔ)介質(zhì)(HDD、SSD)的特性所決定的。以目前在存儲(chǔ)系統(tǒng)中最廣泛使用的磁盤(pán)(HDD)為例,一般SATA接口的硬盤(pán),在4KB的IO尺寸下,IOPS值大概是100,照此計(jì)算,此時(shí)的帶寬是0.4MB;在1MB的IO尺寸下,其帶寬卻可以達(dá)到100MB。由此可見(jiàn),不同的IO模式,磁盤(pán)的帶寬值可以相差數(shù)百倍!至于磁盤(pán)的性能表現(xiàn)為何如此,這是由其物理特性和讀寫(xiě)方式?jīng)Q定的,此處不再詳述。實(shí)際上,正式因?yàn)榇疟P(pán)在不同IO尺寸和訪問(wèn)模式下性能的巨大差異,才導(dǎo)致了需要對(duì)以磁盤(pán)為主要存儲(chǔ)介質(zhì)的存儲(chǔ)系統(tǒng)進(jìn)行性能優(yōu)化的可能。如果磁盤(pán)在任意IO下的性能是相同的,性能優(yōu)化的意義就大打折扣。對(duì)存儲(chǔ)系統(tǒng)的寫(xiě)性能優(yōu)化和讀性能優(yōu)化,其原理并不相同。實(shí)際上,在存儲(chǔ)系統(tǒng)的發(fā)展過(guò)程中,對(duì)性能優(yōu)化的一個(gè)關(guān)鍵技術(shù)就是如何能充分發(fā)揮存儲(chǔ)介質(zhì)的性能。在存儲(chǔ)系統(tǒng)中,和IO處理直接相關(guān)的部件基本指標(biāo)如下圖所示:從上圖可以看出,從CPU到CPUCache,再到DRAM內(nèi)存、PCM(Phase-ChangeMemory,非易失性?xún)?nèi)存的一種)、SSD、HDD,訪問(wèn)時(shí)延和容量都迅速變大。所以,對(duì)于性能優(yōu)化,一方面要充分利用高速緩存介質(zhì),另一方面要充分HDD和SSD的性能,因?yàn)閿?shù)據(jù)最終要存儲(chǔ)在這些介質(zhì)上。如前所述,對(duì)于HDD來(lái)說(shuō),其大塊數(shù)據(jù)的順序讀寫(xiě)性能遠(yuǎn)高于隨機(jī)讀寫(xiě)性能。對(duì)于SSD來(lái)說(shuō),作為半導(dǎo)體存儲(chǔ),不存在HDD通過(guò)機(jī)械臂尋道導(dǎo)致的時(shí)延問(wèn)題,但由于其自身的GC機(jī)制(垃圾回收),順序訪問(wèn)的性能同樣高于隨機(jī)訪問(wèn),當(dāng)然,其訪問(wèn)性能差異遠(yuǎn)沒(méi)有HDD大。應(yīng)用訪問(wèn)存儲(chǔ)的IO讀寫(xiě)模式并不固定,既有以隨機(jī)小IO居多的應(yīng)用(如數(shù)據(jù)庫(kù)),也有以IO居多的應(yīng)用(如視頻、HPC等),當(dāng)然,更多的是大小IO混雜應(yīng)用。既然大IO可以充分發(fā)揮硬盤(pán)(HDD或SSD)性能,那么,性能優(yōu)化的一個(gè)方向就是把小IO變成大IO,把隨機(jī)IO變成順序IO。下面分別從IO存取兩方面分別說(shuō)明。首先看一下基本的數(shù)據(jù)寫(xiě)入流程:在應(yīng)用將數(shù)據(jù)寫(xiě)入到存儲(chǔ)系統(tǒng)的內(nèi)存后,系統(tǒng)會(huì)在把數(shù)據(jù)的副本(通常以日志形式)寫(xiě)入非易失性高速介質(zhì)(如NVDIMM、PCM、NVMeSSD等)后,就會(huì)向應(yīng)用返回寫(xiě)入成功信息;然后,內(nèi)存中的數(shù)據(jù)以異步的形式寫(xiě)入真正的存儲(chǔ)介質(zhì),即硬盤(pán)中。這樣做一方面可以在節(jié)點(diǎn)數(shù)據(jù)可靠性(因?yàn)閷?xiě)入了非易失性介質(zhì)中,即使突然斷電,系統(tǒng)重啟后數(shù)據(jù)可恢復(fù))的前提下做到低時(shí)延,另一方面可以對(duì)內(nèi)存中的寫(xiě)入數(shù)據(jù)(小IO)進(jìn)行一定的處理,使得這些數(shù)據(jù)寫(xiě)入硬盤(pán)是獲得更好的性能。從而在整體上寫(xiě)入性能上獲得低時(shí)延,更高的帶寬。把寫(xiě)入的隨機(jī)小IO變成大IO(或順序IO)的方法之一就是利用寫(xiě)緩存技術(shù)。其原理如下:我們以磁盤(pán)為例進(jìn)行說(shuō)明。大體上有兩類(lèi)方法進(jìn)行寫(xiě)性能優(yōu)化。其一是IO調(diào)度法。在多個(gè)隨機(jī)小IO寫(xiě)入緩存(高速介質(zhì),如內(nèi)存)后,由算法根據(jù)IO調(diào)度:調(diào)度的結(jié)果是部分小IO(邏輯位置相鄰)被合并成較大IO;部分小IO被重排,重排后的IO可以使磁盤(pán)的磁頭以相對(duì)較好的順序性訪問(wèn)磁盤(pán),從而提升寫(xiě)入性能。其二是數(shù)據(jù)重映射法。這種方法的核心思想是小IO不再進(jìn)行“in-place”的寫(xiě)入,而是通過(guò)引入一個(gè)重映射層(或稱(chēng)索引層),把隨機(jī)寫(xiě)入的IO以追加寫(xiě)(append)的方式變成變成對(duì)磁盤(pán)的順序?qū)懭?。這樣就可以充分利用磁盤(pán)順序?qū)懭氲母邘捥匦?,付出的代價(jià)是首先,要建立原有隨機(jī)小IO和新的順序IO之間的映射表(索引);其次,要有垃圾回收機(jī)制,因?yàn)閿?shù)據(jù)不是以“in-place”的方法寫(xiě)入的,舊有的數(shù)據(jù)必須在系統(tǒng)后臺(tái)定期進(jìn)行清理,釋放出空間。再次,新的映射層會(huì)導(dǎo)致對(duì)上層應(yīng)用來(lái)說(shuō)邏輯連續(xù)的數(shù)據(jù)在磁盤(pán)上可能不再連續(xù),從而對(duì)數(shù)據(jù)的連續(xù)讀性能造成影響。實(shí)際上,以上兩種對(duì)寫(xiě)性能的優(yōu)化思路在系統(tǒng)層面和部件層面都廣泛存儲(chǔ)。除了廣為人知的存儲(chǔ)系統(tǒng)軟件、操作系統(tǒng)等層面使用寫(xiě)緩存技術(shù),在部件層面,比如RAID卡、HDD、SSD等,也都存在用于寫(xiě)優(yōu)化的緩存層。對(duì)于讀性能的優(yōu)化,主要的方法是根據(jù)應(yīng)用IO讀請(qǐng)求的特點(diǎn)對(duì)數(shù)據(jù)進(jìn)行預(yù)取,預(yù)取數(shù)據(jù)放在高速緩存(Cache)中,這樣,在下一個(gè)讀請(qǐng)求命中Cache時(shí),可以快速返回?cái)?shù)據(jù)。我們知道,在存儲(chǔ)系統(tǒng)中,讀Cache的容量比介質(zhì)容量要小若干個(gè)數(shù)量級(jí)。所以,此種方法的核心的如何對(duì)讀請(qǐng)求作出正確的預(yù)測(cè),使得后續(xù)讀請(qǐng)求數(shù)據(jù)可命中Cache。實(shí)際上,多相當(dāng)多的應(yīng)用來(lái)說(shuō),讀取數(shù)據(jù)時(shí)具備一定的空間局部性(temporallocality),也就是說(shuō),假設(shè)應(yīng)用目前在讀取第K塊數(shù)據(jù),那么接下來(lái)有很大的幾率讀取第K塊附件的數(shù)據(jù),所以我們可以將第K塊附件的數(shù)據(jù)(對(duì)于HDD來(lái)說(shuō),這些數(shù)據(jù)數(shù)據(jù)很可能也是物理連續(xù)的,可以充分發(fā)揮磁盤(pán)順序讀取的性能優(yōu)勢(shì))預(yù)讀到Cache中。當(dāng)然,如果對(duì)于真正完全隨機(jī)的數(shù)據(jù),預(yù)讀的方法是沒(méi)有用處的,反而會(huì)造成一定的系統(tǒng)負(fù)擔(dān)。真實(shí)世界中,完全隨機(jī)的讀取時(shí)很少的。目前人們?cè)谔剿骼肁I的算法對(duì)讀請(qǐng)求進(jìn)行模式識(shí)別,這會(huì)比簡(jiǎn)單地根據(jù)空間局部性預(yù)測(cè)命中率更高,一些公司在這方面已經(jīng)取得了很好的結(jié)果。同寫(xiě)緩存類(lèi)似,讀緩存也分為多個(gè)層次。分布式存儲(chǔ)中,一般存在一個(gè)由各存儲(chǔ)節(jié)點(diǎn)的高速介質(zhì)(易失或非易失性?xún)?nèi)存)組成的分布式全局緩存。全局緩存一般采用讀寫(xiě)緩存分離設(shè)計(jì)。這樣做的好處是一方面避免讀寫(xiě)緩存相互影響(寫(xiě)緩存刷盤(pán)、讀緩存淘汰數(shù)據(jù)),一方面可以對(duì)讀寫(xiě)緩存獨(dú)立實(shí)施實(shí)現(xiàn)靈活的策略(緩存空間占用大小、副本數(shù)、后端存取介質(zhì)等)。除此之外,為實(shí)現(xiàn)對(duì)后端存儲(chǔ)介質(zhì)友好(大塊連續(xù)數(shù)據(jù))的數(shù)據(jù)寫(xiě)入,還會(huì)在全局緩存層實(shí)現(xiàn)隨機(jī)小IO到大塊順序IO的IO聚合功能。如前文所述,此時(shí)需要記錄隨機(jī)小對(duì)象到聚合對(duì)象的映射關(guān)系,這個(gè)映射一般采用KV數(shù)據(jù)庫(kù)實(shí)現(xiàn)(一般基于LSM或B+樹(shù)實(shí)現(xiàn),典型如RockDB)。在存儲(chǔ)海量數(shù)據(jù)時(shí),KV數(shù)據(jù)庫(kù)的讀寫(xiě)效率會(huì)稱(chēng)為影響性能的關(guān)鍵因素。利用緩存(單層或多層)固然可以提升讀寫(xiě)性能,但需注意由此引入的讀寫(xiě)數(shù)據(jù)一致性的問(wèn)題。比如,在多層級(jí)的讀寫(xiě)緩存中,由于在寫(xiě)入過(guò)程中數(shù)據(jù)是自上而下(也是由高速到低速)逐層寫(xiě)入的,在讀取數(shù)據(jù)時(shí),為保證數(shù)據(jù)一致性,必須保證同一層級(jí)先寫(xiě)后讀(先從寫(xiě)緩存尋找數(shù)據(jù)再?gòu)淖x緩存尋找數(shù)據(jù)),不同層級(jí)自上而下的原則。對(duì)于由N個(gè)節(jié)點(diǎn)組成的分布式存儲(chǔ)系統(tǒng),主機(jī)應(yīng)用可能通過(guò)網(wǎng)絡(luò),連接N個(gè)節(jié)點(diǎn)中的部分或全部節(jié)點(diǎn),并行讀寫(xiě)存儲(chǔ)系統(tǒng)。所以,從理論上說(shuō),存儲(chǔ)系統(tǒng)作為一個(gè)整體的性能不超過(guò)各個(gè)節(jié)點(diǎn)性能之和。要使系統(tǒng)到達(dá)高性能,從數(shù)據(jù)布局(datalayout)的角度說(shuō),一方面要將數(shù)據(jù)充分打散存儲(chǔ),另一方面就是要將保證數(shù)據(jù)在存儲(chǔ)介質(zhì)上基本均衡。數(shù)據(jù)打散就是存儲(chǔ)系統(tǒng)把來(lái)自主機(jī)應(yīng)用的大塊數(shù)據(jù)切割成小塊,分散放置到不同節(jié)點(diǎn)的不同硬盤(pán)上,這就相當(dāng)于以并行的方式訪問(wèn)硬盤(pán),性能自然高。數(shù)據(jù)均衡則從概率的角度使得每塊硬盤(pán)具有近似的訪問(wèn)幾率,這樣就從整體上可以發(fā)揮所有硬盤(pán)的能力,從而達(dá)到性能最佳值。數(shù)據(jù)布局就是要把打散的定長(zhǎng)數(shù)據(jù)塊映射到系統(tǒng)中的某個(gè)硬盤(pán)上。映射的方法基本可以分成兩類(lèi)。一類(lèi)是顯示映射法,就是系統(tǒng)對(duì)于每個(gè)分塊數(shù)據(jù),根據(jù)硬盤(pán)的狀態(tài)(容量、使用率等)顯示地指定,并把這個(gè)映射關(guān)系記錄下來(lái)形成映射表。之后,讀寫(xiě)這塊數(shù)據(jù)都要查詢(xún)這個(gè)映射表。另一類(lèi)方法是采用廣義的HASH計(jì)算法,就是根據(jù)分塊數(shù)據(jù)的特性(命名空間、LUN或文件名、地址偏移信息等)利用HASH函數(shù)以偽隨機(jī)的方法映射到某個(gè)硬盤(pán)。這個(gè)映射關(guān)系不需要顯示記錄,因?yàn)镠ASH函數(shù)的計(jì)算極快,下次訪問(wèn)此數(shù)據(jù)塊只要再計(jì)算一下就可以找到對(duì)應(yīng)的硬盤(pán)。在分布式存儲(chǔ)中常用的DHT、CRUSH等方法均屬此類(lèi)。顯示映射法和廣義HASH法各有千秋。顯示映射法可以設(shè)置靈活的數(shù)據(jù)布局策略,在數(shù)據(jù)均衡、遷移、數(shù)據(jù)耐久性變更等方面易于實(shí)現(xiàn),但因?yàn)橐@示的記錄映射關(guān)系,不易處理海量數(shù)據(jù)。廣義HASH法因不需要存儲(chǔ)映射表,存儲(chǔ)的數(shù)據(jù)量理論上可以無(wú)窮大,但其在數(shù)據(jù)均衡性、數(shù)據(jù)布局策略靈活變更等方面不及顯示映射法。實(shí)際的分布式存儲(chǔ)系統(tǒng)往往兩種方法結(jié)合使用。十多年前,存儲(chǔ)系統(tǒng)的存儲(chǔ)介質(zhì)主要是HDD磁盤(pán)。因?yàn)镃PU、內(nèi)存和HDD性能的巨大差異,單顆CPU下可以?huà)鞌?shù)十塊甚至上百塊磁盤(pán)。隨著SSD技術(shù)的長(zhǎng)足進(jìn)步(性能、容量不斷增長(zhǎng),價(jià)格則不斷下降),SSD在存儲(chǔ)系統(tǒng)中被廣泛采用,全閃存儲(chǔ)設(shè)備高速增長(zhǎng)。SSD和CPU都是基于半導(dǎo)體技術(shù),性能差異已經(jīng)顯著縮小。目前商用的單塊NVMeSSD(PCIe4.0)的帶寬性能可達(dá)6~8GB/s,IOPS達(dá)數(shù)十萬(wàn)。這個(gè)性能是HDD的千百倍。對(duì)于存儲(chǔ)系統(tǒng)來(lái)說(shuō),除了基本的讀寫(xiě)之外,還需要提供EC/RAID計(jì)算、快照/克隆、數(shù)據(jù)重刪、壓縮、加密等增值功能,這些功能疊加在一起,對(duì)CPU的性能的要求急劇提升。這對(duì)以通用計(jì)算為目的設(shè)計(jì)的CPU來(lái)說(shuō)就顯得有些心有余而力不足。此時(shí),就需要一些專(zhuān)用處理器做協(xié)議卸載,這些專(zhuān)用硬件如智能網(wǎng)卡、計(jì)算存儲(chǔ)設(shè)備(ComputationalStorageDevice)、DPU(DataProcessingUnit)等。DPU專(zhuān)為數(shù)據(jù)處理而設(shè)計(jì),存儲(chǔ)系統(tǒng)可以利用CPU+DPU的組合方案,把存儲(chǔ)IO處理、糾刪碼計(jì)算、數(shù)據(jù)重刪、數(shù)據(jù)壓縮、加密等功能卸載到DPU上,CPU只集中于系統(tǒng)控制面的功能。一些更加激進(jìn)的公司甚至在存儲(chǔ)系統(tǒng)中用DPU完全取代了CPU。從整個(gè)存儲(chǔ)行業(yè)來(lái)看,DPU的應(yīng)用還處于起步階段,后續(xù)隨著DPU本身的不斷發(fā)展,它會(huì)在存儲(chǔ)系統(tǒng)中發(fā)揮越來(lái)越重要的作用。存儲(chǔ)系統(tǒng)的性能發(fā)揮不僅依賴(lài)于其本身,還與存儲(chǔ)訪問(wèn)協(xié)議和網(wǎng)絡(luò)相關(guān)。常用的存儲(chǔ)網(wǎng)絡(luò)包括FC、EHT/IP、IB等。其中FC網(wǎng)絡(luò)專(zhuān)為存儲(chǔ)設(shè)計(jì),在網(wǎng)絡(luò)穩(wěn)定性、可用性、時(shí)延等方面具有優(yōu)勢(shì),但其速率不如ETH和IB,成本也高;IB網(wǎng)絡(luò)主要應(yīng)用在超算領(lǐng)域,可為應(yīng)用提供超高帶寬,但其成本高,供應(yīng)商少;ETH/IP是數(shù)據(jù)中心最為廣泛采用的網(wǎng)絡(luò)技術(shù),帶寬高,成本低,但其在擁塞避免、擁塞控制、時(shí)延、易用性等方便不如FC。近幾年,EHT借鑒IB網(wǎng)絡(luò)的RDMA方法,將RDMA承載在無(wú)損以太網(wǎng)上,發(fā)展了RoCE(RDMAoverConvergedEthernet)方法。為了更好地和存儲(chǔ)結(jié)合,一些廠商還在RoCE的基礎(chǔ)上進(jìn)行了增強(qiáng),使其可用性(快速故障倒換)、易用性和丟包率等指標(biāo)接近FC。在訪問(wèn)協(xié)議上,傳統(tǒng)存儲(chǔ)主要以SCSI協(xié)議訪問(wèn)磁盤(pán)。SCSI協(xié)議不能發(fā)揮SSD介質(zhì)的高性能,NVMe協(xié)議以及NVMe-oF協(xié)議應(yīng)運(yùn)而生。NVMe協(xié)議面向SSD介質(zhì)設(shè)備,在并發(fā)能力(隊(duì)列數(shù)量、隊(duì)列深度)和傳輸能力上均好于SCSI。NVMe-oF協(xié)議兼容性好,可以使NVMe運(yùn)行在多種網(wǎng)絡(luò)上。在實(shí)際部署中,將NVMe承載在FC上、RoCE上、以及TCP上是目前常用的方法。五、數(shù)據(jù)存儲(chǔ)效率隨著數(shù)據(jù)量的高速增長(zhǎng),所需存儲(chǔ)設(shè)備的空間越來(lái)越大。如何在固定的存儲(chǔ)物理空間上存儲(chǔ)更多的數(shù)據(jù),就是數(shù)據(jù)存儲(chǔ)效率問(wèn)題。需要說(shuō)明的是,高效的數(shù)據(jù)存儲(chǔ)不能損害數(shù)據(jù)可靠性。常見(jiàn)的提升數(shù)據(jù)存儲(chǔ)效率的方法包括精簡(jiǎn)配置、RAID/EC(Erasurecoding)、重刪、壓縮等技術(shù)。下面對(duì)分布式存儲(chǔ)中常用的糾刪碼(EC)、重刪、壓縮等技術(shù)做一簡(jiǎn)要說(shuō)明。糾刪碼存儲(chǔ)系統(tǒng)為了提高數(shù)據(jù)的容錯(cuò)能力,一般會(huì)采用多副本或者糾刪碼技術(shù)。糾刪碼比多副本有更高的存儲(chǔ)效率,更加適合海量數(shù)據(jù)存儲(chǔ)。糾刪碼在數(shù)學(xué)上主要利用了伽羅華域(GaloisField),使得其運(yùn)算保持封閉性。糾刪碼是指將要存儲(chǔ)的數(shù)據(jù)分割成小的數(shù)據(jù)塊,通過(guò)算法將數(shù)據(jù)塊進(jìn)行編碼生成校驗(yàn)數(shù)據(jù)塊,然后把這些數(shù)據(jù)塊(包括原始數(shù)據(jù)塊和校驗(yàn)數(shù)據(jù)塊)存儲(chǔ)在不同的存儲(chǔ)位置。相對(duì)單純的副本方式,使用糾刪碼在同樣的硬盤(pán)或節(jié)點(diǎn)配置下可以為用戶(hù)提供更多的有效存儲(chǔ)空間,盤(pán)的利用率更高。糾刪碼配置比例一般用(k,m)標(biāo)識(shí)。k表示原始數(shù)據(jù)塊數(shù)量,m是校驗(yàn)數(shù)據(jù)塊數(shù)量??倲?shù)據(jù)塊n=原始數(shù)據(jù)塊k+校驗(yàn)塊m。糾刪碼存儲(chǔ)空間利用率為k/n,例如系統(tǒng)6塊硬盤(pán),糾刪碼配置為(4,2)可以表示6個(gè)硬盤(pán),4個(gè)存儲(chǔ)數(shù)據(jù),2個(gè)存儲(chǔ)校驗(yàn)數(shù)據(jù),存儲(chǔ)空間利用率為4/6=66.7%;對(duì)應(yīng)三副本存儲(chǔ),數(shù)據(jù)需要放置3份,存儲(chǔ)空間利用率為33.3%;存儲(chǔ)空間利用率率糾刪碼比副本多一倍。如果采用大比例糾刪碼,利用率可以進(jìn)一步提升,甚至到90%以上!和副本技術(shù)相比,糾刪碼的編碼(存儲(chǔ))和解碼(數(shù)據(jù)恢復(fù))需要更多的CPU處理能力,同時(shí),由于較多的分片(尤其是大比例糾刪碼)會(huì)產(chǎn)生較大的尾時(shí)延。分布式存儲(chǔ)實(shí)際應(yīng)用中,經(jīng)常把副本和糾刪碼結(jié)合使用:為減少時(shí)延,數(shù)據(jù)首先以副本的方式存在緩存層,立即向應(yīng)用返回IO成功,之后,再以異步的方式通過(guò)糾刪碼存儲(chǔ)在后端介質(zhì)上。壓縮數(shù)據(jù)壓縮是指在不丟失有用信息的前提下,縮減數(shù)據(jù)量以減少存儲(chǔ)空間,提高其傳輸、存儲(chǔ)和處理效率,或按照一定的算法對(duì)數(shù)據(jù)進(jìn)行重新組織,減少數(shù)據(jù)的冗余和存儲(chǔ)的空間的一種技術(shù)方法。數(shù)據(jù)壓縮能夠?qū)崿F(xiàn)是因?yàn)槎鄶?shù)現(xiàn)實(shí)世界的數(shù)據(jù)都有冗余,數(shù)據(jù)壓縮的過(guò)程是去除多余的冗余數(shù)據(jù)。壓縮的本質(zhì)是對(duì)信息進(jìn)行再編碼,即使用另一種更簡(jiǎn)潔的方式重新表達(dá)。數(shù)據(jù)壓縮技術(shù)可以分為兩大類(lèi),一類(lèi)是有損壓縮,一類(lèi)是無(wú)損壓縮。存儲(chǔ)系統(tǒng)中一般使用無(wú)損壓縮。無(wú)損壓縮是指使用一定的算法對(duì)數(shù)據(jù)進(jìn)行壓縮,用壓縮后的數(shù)據(jù)進(jìn)行重構(gòu),可以恢復(fù)原始的數(shù)據(jù)信息,壓縮前后信息不受損失。無(wú)損壓縮廣泛應(yīng)用于文本數(shù)據(jù)、程序和特殊應(yīng)用場(chǎng)合的圖像數(shù)據(jù)等需要精確存儲(chǔ)數(shù)據(jù)的壓縮。在存儲(chǔ)領(lǐng)域,除了通用壓縮算法,還在研究基于特定場(chǎng)景和數(shù)據(jù)類(lèi)型的專(zhuān)用算法,以期進(jìn)一步提升數(shù)據(jù)存儲(chǔ)效率。重刪重復(fù)數(shù)據(jù)刪除技術(shù)(簡(jiǎn)稱(chēng)“重刪”)也是一種重要的數(shù)據(jù)縮減技術(shù),通過(guò)對(duì)新數(shù)據(jù)與已存儲(chǔ)數(shù)據(jù)進(jìn)行對(duì)比分析,避免將已經(jīng)存儲(chǔ)在設(shè)備中的數(shù)據(jù)再一次存儲(chǔ),通過(guò)建立“索引”來(lái)將多份數(shù)據(jù)指向設(shè)備中已存在的數(shù)據(jù),這樣可以有效的節(jié)省存儲(chǔ)空間。重復(fù)數(shù)據(jù)刪除可優(yōu)化冗余,而不會(huì)損壞數(shù)據(jù)保真度或完整性。重刪本質(zhì)上是一種壓縮技術(shù)。重刪的基本流程如下圖所示。重復(fù)數(shù)據(jù)刪除按數(shù)據(jù)處理時(shí)間可以分類(lèi)為在線(xiàn)重刪和后重刪。在線(xiàn)重刪是在數(shù)據(jù)存儲(chǔ)到存儲(chǔ)設(shè)備上的同時(shí)進(jìn)行重復(fù)數(shù)據(jù)刪除操作,在數(shù)據(jù)存儲(chǔ)到硬盤(pán)之前,重復(fù)數(shù)據(jù)已經(jīng)被去除掉了。后重刪是在寫(xiě)到存儲(chǔ)設(shè)備的同時(shí)不進(jìn)行重刪處理,先把原始數(shù)據(jù)寫(xiě)到盤(pán)上,隨后啟動(dòng)后臺(tái)進(jìn)程對(duì)這些原始數(shù)據(jù)進(jìn)行重刪處理。與在線(xiàn)重刪相比較,后重刪需要更高的硬盤(pán)性能。對(duì)分布式存儲(chǔ)來(lái)說(shuō),存儲(chǔ)海量數(shù)據(jù)一個(gè)關(guān)鍵技術(shù)是如何處理較大的指紋表。從數(shù)據(jù)重刪步驟可以看出,在數(shù)據(jù)塊長(zhǎng)度固定的前提下,指紋庫(kù)的大小和數(shù)據(jù)量成正比。舉例來(lái)說(shuō):假定一個(gè)存儲(chǔ)服務(wù)器包含24塊硬盤(pán),每塊硬盤(pán)容量4TB。數(shù)據(jù)塊采用定長(zhǎng)方式,每塊8KB。指紋生成采用SHA1算法,即每個(gè)指紋20Byte。在此情況下,計(jì)算可得,若存儲(chǔ)服務(wù)器寫(xiě)滿(mǎn)數(shù)據(jù),指紋所需的內(nèi)存空間為240GB!這還僅僅是一個(gè)存儲(chǔ)服務(wù)器的指紋容量。所以,在實(shí)際應(yīng)用重刪技術(shù)時(shí),一般采用犧牲一部分?jǐn)?shù)據(jù)存儲(chǔ)效率,在內(nèi)存中只存儲(chǔ)“熱指紋”的方法;另外,為了保證全局重刪的效果,需要保證指紋庫(kù)的分布式布局。六、安全性任何IT系統(tǒng)都面臨著安全威脅,既有傳統(tǒng)安全威脅也有新興的安全威脅。對(duì)于存儲(chǔ)系統(tǒng),除了網(wǎng)絡(luò)安全威脅,如IP攻擊、軟件漏洞、病毒
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 低碳環(huán)保建議書(shū)倡導(dǎo)書(shū)
- 二十四孝讀后感
- 個(gè)人實(shí)習(xí)總結(jié)15篇
- 下半年個(gè)人工作總結(jié)15篇
- 個(gè)人違反廉潔紀(jì)律檢討書(shū)(6篇)
- 課件轉(zhuǎn)盤(pán)游戲教學(xué)課件
- 2023年藥品流通行業(yè)運(yùn)行統(tǒng)計(jì)分析報(bào)告
- 清華園學(xué)校八年級(jí)上學(xué)期第一次月考語(yǔ)文試題(A4版、B4版含答案)
- 九年級(jí)上學(xué)期語(yǔ)文期中考試試卷
- 南京航空航天大學(xué)《電磁無(wú)損檢測(cè)新技術(shù)》2021-2022學(xué)年期末試卷
- 人教精通版(2024)三年級(jí)上冊(cè)英語(yǔ)全冊(cè)教學(xué)設(shè)計(jì)
- 三高共管六病同防醫(yī)防融合管理制度
- 人教新課標(biāo)一年級(jí)數(shù)學(xué)上冊(cè) 5.5 《加減混合》說(shuō)課稿
- NBT 31021-2012風(fēng)力發(fā)電企業(yè)科技文件規(guī)檔規(guī)范
- 《爬天都峰》教學(xué)課件(第二課時(shí))
- 道路貨物運(yùn)輸企業(yè)安全風(fēng)險(xiǎn)分級(jí)管控工作方案
- 2024-2030年中國(guó)循環(huán)泵市場(chǎng)運(yùn)營(yíng)態(tài)勢(shì)分析及投資前景預(yù)測(cè)報(bào)告
- 自投戶(hù)用光伏合同
- 2024年共青團(tuán)入團(tuán)積極分子結(jié)業(yè)考試題庫(kù)及答案
- 湖北省武漢市部分學(xué)校2022-2023學(xué)年高一上學(xué)期期中調(diào)研考試物理試題(含解析)
- FX5U PLC應(yīng)用技術(shù)項(xiàng)目教程 課件 項(xiàng)目四 FX5UPLC模擬量控制與通信的編程及應(yīng)用
評(píng)論
0/150
提交評(píng)論