種分布式文件系統(tǒng)_第1頁
種分布式文件系統(tǒng)_第2頁
種分布式文件系統(tǒng)_第3頁
種分布式文件系統(tǒng)_第4頁
種分布式文件系統(tǒng)_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第一局部CEPH1.1 特點(diǎn)Ceph最大的特點(diǎn)是分布式的元數(shù)據(jù)效勞器通過CRUSH,一種擬算法來分配文件的locaiton,其核心是 RADOSresilient automatic distributed object storage),一個(gè)對象集群存儲(chǔ),本身提供對象的高可用,錯(cuò)誤檢測和修復(fù)功能。1.2 組成CEPH文件系統(tǒng)有三個(gè)主要模塊:a) Client:每個(gè)Client實(shí)例向主機(jī)或進(jìn)程提供一組類似于POSIX的接口。b) OSD簇:用于存儲(chǔ)所有的數(shù)據(jù)和元數(shù)據(jù)。c) 元數(shù)據(jù)效勞簇:協(xié)調(diào)平安性、一致性與耦合性時(shí),管理命名空間文件名和目錄名1.3 架構(gòu)原理Client:用戶I/O:輸入/輸出

2、MDS:Metadata Cluster Server元數(shù)據(jù)簇效勞器OSD:Object Storage Device對象存儲(chǔ)設(shè)備Client通過與OSD的直接通訊實(shí)現(xiàn)I/O操作。這一過程有兩種操作方式:1.直接通過Client實(shí)例連接到Client;2.通過一個(gè)文件系統(tǒng)連接到Client。當(dāng)一個(gè)進(jìn)行翻開一個(gè)文件時(shí),Client向MDS簇發(fā)送一個(gè)請求。MDS通過文件系統(tǒng)層級(jí)結(jié)構(gòu)把文件名翻譯成文件節(jié)點(diǎn)inode,并獲得節(jié)點(diǎn)號(hào)、模式mode、大小與其他文件元數(shù)據(jù)。注意文件節(jié)點(diǎn)號(hào)與文件意義對應(yīng)。如果文件存在并可以獲得操作權(quán),那么MDS通過結(jié)構(gòu)體返回節(jié)點(diǎn)號(hào)、文件長度與其他文件信息。MDS同時(shí)賦予Cli

3、ent操作權(quán)如果該Client還沒有的話。目前操作權(quán)有四種,分別通過一個(gè)bit表示:讀read、緩沖讀cache read、寫write、緩沖寫buffer write。在未來,操作權(quán)會(huì)增加平安關(guān)鍵字,用于client向OSD證明它們可以對數(shù)據(jù)進(jìn)行讀寫目前的策略是全部client都允許。之后,包含在文件I/O中的MDS被用于限制管理能力,以保證文件的一致性與語義的合理性。CEPH產(chǎn)生一組條目來進(jìn)行文件數(shù)據(jù)到一系列對象的映射。為了防止任何為文件分配元數(shù)據(jù)的需要。對象名簡單的把文件節(jié)點(diǎn)需要與條目號(hào)對應(yīng)起來。對象復(fù)制品通過CRUSH著名的映射函數(shù)分配給OSD。例如,如果一個(gè)或多個(gè)Client翻開同一

4、個(gè)文件進(jìn)行讀操作,一個(gè)MDS會(huì)賦予他們讀與緩存文件內(nèi)容的能力。通過文件節(jié)點(diǎn)號(hào)、層級(jí)與文件大小,Client可以命名或分配所有包含該文件數(shù)據(jù)的對象,并直接從OSD簇中讀取。任何不存在的對象或字節(jié)序列被定義為文件洞或0。同樣的,如果Client翻開文件進(jìn)行寫操作。它獲得使用緩沖寫的能力。任何位置上的數(shù)據(jù)都被寫到適宜的OSD上的適宜的對象中。Client關(guān)閉文件時(shí),會(huì)自動(dòng)放棄這種能力,并向MDS提供新的文件大小寫入時(shí)的最大偏移。它重新定義了那些存在的并包含文件數(shù)據(jù)的對象的集合。CEPH的設(shè)計(jì)思想有一些創(chuàng)新點(diǎn)主要有以下兩個(gè)方面:第一,數(shù)據(jù)的定位是通過CRUSH算法來實(shí)現(xiàn)的。傳統(tǒng)的,或者通常的并行文件系

5、統(tǒng),數(shù)據(jù)的定位的信息是保存在文件的metadata 中的, 也就是inode結(jié)構(gòu)中,通過到metadata server上去獲取數(shù)據(jù)分布的信息。而在Ceph中,是通過CRUSH 這個(gè)算法來提供數(shù)據(jù)定位的。第二,元數(shù)據(jù)效勞器可以提供集群metadata server 效勞。只要當(dāng)我們了解了其結(jié)構(gòu)后,感覺并沒有太大的特點(diǎn)。元數(shù)據(jù)效勞器一般就用來存儲(chǔ)文件和目錄的信息,提供統(tǒng)一的命名效勞。 在Ceph中,元數(shù)據(jù)的inode , dentry,以及日志都是在對象存儲(chǔ)集群RADOS中存儲(chǔ),這就使得 metadata的 持久化都是在遠(yuǎn)程的RADOS中完成,metadata server 不保存狀態(tài),只是緩存

6、最近的inode 和 dentry項(xiàng),當(dāng)metadata server 失效后,其所所有信息都可以從RADOS中獲取,可以比擬容易恢復(fù)。CEPH最核心的,就是RADOS就是RADOSresilient automatic distributed object storage). 其resilient 指的是可以輕松擴(kuò)展,automatic 指的是其對象存儲(chǔ)集群可以處理failover, failure recovery。RADOS 對象集群其對外提供了一個(gè)高可用的,可擴(kuò)展的,對象集群,從客戶端的角度看,就是一個(gè)統(tǒng)一命名空間的對象存儲(chǔ)。1.4 使用方式(一) Ceph 的Monitor用來監(jiān)控集

7、群中所有節(jié)點(diǎn)的狀態(tài)信息,完成類似配置效勞的功能。在Ceph里,配置主要就是cluster map ,其保存集群所有節(jié)點(diǎn)信息,并和所有的節(jié)點(diǎn)保持心跳,來監(jiān)控所有的節(jié)點(diǎn)狀態(tài)。其通過Paxos算法實(shí)現(xiàn)實(shí)現(xiàn)自身的高可用,也就是說,這個(gè)Ceph Monitor是不會(huì)有單點(diǎn)問題的。目前流行的zookeeper 的功能,以及實(shí)現(xiàn)都類似。(二) 對象存儲(chǔ)Ceph文件系統(tǒng)中的數(shù)據(jù)和元數(shù)據(jù)都保存在對象中。 對于對象存儲(chǔ),通常的定義是:一個(gè)Object,由三局部組成id,metadata,data,id是對象的標(biāo)識(shí),這個(gè)不必多說。所謂的metadata,就是key/value的鍵值存儲(chǔ),至于用來保存什么信息,由文件

8、系統(tǒng)的語義定義。data就是實(shí)際存儲(chǔ)的數(shù)據(jù)。Ceph的對象,包括四個(gè)局部id,metadata,attribute,data,在Ceph里,一個(gè)Object,實(shí)際就對應(yīng)本地文件系統(tǒng)的一個(gè)文件,一個(gè)對象的attribute,也是key/value的鍵值對,其保存在本地文件系統(tǒng)的文件的擴(kuò)展屬性中。對象的metadata就是key/value的鍵值對,目前Ceph保存在google開源的一個(gè)key/value存儲(chǔ)系統(tǒng)leveldb中,或者自己寫的一個(gè)key/value 存儲(chǔ)系統(tǒng)中。數(shù)據(jù)就保存在對象的文件中。對于一個(gè)對象的更新,都需要寫日志中來保持一個(gè)Object數(shù)據(jù)的一致性consistence,日

9、志有一個(gè)單獨(dú)的設(shè)備或者文件來保存。(三) 副本存儲(chǔ)一個(gè)PGplacement group由一個(gè)OSD列表組成,OSD的個(gè)數(shù),就是對象的副本數(shù),一個(gè)三副本的PG就是一個(gè)主,兩個(gè)副本的OSD列表組成。一個(gè)PG和OSD列表的映射關(guān)系,是通過CRUSH算法計(jì)算的,知道PG的id,和當(dāng)前的cluster map,就可以通過CRUSH算法,計(jì)算出OSD列表。特別強(qiáng)調(diào)的是,一個(gè)PG是邏輯層概念,也就是說,一個(gè)OSD,可能同時(shí)是一個(gè)或者多個(gè)PG的主,同時(shí)是另一個(gè)PG的從。一個(gè)OSD處于多個(gè)PG組中。一個(gè)PG就是復(fù)制和修復(fù)的根本單位。每個(gè)OSD本地保存其所在的PG列表就可以了,其它OSD可以通過輸入當(dāng)前的該OS

10、D保存的cluster map 和 PG 的id ,通過CRUSH計(jì)算得出。(四) Ceph的容錯(cuò)處理對于Ceph文件系統(tǒng),錯(cuò)誤分兩類:一類是磁盤錯(cuò)誤或者數(shù)據(jù)損壞 disk error or corruptted data, 這類錯(cuò)誤OSD會(huì)自己報(bào)告和處理。self report ; 第二類是OSD失去網(wǎng)絡(luò)連接導(dǎo)致該OSD不可達(dá)unreachable on the network這種情況下需要主動(dòng)檢測active monitor,在同一個(gè)PG組中的其它OSD會(huì)發(fā)心跳信息互相檢測。 這種檢測的一個(gè)優(yōu)化的方法就是,當(dāng)replication復(fù)制操作時(shí),就可以順帶檢測,不用發(fā)單獨(dú)的消息來檢測,只有一段

11、時(shí)間沒有replication 操作時(shí),才發(fā)ping消息里檢測。OSD的失效狀態(tài)有兩種:一種是down狀態(tài),這種狀態(tài)下,被認(rèn)為是臨時(shí)錯(cuò)誤。 在這種情況下,如果是primay,其任務(wù)由下一個(gè)replicate接手。如果該OSD沒有迅速恢復(fù)quickly recovery,那么就被標(biāo)記為out狀態(tài),在這種狀態(tài)下,將有新的osd參加這個(gè)PG中。如何標(biāo)記一個(gè)OSD 從down狀態(tài) 標(biāo)記為out狀態(tài)?由于網(wǎng)絡(luò)分區(qū)的問題,需要通過 Ceph Monitor 來裁定。(五) Ceph 的寫流程客戶端先寫主副本,然后同步到兩個(gè)從副本。主副本等待從副本的ack消息和apply消息。當(dāng)主副本收到ack消息,說明寫

12、操作已經(jīng)寫在內(nèi)存中完成,收到apply 消息,說明已經(jīng)apply到磁盤上了。如果在寫的過程中,主副本失效,按順序下一個(gè)從副本接管主副本的工作,這個(gè)時(shí)候是否返回給客戶端寫正確?在這種情況下,客戶端只是判斷正常工作的acting的 OSD的返回結(jié)果,只要所有正常工作的OSD返回即認(rèn)為成功,雖然這時(shí)候可能只有兩副本成功。同時(shí)該臨時(shí)primay必須保存所有操作的recovey隊(duì)列里,如果原primay恢復(fù),可以replay所有recovery隊(duì)列里的操作,如果主副本從down到out狀態(tài),也即是永久失效,臨時(shí)primay轉(zhuǎn)正,由臨時(shí)primay為正式primay,只是需要參加一個(gè)新的OSD到該P(yáng)G中。

13、如果是從副本失效,就比擬簡單。臨時(shí)失效,主replay所有寫操作,如過永久失效,新參加一個(gè)OSD到PG中就可以了。(六) 恢復(fù)當(dāng)有OSD失效,恢復(fù)或者增加一個(gè)新的OSD時(shí),導(dǎo)致OSD cluster map的變換。Ceph處理以上三種情況的策略是一致的。為了恢復(fù),ceph保存了兩類數(shù)據(jù),一個(gè)是每個(gè)OSD的一個(gè)version,另一個(gè)是PG修改的log,這個(gè)log包括PG修改的object 的名稱和version。當(dāng)一個(gè)OSD接收到cluster map的更新時(shí):1檢查該OSD的所屬的PG,對每個(gè)PG,通過CRUSH算法,計(jì)算出主副本的三個(gè)OSD2如何該P(yáng)G里的OSD發(fā)生了改變,這時(shí)候,所有的re

14、plicate向主副本發(fā)送log,也就是每個(gè)對象最后的version,當(dāng)primay 決定了最后各個(gè)對象的正確的狀態(tài),并同步到所有副本上。3每個(gè)OSD獨(dú)立的決定,是從其它副本中恢復(fù)喪失或者過時(shí)的missing or outdated對象。 (如何恢復(fù)? 好似是整個(gè)對象全部拷貝,或者基于整個(gè)對象拷貝,但是用了一些類似于rsync的算法?目前還不清楚4當(dāng)OSD在恢復(fù)過程中,delay所有的請求,直到恢復(fù)成功。第二局部GlusterFSGlusterFS是Scale-Out存儲(chǔ)解決方案Gluster的核心,它是一個(gè)開源的分布式文件系統(tǒng),具有強(qiáng)大的橫向擴(kuò)展能力,通過擴(kuò)展能夠支持?jǐn)?shù)PB存儲(chǔ)容量和處理數(shù)千

15、客戶端。GlusterFS借助TCP/IP或InfiniBand RDMA網(wǎng)絡(luò)將物理分布的存儲(chǔ)資源聚集在一起,使用單一全局命名空間來管理數(shù)據(jù)。GlusterFS基于可堆疊的用戶空間設(shè)計(jì),可為各種不同的數(shù)據(jù)負(fù)載提供優(yōu)異的性能。GlusterFS支持運(yùn)行在任何標(biāo)準(zhǔn)IP網(wǎng)絡(luò)上標(biāo)準(zhǔn)應(yīng)用程序的標(biāo)準(zhǔn)客戶端,用戶可以在全局統(tǒng)一的命名空間中使用NFS/CIFS等標(biāo)準(zhǔn)協(xié)議來訪問應(yīng)用數(shù)據(jù)。GlusterFS使得用戶可擺脫原有的獨(dú)立、高本錢的封閉存儲(chǔ)系統(tǒng),能夠利用普通廉價(jià)的存儲(chǔ)設(shè)備來部署可集中管理、橫向擴(kuò)展、虛擬化的存儲(chǔ)池,存儲(chǔ)容量可擴(kuò)展至TB/PB級(jí)。2.1 特點(diǎn) 1) 擴(kuò)展性和高性能GlusterFS利用雙重特

16、性來提供幾TB至數(shù)PB的高擴(kuò)展存儲(chǔ)解決方案。Scale-Out架構(gòu)允許通過簡單地增加資源來提高存儲(chǔ)容量和性能,磁盤、計(jì)算和I/O資源都可以獨(dú)立增加,支持10GbE和InfiniBand等高速網(wǎng)絡(luò)互聯(lián)。Gluster彈性哈希Elastic Hash解除了GlusterFS對元數(shù)據(jù)效勞器的需求,消除了單點(diǎn)故障和性能瓶頸,真正實(shí)現(xiàn)了并行化數(shù)據(jù)訪問。2) 高可用性GlusterFS可以對文件進(jìn)行自動(dòng)復(fù)制,如鏡像或?qū)掖螐?fù)制,從而確保數(shù)據(jù)總是可以訪問,甚至是在硬件故障的情況下也能正常訪問。自我修復(fù)功能能夠把數(shù)據(jù)恢復(fù)到正確的狀態(tài),而且修復(fù)是以增量的方式在后臺(tái)執(zhí)行,幾乎不會(huì)產(chǎn)生性能負(fù)載。GlusterFS沒有

17、設(shè)計(jì)自己的私有數(shù)據(jù)文件格式,而是采用操作系統(tǒng)中主流標(biāo)準(zhǔn)的磁盤文件系統(tǒng)如EXT3、ZFS來存儲(chǔ)文件,因此數(shù)據(jù)可以使用各種標(biāo)準(zhǔn)工具進(jìn)行復(fù)制和訪問。3) 全局統(tǒng)一命名空間全局統(tǒng)一命名空間將磁盤和內(nèi)存資源聚集成一個(gè)單一的虛擬存儲(chǔ)池,對上層用戶和應(yīng)用屏蔽了底層的物理硬件。存儲(chǔ)資源可以根據(jù)需要在虛擬存儲(chǔ)池中進(jìn)行彈性擴(kuò)展,比方擴(kuò)容或收縮。當(dāng)存儲(chǔ)虛擬機(jī)映像時(shí),存儲(chǔ)的虛擬映像文件沒有數(shù)量限制,成千虛擬機(jī)均通過單一掛載點(diǎn)進(jìn)行數(shù)據(jù)共享。虛擬機(jī)I/O可在命名空間內(nèi)的所有效勞器上自動(dòng)進(jìn)行負(fù)載均衡,消除了SAN環(huán)境中經(jīng)常發(fā)生的訪問熱點(diǎn)和性能瓶頸問題。4) 彈性哈希算法GlusterFS采用彈性哈希算法在存儲(chǔ)池中定位數(shù)據(jù),

18、而不是采用集中式或分布式元數(shù)據(jù)效勞器索引。在其他的Scale-Out存儲(chǔ)系統(tǒng)中,元數(shù)據(jù)效勞器通常會(huì)導(dǎo)致I/O性能瓶頸和單點(diǎn)故障問題。GlusterFS中,所有在Scale-Out存儲(chǔ)配置中的存儲(chǔ)系統(tǒng)都可以智能地定位任意數(shù)據(jù)分片,不需要查看索引或者向其他效勞器查詢。這種設(shè)計(jì)機(jī)制完全并行化了數(shù)據(jù)訪問,實(shí)現(xiàn)了真正的線性性能擴(kuò)展。5) 彈性卷管理數(shù)據(jù)儲(chǔ)存在邏輯卷中,邏輯卷可以從虛擬化的物理存儲(chǔ)池進(jìn)行獨(dú)立邏輯劃分而得到。存儲(chǔ)效勞器可以在線進(jìn)行增加和移除,不會(huì)導(dǎo)致應(yīng)用中斷。邏輯卷可以在所有配置效勞器中增長和縮減,可以在不同效勞器遷移進(jìn)行容量均衡,或者增加和移除系統(tǒng),這些操作都可在線進(jìn)行。文件系統(tǒng)配置更改也

19、可以實(shí)時(shí)在線進(jìn)行并應(yīng)用,從而可以適應(yīng)工作負(fù)載條件變化或在線性能調(diào)優(yōu)。6) 基于標(biāo)準(zhǔn)協(xié)議Gluster存儲(chǔ)效勞支持NFS, CIFS, HTTP, FTP以及Gluster原生協(xié)議,完全與POSIX標(biāo)準(zhǔn)兼容。現(xiàn)有應(yīng)用程序不需要作任何修改或使用專用API,就可以對Gluster中的數(shù)據(jù)進(jìn)行訪問。這在公有云環(huán)境中部署Gluster時(shí)非常有用,Gluster對云效勞提供商專用API進(jìn)行抽象,然后提供標(biāo)準(zhǔn)POSIX接口。GlusterFS在技術(shù)實(shí)現(xiàn)上與傳統(tǒng)存儲(chǔ)系統(tǒng)或現(xiàn)有其他分布式文件系統(tǒng)有顯著不同之處,主要表達(dá)在如下幾個(gè)方面。7) 完全軟件實(shí)現(xiàn)Software OnlyGlusterFS認(rèn)為存儲(chǔ)是軟件問

20、題,不能夠把用戶局限于使用特定的供給商或硬件配置來解決。GlusterFS采用開放式設(shè)計(jì),廣泛支持工業(yè)標(biāo)準(zhǔn)的存儲(chǔ)、網(wǎng)絡(luò)和計(jì)算機(jī)設(shè)備,而非與定制化的專用硬件設(shè)備捆綁。對于商業(yè)客戶,GlusterFS可以以虛擬裝置的形式交付,也可以與虛擬機(jī)容器打包,或者是公有云中部署的映像。開源社區(qū)中,GlusterFS被大量部署在基于廉價(jià)閑置硬件的各種操作系統(tǒng)上,構(gòu)成集中統(tǒng)一的虛擬存儲(chǔ)資源池。簡而言之,GlusterFS是開放的全軟件實(shí)現(xiàn),完全獨(dú)立于硬件和操作系統(tǒng)。8) 完整的存儲(chǔ)操作系統(tǒng)棧Complete Storage Operating System StackGlusterFS不僅提供了一個(gè)分布式文件系

21、統(tǒng),而且還提供了許多其他重要的分布式功能,比方分布式內(nèi)存管理、I/O調(diào)度、軟RAID和自我修復(fù)等。GlusterFS汲取了微內(nèi)核架構(gòu)的經(jīng)驗(yàn)教訓(xùn),借鑒了GNU/Hurd操作系統(tǒng)的設(shè)計(jì)思想,在用戶空間實(shí)現(xiàn)了完整的存儲(chǔ)操作系統(tǒng)棧。9) 用戶空間實(shí)現(xiàn)User Space與傳統(tǒng)的文件系統(tǒng)不同,GlusterFS在用戶空間實(shí)現(xiàn),這使得其安裝和升級(jí)特別簡便。另外,這也極大降低了普通用戶基于源碼修改GlusterFS的門檻,僅僅需要通用的C程序設(shè)計(jì)技能,而不需要特別的內(nèi)核編程經(jīng)驗(yàn)。10) 模塊化堆棧式架構(gòu)Modular Stackable ArchitectureGlusterFS采用模塊化、堆棧式的架構(gòu),可

22、通過靈活的配置支持高度定制化的應(yīng)用環(huán)境,比方大文件存儲(chǔ)、海量小文件存儲(chǔ)、云存儲(chǔ)、多傳輸協(xié)議應(yīng)用等。每個(gè)功能以模塊形式實(shí)現(xiàn),然后以積木方式進(jìn)行簡單的組合,即可實(shí)現(xiàn)復(fù)雜的功能。比方,Replicate模塊可實(shí)現(xiàn)RAID1,Stripe模塊可實(shí)現(xiàn)RAID0,通過兩者的組合可實(shí)現(xiàn)RAID10和RAID01,同時(shí)獲得高性能和高可靠性。11) 原始數(shù)據(jù)格式存儲(chǔ)Data Stored in Native FormatsGlusterFS以原始數(shù)據(jù)格式如EXT3、EXT4、XFS、ZFS儲(chǔ)存數(shù)據(jù),并實(shí)現(xiàn)多種數(shù)據(jù)自動(dòng)修復(fù)機(jī)制。因此,系統(tǒng)極具彈性,即使離線情形下文件也可以通過其他標(biāo)準(zhǔn)工具進(jìn)行訪問。如果用戶需要從G

23、lusterFS中遷移數(shù)據(jù),不需要作任何修改仍然可以完全使用這些數(shù)據(jù)。12) 無元數(shù)據(jù)效勞設(shè)計(jì)No Metadata with the Elastic Hash Algorithm對Scale-Out存儲(chǔ)系統(tǒng)而言,最大的挑戰(zhàn)之一就是記錄數(shù)據(jù)邏輯與物理位置的映像關(guān)系,即數(shù)據(jù)元數(shù)據(jù),可能還包括諸如屬性和訪問權(quán)限等信息。傳統(tǒng)分布式存儲(chǔ)系統(tǒng)使用集中式或分布式元數(shù)據(jù)效勞來維護(hù)元數(shù)據(jù),集中式元數(shù)據(jù)效勞會(huì)導(dǎo)致單點(diǎn)故障和性能瓶頸問題,而分布式元數(shù)據(jù)效勞存在性能負(fù)載和元數(shù)據(jù)同步一致性問題。特別是對于海量小文件的應(yīng)用,元數(shù)據(jù)問題是個(gè)非常大的挑戰(zhàn)。GlusterFS獨(dú)特地采用無元數(shù)據(jù)效勞的設(shè)計(jì),取而代之使用算法來定

24、位文件,元數(shù)據(jù)和數(shù)據(jù)沒有別離而是一起存儲(chǔ)。集群中的所有存儲(chǔ)系統(tǒng)效勞器都可以智能地對文件數(shù)據(jù)分片進(jìn)行定位,僅僅根據(jù)文件名和路徑并運(yùn)用算法即可,而不需要查詢索引或者其他效勞器。這使得數(shù)據(jù)訪問完全并行化,從而實(shí)現(xiàn)真正的線性性能擴(kuò)展。無元數(shù)據(jù)效勞器極大提高了GlusterFS的性能、可靠性和穩(wěn)定性。2.2 組成GlusterFS主要由存儲(chǔ)效勞器Brick Server、客戶端以及NFS/Samba存儲(chǔ)網(wǎng)關(guān)組成。不難發(fā)現(xiàn),GlusterFS架構(gòu)中沒有元數(shù)據(jù)效勞器組件,這是其最大的設(shè)計(jì)這點(diǎn),對于提升整個(gè)系統(tǒng)的性能、可靠性和穩(wěn)定性都有著決定性的意義。GlusterFS支持TCP/IP和InfiniBand

25、RDMA高速網(wǎng)絡(luò)互聯(lián),客戶端可通過原生Glusterfs協(xié)議訪問數(shù)據(jù),其他沒有運(yùn)行GlusterFS客戶端的終端可通過NFS/CIFS標(biāo)準(zhǔn)協(xié)議通過存儲(chǔ)網(wǎng)關(guān)訪問數(shù)據(jù)。2.3 架構(gòu)原理GlusterFS總體架構(gòu)與組成局部如上圖所示,存儲(chǔ)效勞器主要提供根本的數(shù)據(jù)存儲(chǔ)功能,最終的文件數(shù)據(jù)通過統(tǒng)一的調(diào)度策略分布在不同的存儲(chǔ)效勞器上。它們上面運(yùn)行著Glusterfsd進(jìn)行,負(fù)責(zé)處理來自其他組件的數(shù)據(jù)效勞請求。如前所述,數(shù)據(jù)以原始格式直接存儲(chǔ)在效勞器的本地文件系統(tǒng)上,如EXT3、EXT4、XFS、ZFS等,運(yùn)行效勞時(shí)指定數(shù)據(jù)存儲(chǔ)路徑。多個(gè)存儲(chǔ)效勞器可以通過客戶端或存儲(chǔ)網(wǎng)關(guān)上的卷管理器組成集群,如Stripe

26、RAID0、ReplicateRAID1和DHT分布式Hash存儲(chǔ)集群,也可利用嵌套組合構(gòu)成更加復(fù)雜的集群,如RAID10。由于沒有了元數(shù)據(jù)效勞器,客戶端承當(dāng)了更多的功能,包括數(shù)據(jù)卷管理、I/O調(diào)度、文件定位、數(shù)據(jù)緩存等功能??蛻舳松线\(yùn)行Glusterfs進(jìn)程,它實(shí)際是Glusterfsd的符號(hào)鏈接,利用FUSEFile system in User Space模塊將GlusterFS掛載到本地文件系統(tǒng)之上,實(shí)現(xiàn)POSIX兼容的方式來訪問系統(tǒng)數(shù)據(jù)。在最新的3.1.X版本中,客戶端不再需要獨(dú)立維護(hù)卷配置信息,改成自動(dòng)從運(yùn)行在網(wǎng)關(guān)上的glusterd彈性卷管理效勞進(jìn)行獲取和更新,極大簡化了卷管理。

27、GlusterFS客戶端負(fù)載相對傳統(tǒng)分布式文件系統(tǒng)要高,包括CPU占用率和內(nèi)存占用。GlusterFS存儲(chǔ)網(wǎng)關(guān)提供彈性卷管理和NFS/CIFS訪問代理功能,其上運(yùn)行Glusterd和Glusterfs進(jìn)程,兩者都是Glusterfsd符號(hào)鏈接。卷管理器負(fù)責(zé)邏輯卷的創(chuàng)立、刪除、容量擴(kuò)展與縮減、容量平滑等功能,并負(fù)責(zé)向客戶端提供邏輯卷信息及主動(dòng)更新通知功能等。GlusterFS 3.1.X實(shí)現(xiàn)了邏輯卷的彈性和自動(dòng)化管理,不需要中斷數(shù)據(jù)效勞或上層應(yīng)用業(yè)務(wù)。對于Windows客戶端或沒有安裝GlusterFS的客戶端,需要通過NFS/CIFS代理網(wǎng)關(guān)來訪問,這時(shí)網(wǎng)關(guān)被配置成NFS或Samba效勞器。相

28、對原生客戶端,網(wǎng)關(guān)在性能上要受到NFS/Samba的制約。GlusterFS是模塊化堆棧式的架構(gòu)設(shè)計(jì),如上圖所示。模塊稱為Translator,是GlusterFS提供的一種強(qiáng)大機(jī)制,借助這種良好定義的接口可以高效簡便地?cái)U(kuò)展文件系統(tǒng)的功能。效勞端與客戶端模塊接口是兼容的,同一個(gè)translator可同時(shí)在兩邊加載。每個(gè)translator都是SO動(dòng)態(tài)庫,運(yùn)行時(shí)根據(jù)配置動(dòng)態(tài)加載。每個(gè)模塊實(shí)現(xiàn)特定根本功能,GlusterFS中所有的功能都是通過translator實(shí)現(xiàn),比方Cluster, Storage, Performance, Protocol, Features等,根本簡單的模塊可以通過堆

29、棧式的組合來實(shí)現(xiàn)復(fù)雜的功能。這一設(shè)計(jì)思想借鑒了GNU/Hurd微內(nèi)核的虛擬文件系統(tǒng)設(shè)計(jì),可以把對外部系統(tǒng)的訪問轉(zhuǎn)換成目標(biāo)系統(tǒng)的適當(dāng)調(diào)用。大局部模塊都運(yùn)行在客戶端,比方合成器、I/O調(diào)度器和性能優(yōu)化等,效勞端相對簡單許多??蛻舳撕痛鎯?chǔ)效勞器均有自己的存儲(chǔ)棧,構(gòu)成了一棵Translator功能樹,應(yīng)用了假設(shè)干模塊。模塊化和堆棧式的架構(gòu)設(shè)計(jì),極大降低了系統(tǒng)設(shè)計(jì)復(fù)雜性,簡化了系統(tǒng)的實(shí)現(xiàn)、升級(jí)以及系統(tǒng)維護(hù)。2.4 使用方式GlusterFS使用算法進(jìn)行數(shù)據(jù)定位,集群中的任何效勞器和客戶端只需根據(jù)路徑和文件名就可以對數(shù)據(jù)進(jìn)行定位和讀寫訪問。換句話說,GlusterFS不需要將元數(shù)據(jù)與數(shù)據(jù)進(jìn)行別離,因?yàn)槲募?/p>

30、定位可獨(dú)立并行化進(jìn)行。GlusterFS中數(shù)據(jù)訪問流程如下:1、計(jì)算hash值,輸入?yún)?shù)為文件路徑和文件名;2、根據(jù)hash值在集群中選擇子卷存儲(chǔ)效勞器,進(jìn)行文件定位;3、對所選擇的子卷進(jìn)行數(shù)據(jù)訪問。1. 存儲(chǔ)節(jié)點(diǎn)的添加GlusterFS的哈希分布是以目錄為根本單位的,文件的父目錄利用擴(kuò)展屬性記錄了子卷映射信息,其下面子文件目錄在父目錄所屬存儲(chǔ)效勞器中進(jìn)行分布。由于文件目錄事先保存了分布信息,因此新增節(jié)點(diǎn)不會(huì)影響現(xiàn)有文件存儲(chǔ)分布,它將從此后的新創(chuàng)立目錄開始參與存儲(chǔ)分布調(diào)度。這種設(shè)計(jì),新增節(jié)點(diǎn)不需要移動(dòng)任何文件,但是負(fù)載均衡沒有平滑處理,老節(jié)點(diǎn)負(fù)載較重。GlusterFS在設(shè)計(jì)中考慮了這一問題,

31、在新建文件時(shí)會(huì)優(yōu)先考慮容量負(fù)載最輕的節(jié)點(diǎn),在目標(biāo)存儲(chǔ)節(jié)點(diǎn)上創(chuàng)立文件鏈接直向真正存儲(chǔ)文件的節(jié)點(diǎn)。另外,GlusterFS彈性卷管理工具可以在后臺(tái)以人工方式來執(zhí)行負(fù)載平滑,將進(jìn)行文件移動(dòng)和重新分布,此后所有存儲(chǔ)效勞器都會(huì)均會(huì)被調(diào)度。2. 存儲(chǔ)節(jié)點(diǎn)刪除GlusterFS目前對存儲(chǔ)節(jié)點(diǎn)刪除支持有限,還無法做到完全無人干預(yù)的程度。如果直接刪除節(jié)點(diǎn),那么所在存儲(chǔ)效勞器上的文件將無法瀏覽和訪問,創(chuàng)立文件目錄也會(huì)失敗。當(dāng)前人工解決方法有兩個(gè),一是將節(jié)點(diǎn)上的數(shù)據(jù)重新復(fù)制到GlusterFS中,二是使用新的節(jié)點(diǎn)來替換刪除節(jié)點(diǎn)并保持原有數(shù)據(jù)。3. 文件改名如果一個(gè)文件被改名,顯然hash算法將產(chǎn)生不同的值,非??赡?/p>

32、會(huì)發(fā)生文件被定位到不同的存儲(chǔ)效勞器上,從而導(dǎo)致文件訪問失敗。采用數(shù)據(jù)移動(dòng)的方法,對于大文件是很難在實(shí)時(shí)完成的。為了不影響性能和效勞中斷,GlusterFS采用了文件鏈接來解決文件重命名問題,在目標(biāo)存儲(chǔ)效勞器上創(chuàng)立一個(gè)鏈接指向?qū)嶋H的存儲(chǔ)效勞器,訪問時(shí)由系統(tǒng)解析并進(jìn)行重定向。另外,后臺(tái)同時(shí)進(jìn)行文件遷移,成功后文件鏈接將被自動(dòng)刪除。對于文件移動(dòng)也作類似處理,好處是前臺(tái)操作可實(shí)時(shí)處理,物理數(shù)據(jù)遷移置于后臺(tái)選擇適當(dāng)時(shí)機(jī)執(zhí)行。4. 彈性卷管理 GlusterFS3.1.X實(shí)現(xiàn)了真正的彈性卷管理。存儲(chǔ)卷是對底層硬件的抽象,可以根據(jù)需要進(jìn)行擴(kuò)容和縮減,以及在不同物理系統(tǒng)之間進(jìn)行遷移。存儲(chǔ)效勞器可以在線增加和移

33、除,并能在集群之間自動(dòng)進(jìn)行數(shù)據(jù)負(fù)載平衡,數(shù)據(jù)總是在線可用,沒有應(yīng)用中斷。文件系統(tǒng)配置更新也可以在線執(zhí)行,所作配置變動(dòng)能夠快速動(dòng)態(tài)地在集群中傳播,從而自動(dòng)適應(yīng)負(fù)載波動(dòng)和性能調(diào)優(yōu)。彈性哈希算法本身并沒有提供數(shù)據(jù)容錯(cuò)功能,GlusterFS使用鏡像或復(fù)制來保證數(shù)據(jù)可用性,推薦使用鏡像或3路復(fù)制。復(fù)制模式下,存儲(chǔ)效勞器使用同步寫復(fù)制到其他的存儲(chǔ)效勞器,單個(gè)效勞器故障完全對客戶端透明。此外,GlusterFS沒有對復(fù)制數(shù)量進(jìn)行限制,讀被分散到所有的鏡像存儲(chǔ)節(jié)點(diǎn),可以提高讀性能。彈性哈希算法分配文件到唯一的邏輯卷,而復(fù)制可以保證數(shù)據(jù)至少保存在兩個(gè)不同存儲(chǔ)節(jié)點(diǎn),兩者結(jié)合使得GlusterFS具備更高的彈性。

34、第三局部 LustreLustre是一個(gè)以GNUGeneral Public為許可證的,開源的分布式并行文件系統(tǒng),由Sun Microsystems Inc. 公司開發(fā)和維護(hù)。由于Lustre文件系統(tǒng)的體系結(jié)構(gòu)具有極好的可擴(kuò)展性,它得以在科學(xué)計(jì)算、石油天然氣、制造業(yè)、rich media、金融等領(lǐng)域得到廣泛部署。Lustre為其客戶端提供了包含對共享文件對象的并行存取能力在內(nèi)的POSIX接口。3.1 特點(diǎn)Lustre 是一個(gè)透明的全局文件系統(tǒng),客戶端可以透明地訪問集群文件系統(tǒng)中的數(shù)據(jù),而無需知道這些數(shù)據(jù)的實(shí)際存儲(chǔ)位置。Lustre作為下一代的集群文件系統(tǒng),可支持10,000個(gè)節(jié)點(diǎn),PB的存儲(chǔ)量

35、,100GB/S的傳輸速度;兩個(gè)MDS采用共享存儲(chǔ)設(shè)備的ActiveStandby方式的容錯(cuò)機(jī)制;存儲(chǔ)設(shè)備跟普通的,基于塊的IDE存儲(chǔ)設(shè)備不同,是基于對象的智能存儲(chǔ)設(shè)備。Luxtre實(shí)現(xiàn)了可靠性的,可用性的,可擴(kuò)展性的,可管理性的,高性能的,海量的,分布式的數(shù)據(jù)存儲(chǔ),并且能夠按照應(yīng)用需求的不同提供不同的效勞,如不同的應(yīng)用、不同的客戶端環(huán)境、不同的性能等,真正實(shí)現(xiàn)了按需效勞。32 組成1、對象對象是系統(tǒng)中數(shù)據(jù)存儲(chǔ)的根本單位,一個(gè)對象實(shí)際上就是文件的數(shù)據(jù)和一組屬性的組合,這些屬性可以定義基于文件的RAID參數(shù)、數(shù)據(jù)分布和效勞質(zhì)量等,而傳統(tǒng)的存儲(chǔ)系統(tǒng)中用文件或塊作為根本的存儲(chǔ)單位,在塊存儲(chǔ)系統(tǒng)中還需

36、要始終追蹤系統(tǒng)中每個(gè)塊的屬性,對象通過與存儲(chǔ)系統(tǒng)通信維護(hù)自己的屬性。在存儲(chǔ)設(shè)備中,所有對象都有一個(gè)對象標(biāo)識(shí),通過對象標(biāo)識(shí)OSD命令訪問該對象。通常有多種類型的對象,存儲(chǔ)設(shè)備上的根對象標(biāo)識(shí)存儲(chǔ)設(shè)備和該設(shè)備的各種屬性,組對象是存儲(chǔ)設(shè)備上共享資源管理策略的對象集合等。2、對象存儲(chǔ)設(shè)備對象存儲(chǔ)設(shè)備具有一定的智能,它有自己的CPU、內(nèi)存、網(wǎng)絡(luò)和磁盤系統(tǒng),目前國際上通常采用刀片式結(jié)構(gòu)實(shí)現(xiàn)對象存儲(chǔ)設(shè)備。OSD提供三個(gè)主要功能:1 數(shù)據(jù)存儲(chǔ)。OSD管理對象數(shù)據(jù),并將它們放置在標(biāo)準(zhǔn)的磁盤系統(tǒng)上,OSD不提供塊接口訪問方式,Client請求數(shù)據(jù)時(shí)用對象ID、偏移進(jìn)行數(shù)據(jù)讀寫。2 智能分布。OSD用其自身的CPU和

37、內(nèi)存優(yōu)化數(shù)據(jù)分布,并支持?jǐn)?shù)據(jù)的預(yù)取。由于OSD可以智能地支持對象的預(yù)取,從而可以優(yōu)化磁盤的性能。3每個(gè)對象元數(shù)據(jù)的管理。OSD管理存儲(chǔ)在其上對象的元數(shù)據(jù),該元數(shù)據(jù)與傳統(tǒng)的inode元數(shù)據(jù)相似,通常包括對象的數(shù)據(jù)塊和對象的長度。而在傳統(tǒng)的NAS 系統(tǒng)中,這些元數(shù)據(jù)是由文件效勞器維護(hù)的,對象存儲(chǔ)架構(gòu)將系統(tǒng)中主要的元數(shù)據(jù)管理工作由OSD來完成,降低了Client的開銷。3、元數(shù)據(jù)效勞器Metadata Server,MDSMDS控制Client與OSD對象的交互,主要提供以下幾個(gè)功能:1 對象存儲(chǔ)訪問。MDS構(gòu)造、管理描述每個(gè)文件分布的視圖,允許Client直接訪問對象。MDS為Client提供訪問

38、該文件所含對象的能力,OSD在接收到每個(gè)請求時(shí)將先驗(yàn)證該能力,然后才可以訪問。2 文件和目錄訪問管理。MDS在存儲(chǔ)系統(tǒng)上構(gòu)建一個(gè)文件結(jié)構(gòu),包括限額控制、目錄和文件的創(chuàng)立和刪除、訪問控制等。3 Client Cache一致性。為了提高Client性能,在對象存儲(chǔ)文件系統(tǒng)設(shè)計(jì)時(shí)通常支持Client方的Cache。由于引入Client方的Cache,帶來了Cache一致性問題,MDS支持基于Client的文件Cache,當(dāng)Cache的文件發(fā)生改變時(shí),將通知Client刷新Cache,從而防止Cache不一致引發(fā)的問題。3.3 對象存儲(chǔ)文件系統(tǒng)架構(gòu) Lustre是一個(gè)面向?qū)ο蟮奈募到y(tǒng)。它由三個(gè)部件組

39、成:元數(shù)據(jù)效勞器Metadataservers, MDSs、對象存儲(chǔ)效勞器objectstorage servers, OSSs和客戶端。上圖給出了文件系統(tǒng)的體系結(jié)構(gòu)。Lustre使用塊設(shè)備來作為文件數(shù)據(jù)和元數(shù)據(jù)的存儲(chǔ)介質(zhì),每個(gè)塊設(shè)備只能由一個(gè)Lustre效勞管理。Lustre文件系統(tǒng)的容量是所有單個(gè)OST的容量之和。客戶端通過POSIX I/O系統(tǒng)調(diào)用來并行訪問和使用數(shù)據(jù)??蛻舳嗽谛枰L問文件系統(tǒng)的文件數(shù)據(jù)時(shí),先訪問MDS,獲取文件相關(guān)的元數(shù)據(jù)信息,然后就直接和相關(guān)的OST通信,取得文件的實(shí)際數(shù)據(jù)??蛻舳送ㄟ^網(wǎng)絡(luò)讀取效勞器上的數(shù)據(jù),存儲(chǔ)效勞器負(fù)責(zé)實(shí)際文件系統(tǒng)的讀寫操作以及存儲(chǔ)設(shè)備的連接,元數(shù)

40、據(jù)效勞器負(fù)責(zé)文件系統(tǒng)目錄結(jié)構(gòu)、文件權(quán)限和文件的擴(kuò)展屬性以及維護(hù)整個(gè)文件系統(tǒng)的數(shù)據(jù)一致性和響應(yīng)客戶端的請求。由于Lustre采用元數(shù)據(jù)和存儲(chǔ)數(shù)據(jù)相別離的技術(shù),可以充分別離計(jì)算和存儲(chǔ)資源,使得客戶端計(jì)算機(jī)可以專注于用戶和應(yīng)用程序的請求;存儲(chǔ)效勞器和元數(shù)據(jù)效勞器專注于讀、傳輸和寫數(shù)據(jù)。存儲(chǔ)效勞器端的數(shù)據(jù)備份和存儲(chǔ)配置以及存儲(chǔ)效勞器擴(kuò)充等操作不會(huì)影響到客戶端,存儲(chǔ)效勞器和元數(shù)據(jù)效勞器均不會(huì)成為性能瓶頸。3.4 使用方式Lustre作為一個(gè)遵從POSIX標(biāo)準(zhǔn)的文件系統(tǒng),為用戶提供了諸如open()、read()、write()等統(tǒng)一的文件系統(tǒng)接口。在Linux中,這些接口是通過虛擬文件系統(tǒng)Virtual File System,VFS層實(shí)現(xiàn)的在BSD/Solaris中,那么稱為vnode層。在Lustre中,諸如創(chuàng)立、翻開、讀等一般的文件操作,都需要存儲(chǔ)在MDS上的元數(shù)據(jù)信息。這些效勞通過一個(gè)稱為MDC的客戶端接口模塊來訪問。從MDS的觀點(diǎn)來看,每個(gè)文件都是分條

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論