分布式存儲之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提供了一種與現有LAN連接的簡易方法,並且通過同一物理通道支持廣泛使用的SCSI和IP協議。SAN不受現今主流的、基於SCSI存儲結構的布局限制。特別重要的是,隨著存儲容量的爆炸性增長,SAN允許企業獨立地增加它們的存儲容量。SAN的結構允許任何服務器連接到任何存儲陣列,這樣不管數據置放在那裏,服務器都可直接存取所需的數據。因為采用了光纖接口,SAN還具有更高的帶寬。
因為SAN解決方案是從基本功能剝離出存儲功能,所以運行備份操作就無需考慮它們對網絡總體性能的影響。SAN方案也使得管理及集中控制實現簡化,特別是對於全部存儲設備都集群在一起的時候。最後一點,光纖接口提供了10公裏的連接長度,這使得實現物理上分離的、不在機房的存儲變得非常容易。
總結:DAS存儲一般應用在中小企業,與計算機采用直連方式,NAS存儲則通過以太網添加到計算機上,SAN存儲則使用FC接口,×××能更佳的存儲。NAS與SAN的主要區別體現在操作系統在什麽位置。
二. MogileFS文件系統
mogilefs的特性
1.支持多節點冗余
2.可實現自動的文件復制
3.使用名稱空間(命名空間),每個文件通過key來確定
4.不需要RAID,應用層可以直接實現RAID,不共享任何東西,通過“集群”接口提供服務
5.工作與應用層,沒有特殊的組件要求
6.不共享任何數據,mogilefs不需要依靠昂貴的SAN來共享磁盤,每個機器只用維護好自己的硬盤
mogilefs主要由三部分構成:tracker節點、database節點、storage節點
1.tracker(mogileFSd進程):這個是 MogileFS 的核心部分,他是一個調度器,
2.MogileFSd 進程就是trackers進程程序,trackers 做了很多工作:Replication(復制),Deletion(刪除),Query(查詢),Reaper(接受),Monitor(監聽)等等,這個是基於事件的( event-based ) 父進程/消息總線來管理所有來之於客戶端應用的交互(requesting operations to be performed),,包括將請求負載平衡到多個“query workers”中,然後讓 MogileFSd 的子進程去處理;
3.Database:用來存放 MogileFS 的元數據 (命名空間, 和文件在哪裏),是Trackers 來操作和管理它,可以用mogdbsetup程序來初始化數據庫,因為數據庫保存了MogileFS的所有元數據,建議做成HA架構;
4.Storage Nodes:這個是 MogileFS 存儲文件存放在這些機器上,也是 mogstored 節點,也叫 Storage Server,一臺存儲主要都要啟動一個 mogstored 服務.擴容就是增加這些機器,實際文件存放的地方。
MogileFs工作流程圖:
每次文件的上傳和讀取,都要經過前端TrackerServer服務器,trackServer服務器受到client端請求,查詢數據庫,返回一個上傳或者是讀取的可用的後端StorageServer的地址,然後由client端直接操作後端StorageServer服務器。ipload操作返回就是成功或者失敗的結構,read操作就是犯規對應的查詢數據
三. MogileFs管理的幾個概念
1. Domain:一個mogileFS可以有多個Domain,用來存放不同文件(大小,類型),同一個Domain內key必須唯一,不同Domain內,key可以相同;
2.每一個存儲節點稱為一個主機host,一個主機上可以有多個存儲設備dev(單獨的硬盤),每個設備都有ID號,Domain+Fid用來定位文件
3.Class:文件屬性管理,定位文件存儲在不同設備上的分數
四. MogileFS的安裝及配置
A).實驗環境:
1. tracker+mysql :172.17.252.64
2. storage 1:172.17.250.2
3. storage2 :172.17.254.208
安裝所需要的包(tracker和storage都需要裝)
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簡單應用