1. 程式人生 > >分布式存儲之MogileFS簡單應用

分布式存儲之MogileFS簡單應用

mogilefs

分布式存儲之MogileFS分布式文件系統簡單應用

一. 分布式存儲原理:

a) 分布式存儲系統,是將數據分散存儲在多臺獨立的設備上。傳統的網絡存儲系統采用集中的存儲服務器存放所有數據,存儲服務器成為系統性能的瓶頸,也是 可靠性和安全性的焦點,不能滿足大規模存儲數據的需要。分布式網絡存儲采用擴展的系統結構,利用多臺存儲服務器分擔存儲負荷,利用位置服務器定位存儲信息,它不但提高了系統的可靠性、可用性和存取效率,還易於擴展。

b) 網絡存儲系統分為

1. 從傳統的直接存儲系統DAS(直接附加存儲)

2. 發展出了網絡存儲架構SAN(存儲區域網絡)

3. NAS(網絡附加存儲)

4. FAS(網絡化存儲)

c) 存儲分類:

1. 封閉系統的存儲

2. 開放系統的存儲:

i. 內置存儲

ii. 外掛存儲:

a) 直連式存儲(DAS

b) 網絡存儲(FAS):

i. 網絡附加存儲(NAS

ii. 存儲區域網絡(SAN

d) NAS存儲:

NAS存儲也通常被稱為附加存儲,顧名思義,就是存儲設備通過標準地網絡拓撲結構他(例如以太網)添加到一群計算機上,NAS是文件級的存儲方法,它的重點在於幫助工作組和部門機構解決迅速增加存儲容量的需求。如今用戶采用NAS較多的功能是文件共享,圖片共享

、電影共享等等,而且隨著雲計算的發展,一些NAS廠商也推出了雲存儲功能,大大方便了企業和個人用戶的使用。

NAS產品是真正即插即用的產品。NAS設備一般支持多計算機平臺,用戶通過網絡支持協議可進入相同的文檔,因而NAS設備無需改造即可用於混合Unix/Windows NT局域網內,同時NAS的應用非常靈活。

NAS又一個關鍵性問題,即備份過程中的帶寬消耗。與將備份數據流從LAN中轉移出去的存儲區域網(SAN)不同,NAS仍使用網絡進行備份和恢復。NAS 的一個缺點是它將存儲事務由並行SCSI連接轉移到了網絡上。這就是說LAN除了必須處理正常的最終用戶傳輸流外,還必須處理包括備份操作的存儲磁盤請求。

SAN存儲:

存儲區域網絡,這個是通過光纖通道交換機連接存儲陣列和服務器主機,最後成為一個專用的存儲網絡。SAN

經過十多年歷史的發展,已經相當成熟,成為業界的事實標準(但各個廠商的光纖交換技術不完全相同,其服務器和SAN存儲有兼容性的要求)。

SAN提供了一種與現有LAN連接的簡易方法,並且通過同一物理通道支持廣泛使用的SCSIIP協議。SAN不受現今主流的、基於SCSI存儲結構的布局限制。特別重要的是,隨著存儲容量的爆炸性增長,SAN允許企業獨立地增加它們的存儲容量。SAN的結構允許任何服務器連接到任何存儲陣列,這樣不管數據置放在那裏,服務器都可直接存取所需的數據。因為采用了光纖接口,SAN還具有更高的帶寬。

因為SAN解決方案是從基本功能剝離出存儲功能,所以運行備份操作就無需考慮它們對網絡總體性能的影響。SAN方案也使得管理及集中控制實現簡化,特別是對於全部存儲設備都集群在一起的時候。最後一點,光纖接口提供了10公裏的連接長度,這使得實現物理上分離的、不在機房的存儲變得非常容易。

總結:DAS存儲一般應用在中小企業,與計算機采用直連方式,NAS存儲則通過以太網添加到計算機上,SAN存儲則使用FC接口,×××能更佳的存儲。NASSAN的主要區別體現在操作系統在什麽位置。

二. MogileFS文件系統

mogilefs的特性

1.支持多節點冗余

2.可實現自動的文件復制

3.使用名稱空間(命名空間),每個文件通過key來確定

4.不需要RAID,應用層可以直接實現RAID,不共享任何東西,通過“集群”接口提供服務

5.工作與應用層,沒有特殊的組件要求

6.不共享任何數據,mogilefs不需要依靠昂貴的SAN來共享磁盤,每個機器只用維護好自己的硬盤

mogilefs主要由三部分構成:tracker節點、database節點、storage節點

1trackermogileFSd進程):這個是 MogileFS 的核心部分,他是一個調度器,

2MogileFSd 進程就是trackers進程程序,trackers 做了很多工作:Replication(復制),Deletion(刪除),Query(查詢),Reaper(接受),Monitor(監聽)等等,這個是基於事件的( event-based ) 父進程/消息總線來管理所有來之於客戶端應用的交互(requesting operations to be performed),,包括將請求負載平衡到多個“query workers”中,然後讓 MogileFSd 的子進程去處理;

3Database:用來存放 MogileFS 的元數據 (命名空間, 和文件在哪裏),是Trackers 來操作和管理它,可以用mogdbsetup程序來初始化數據庫,因為數據庫保存了MogileFS的所有元數據,建議做成HA架構;

4Storage Nodes:這個是 MogileFS 存儲文件存放在這些機器上,也是 mogstored 節點,也叫 Storage Server,一臺存儲主要都要啟動一個 mogstored 服務.擴容就是增加這些機器,實際文件存放的地方。

MogileFs工作流程圖:

每次文件的上傳和讀取,都要經過前端TrackerServer服務器,trackServer服務器受到client端請求,查詢數據庫,返回一個上傳或者是讀取的可用的後端StorageServer的地址,然後由client端直接操作後端StorageServer服務器。ipload操作返回就是成功或者失敗的結構,read操作就是犯規對應的查詢數據

技術分享圖片

三. MogileFs管理的幾個概念

1. Domain:一個mogileFS可以有多個Domain,用來存放不同文件(大小,類型),同一個Domainkey必須唯一,不同Domain內,key可以相同;

2.每一個存儲節點稱為一個主機host,一個主機上可以有多個存儲設備dev(單獨的硬盤),每個設備都有ID號,Domain+Fid用來定位文件

3.Class:文件屬性管理,定位文件存儲在不同設備上的分數

四. MogileFS的安裝及配置

A.實驗環境:

1. tracker+mysql 172.17.252.64

2. storage 1172.17.250.2

3. storage2 172.17.254.208

安裝所需要的包(trackerstorage都需要裝)

yum -y install make gcc unzip perl-DBD-MySQL perl perl-CPAN perl-YAML perl-Time-HiRes

MogileFS-Server-2.46-2.el7.centos.noarch.rpm

MogileFS-Server-mogilefsd-2.46-2.el7.centos.noarch.rpm

MogileFS-Server-mogstored-2.46-2.el7.centos.noarch.rpm

MogileFS-Utils-2.19-1.el7.centos.noarch.rpm

perl-Danga-Socket-1.61-1.el6.rf.noarch.rpm

perl-MogileFS-Client-1.14-1.el7.centos.noarch.rpm

perl-Perlbal-1.78-1.el6.noarch.rpm

B.tracker+mysql節點上配置

1.初始化數據庫

Mysql > GRANT ALL PRIVILEGES ON *.* TO 'mogile' @'127.0.0.1' IDENTIFIED BY 'mogile' WITH GRANT OPTION;

技術分享圖片

2.mysql>flush privileges

3.添加運行用戶

useradd -r mogilefs

mkdir /var/run/mogilefsd/

chown -R mogilefs.mogilefs /var/run/mogilefsd #yum安裝的話已經完成

mogdbsetup --dbpass=mogile

技術分享圖片

4. 修改主配置文件

技術分享圖片

5. 定義一個tracker特殊的配置

Vim /etc/mogilefs/mogilefs.conf

trackers=172.17.252.64:7001

6. 啟動服務

技術分享圖片

C)配置storage節點

1.安裝所需要的包

2.vim /etc/mogilefs/mogstored.conf

docroot = /data/mogdata

3. mkdir /data/mogdata

chown mogilefs.mogilefs /data/mogdata

4. 3./etc/init.d/mogstored start

D)tracker+mysql節點的配置

1. 添加主機,將主機信息註冊到數據庫中

modam (--tracker=172.17.252.64:7001) host add node1 --ip=172.17.250.2 --port=7500 --status=alive

mogadm (--tracker=172.17.252.64:7001) host add node2 --ip=172.17.254.208 --port=7500 --status=alive

技術分享圖片

2.檢查主機是否加入到MogileFs的系統中

mogadm host list

技術分享圖片

3. MogileFS 中的存儲設備管理

1.建一個目錄 ( 並且需要 mount 一個硬盤給這個目錄 ) 給這個"設備" 使用, 我們這的例子是使用dev1在主機中建一個目錄,建目錄使用 dev + ID 這種格式,記的所有系統中 ID 不能重復.也必須和配置文件中的路徑一樣(上面已經建立過)

2.給“設備”加入存儲的節點當中。相當於為每個設備加入MogileFS的存儲系統

mogadm -tracker=172.17.252.64:7001 device add node1 1

mogadm -tracker=172.17.252.64:7001 device add node2 2

技術分享圖片

3.檢查是否加入技術分享圖片

Mogadm check

技術分享圖片

4.添加域和添加類,並上傳文件

mogadm domain add img #添加名為img的域

mogadm class add img(域名) m26(類名) --mindevcount=3 #添加類

mogupload --domain=img --key=test --file=1.jpg #上傳文件

技術分享圖片

5.查看文件

Mogfileinfo --domain=img -key=bug4

技術分享圖片

Mogfileinfo --domain=img -key=bug3

技術分享圖片

7. 測試訪問

技術分享圖片

技術分享圖片


分布式存儲之MogileFS簡單應用