架構(gòu)師之路 - 存儲(chǔ)架構(gòu)

架構(gòu)師在做架構(gòu)設(shè)計(jì)時(shí)一定繞不開(kāi)存儲(chǔ)的設(shè)計(jì),本文我們一起來(lái)了解一下存儲(chǔ)的相關(guān)知識(shí)。主要內(nèi)容包括存儲(chǔ)使用方式、常見(jiàn)協(xié)議、鏈接方式以及分布式存儲(chǔ)架構(gòu)中的典型架構(gòu)案例。
存儲(chǔ)分類(lèi)
存儲(chǔ)架構(gòu)
從架構(gòu)角度分類(lèi)存儲(chǔ)一般可以分為:集中式存儲(chǔ)和分布式存儲(chǔ)。
「集中式存儲(chǔ)」的主要特點(diǎn)是能把所有數(shù)據(jù)保存在一個(gè)地方,各地辦公室的遠(yuǎn)程終端通過(guò)電纜同中央計(jì)算機(jī)(主機(jī))相聯(lián),保證了每個(gè)終端使用的都是同一信息。
集中式存儲(chǔ)一般是商業(yè)的且比較昂貴。
「分布式存儲(chǔ)」,是將數(shù)據(jù)分散存儲(chǔ)在多臺(tái)獨(dú)立的設(shè)備上,采用可擴(kuò)展的系統(tǒng)結(jié)構(gòu),利用多臺(tái)存儲(chǔ)服務(wù)器分擔(dān)存儲(chǔ)負(fù)荷,利用位置服務(wù)器定位存儲(chǔ)信息,它不但提高了系統(tǒng)的可靠性、可用性和存取效率,還易于擴(kuò)展。
分布式存儲(chǔ)一般結(jié)合管理軟件自建。
存儲(chǔ)使用方式
從使用者的角度對(duì)存儲(chǔ)進(jìn)行分類(lèi)可以分為三類(lèi):塊存儲(chǔ),文件存儲(chǔ),對(duì)象存儲(chǔ)。

「塊存儲(chǔ):」 一般體現(xiàn)形式是卷或者硬盤(pán),主要操作對(duì)象是磁盤(pán),將裸磁盤(pán)空間整個(gè)映射給主機(jī)使用。在此種方式下操作系統(tǒng)需要對(duì)掛載的裸硬盤(pán)進(jìn)行分區(qū)、格式化后,才能使用。塊存儲(chǔ)無(wú)法進(jìn)行文件共享。
「文件存儲(chǔ):」 一般體現(xiàn)形式是目錄和文件,數(shù)據(jù)以文件的方式存儲(chǔ)和訪(fǎng)問(wèn),按照目錄結(jié)構(gòu)進(jìn)行組織。此種方式也需要掛載,掛載后為一個(gè)目錄,可直接存取其中的文件;不需要格式化。
「對(duì)象存儲(chǔ):」 主要操作對(duì)象是對(duì)象Object,本質(zhì)上是鍵值對(duì)存儲(chǔ)系統(tǒng),不需要掛載,直接通過(guò)應(yīng)用接口訪(fǎng)問(wèn)。
存儲(chǔ)協(xié)議
從協(xié)議角度分類(lèi)存儲(chǔ)可以分為NFS、CIFS、ISCSI協(xié)議。
「NFS (Network File System,網(wǎng)絡(luò)文件系統(tǒng))」 是當(dāng)前主流異構(gòu)平臺(tái)共享文件系統(tǒng)之一,主要應(yīng)用于Unix環(huán)境下。通過(guò)使用NFS,用戶(hù)和程序可以象訪(fǎng)問(wèn)本地文件一樣訪(fǎng)問(wèn)遠(yuǎn)端系統(tǒng)上的文件,使得每個(gè)計(jì)算機(jī)的節(jié)點(diǎn)能夠像使用本地資源一樣方便地使用網(wǎng)上資源。換言之,NFS 可用于不同類(lèi)型計(jì)算機(jī)、操作系統(tǒng)、網(wǎng)絡(luò)架構(gòu)和傳輸協(xié)議運(yùn)行環(huán)境中的網(wǎng)絡(luò)文件遠(yuǎn)程訪(fǎng)問(wèn)和共享。「針對(duì)共享文件存儲(chǔ)?!?/strong>
「CIFS(Common Internet File System,公共互聯(lián)網(wǎng)文件系統(tǒng))」 主要應(yīng)用在NT/Windows環(huán)境下,其工作原理是讓CIFS協(xié)議運(yùn)行于TCP/IP通信協(xié)議之上,讓Unix計(jì)算機(jī)可以在網(wǎng)絡(luò)鄰居上被Windows計(jì)算機(jī)看到。「針對(duì)共享文件存儲(chǔ)?!?/strong>
「ISCSI (Internet SCSI/SCSI over IP)」 :主要應(yīng)用在Windows環(huán)境下,適用于TCP/IP通訊協(xié)議,是通過(guò)TCP/IP網(wǎng)絡(luò)傳輸文件時(shí)的文件組織格式和數(shù)據(jù)傳輸方式。「針對(duì)數(shù)據(jù)塊存儲(chǔ)?!?/strong>
存儲(chǔ)鏈接方式
從存儲(chǔ)鏈接角度分類(lèi)存儲(chǔ)可以分為DAS、NAS、SAN三類(lèi)。
「DAS(Direct Attached Storage):」
直接附加存儲(chǔ)方式與我們普通的PC存儲(chǔ)架構(gòu)一樣,外部存儲(chǔ)設(shè)備都是直接掛接在服務(wù)器內(nèi)部總線(xiàn)上,數(shù)據(jù)存儲(chǔ)設(shè)備是整個(gè)服務(wù)器結(jié)構(gòu)的一部分,任何客戶(hù)端想要訪(fǎng)問(wèn)存儲(chǔ)設(shè)備上的資源就必須要通過(guò)服務(wù)器。

「NAS(Network Attached Storage):」
在NAS存儲(chǔ)結(jié)構(gòu)中,存儲(chǔ)系統(tǒng)不再通過(guò)I/O總線(xiàn)附屬于某個(gè)特定的服務(wù)期或客戶(hù)機(jī),而是直接通過(guò)網(wǎng)絡(luò)接口直接與網(wǎng)絡(luò)相連,用戶(hù)通過(guò)網(wǎng)絡(luò)訪(fǎng)問(wèn)。NAS實(shí)際上是帶有一個(gè)“瘦服務(wù)器”的存儲(chǔ)設(shè)備,作用類(lèi)似于一個(gè)專(zhuān)用的文件服務(wù)器,而不是傳統(tǒng)通用服務(wù)器,去掉了大多數(shù)功能,僅僅提供文件系統(tǒng)功能,用于存儲(chǔ)服務(wù)。

「SAN(Storage Area Network):」
SAN是一種以網(wǎng)絡(luò)為中心的存儲(chǔ)結(jié)構(gòu),不同于普通以太網(wǎng),SAN是位于服務(wù)器的后端,為連接服務(wù)器、磁盤(pán)陣列、帶庫(kù)等存儲(chǔ)設(shè)備而建立的高性能「專(zhuān)用網(wǎng)絡(luò)(光纖通道)」。

主流存儲(chǔ)廠(chǎng)商及產(chǎn)品
商業(yè)存儲(chǔ)廠(chǎng)商有:EMC、NetApp、DELL、Huawei、曙光等
開(kāi)源的存儲(chǔ)產(chǎn)品有:
FastDFS(對(duì)象) Swift(對(duì)象) HDFS(對(duì)象) Lustre(塊) GlusterFS(文件) Ceph(塊、文件、對(duì)象)
分布式存儲(chǔ)架構(gòu)
集中式存儲(chǔ)一般使用商業(yè)軟件且由廠(chǎng)家負(fù)責(zé)安裝配置,我們這里主要講一下分布式存儲(chǔ)架構(gòu)。
按照元數(shù)據(jù)的管理方式,存儲(chǔ)架構(gòu)可分為對(duì)稱(chēng)式和非對(duì)稱(chēng)式兩種架構(gòu)模式。
在對(duì)稱(chēng)式架構(gòu)中每個(gè)節(jié)點(diǎn)的角色均等,共同管理和維護(hù)元數(shù)據(jù),節(jié)點(diǎn)間通過(guò)高速網(wǎng)絡(luò)進(jìn)行信息同步和互斥鎖等操作。(每臺(tái)節(jié)點(diǎn)安裝的組件一樣)
而非對(duì)稱(chēng)式集群文件系統(tǒng)中,有專(zhuān)門(mén)的一個(gè)或者多個(gè)節(jié)點(diǎn)負(fù)責(zé)管理元數(shù)據(jù),其他節(jié)點(diǎn)需要頻繁與元數(shù)據(jù)節(jié)點(diǎn)通信以獲取最新的元數(shù)據(jù)比如目錄列表、文件屬性等等。(元數(shù)據(jù)節(jié)點(diǎn)與存儲(chǔ)節(jié)點(diǎn)分離)
接下來(lái)我們看看兩種不同架構(gòu)模式下的代表產(chǎn)品:FastDFS 和 swift。
FastDFS典型架構(gòu)

FastDFS采用的是非對(duì)稱(chēng)架構(gòu),分為T(mén)racker server和Storage server。
Tracker server作為中心結(jié)點(diǎn),管理集群拓?fù)浣Y(jié)構(gòu),其主要作用是負(fù)載均衡和調(diào)度。
Storage server 以卷為單位組織,一個(gè)卷內(nèi)包含多臺(tái)storage機(jī)器,每個(gè)卷中的服務(wù)器是鏡像關(guān)系,數(shù)據(jù)互為備份,存儲(chǔ)空間以卷內(nèi)容量最小的storage為準(zhǔn),所以建議group內(nèi)的多個(gè)storage盡量配置相同,以免造成存儲(chǔ)空間的浪費(fèi)。
Swift典型架構(gòu)

Swift采用的是完全對(duì)稱(chēng)、面向資源的分布式系統(tǒng)架構(gòu)設(shè)計(jì),所有組件都可擴(kuò)展。
Swift將整個(gè)存儲(chǔ)分為三個(gè)層次:Account、Container 和 Object。
小結(jié)
本文給大家介紹了存儲(chǔ)的相關(guān)知識(shí),存儲(chǔ)這一塊的內(nèi)容比較枯燥大家了解即可,重點(diǎn)需要關(guān)注分布式存儲(chǔ)架構(gòu)。
