• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-379  評論-37  文章-0  trackbacks-0
            分布式文件系統(tǒng)MFS(moosefs)實(shí)現(xiàn)存儲共享
            作者:田逸(sery@163.com) from: [url]http://net.it168.com/a2009/0403/270/000000270867.shtml[/url]
             
            由于用戶數(shù)量的不斷攀升,我對訪問量大的應(yīng)用實(shí)現(xiàn)了可擴(kuò)展、高可靠的集群部署(即lvs+keepalived的方式),但仍然有用戶反饋訪問慢的問題。通過排查個服務(wù)器的情況,發(fā)現(xiàn)問題的根源在于共享存儲服務(wù)器NFS。在我這個網(wǎng)絡(luò)環(huán)境里,N個服務(wù)器通過nfs方式共享一個服務(wù)器的存儲空間,使得NFS服務(wù)器不堪重負(fù)。察看系統(tǒng)日志,全是nfs服務(wù)超時之類的報(bào)錯。一般情況下,當(dāng)nfs客戶端數(shù)目較小的時候,NFS性能不會出現(xiàn)問題;一旦NFS服務(wù)器數(shù)目過多,并且是那種讀寫都比較頻繁的操作,所得到的結(jié)果就不是我們所期待的。下面是某個集群使用nfs共享的示意圖:
            這種架構(gòu)除了性能問題而外,還存在單點(diǎn)故障,一旦這個NFS服務(wù)器發(fā)生故障,所有靠共享提供數(shù)據(jù)的應(yīng)用就不再可用,盡管用rsync方式同步數(shù)據(jù)到另外一個服務(wù)器上做nfs服務(wù)的備份,但這對提高整個系統(tǒng)的性能毫無幫助。基于這樣一種需求,我們需要對nfs服務(wù)器進(jìn)行優(yōu)化或采取別的解決方案,然而優(yōu)化并不能對應(yīng)對日益增多的客戶端的性能要求,因此唯一的選擇只能是采取別的解決方案了;通過調(diào)研,分布式文件系統(tǒng)是一個比較合適的選擇。采用分布式文件系統(tǒng)后,服務(wù)器之間的數(shù)據(jù)訪問不再是一對多的關(guān)系(1個NFS服務(wù)器,多個NFS客戶端),而是多對多的關(guān)系,這樣一來,性能大幅提升毫無問題。
             
            到目前為止,有數(shù)十種以上的分布式文件系統(tǒng)解決方案可供選擇,如lustre,hadoop,Pnfs等等。我嘗試了PVFS,hadoop,moosefs這三種應(yīng)用,參看了lustre、KFS等諸多技術(shù)實(shí)施方法,最后我選擇了moosefs(以下簡稱MFS)這種分布式文件系統(tǒng)來作為我的共享存儲服務(wù)器。為什么要選它呢?我來說說我的一些看法:
            1、  實(shí)施起來簡單。MFS的安裝、部署、配置相對于其他幾種工具來說,要簡單和容易得多。看看lustre 700多頁的pdf文檔,讓人頭昏吧。
            2、  不停服務(wù)擴(kuò)容。MFS框架做好后,隨時增加服務(wù)器擴(kuò)充容量;擴(kuò)充和減少容量皆不會影響現(xiàn)有的服務(wù)。注:hadoop也實(shí)現(xiàn)了這個功能。
            3、  恢復(fù)服務(wù)容易。除了MFS本身具備高可用特性外,手動恢復(fù)服務(wù)也是非常快捷的,原因參照第1條。
            4、  我在實(shí)驗(yàn)過程中得到作者的幫助,這讓我很是感激。
            MFS文件系統(tǒng)的組成
            1、 元數(shù)據(jù)服務(wù)器。在整個體系中負(fù)責(zé)管理管理文件系統(tǒng),目前MFS只支持一個元數(shù)據(jù)服務(wù)器master,這是一個單點(diǎn)故障,需要一個性能穩(wěn)定的服務(wù)器來充當(dāng)。希望今后MFS能支持多個master服務(wù)器,進(jìn)一步提高系統(tǒng)的可靠性。
            2、 數(shù)據(jù)存儲服務(wù)器chunkserver。真正存儲用戶數(shù)據(jù)的服務(wù)器。存儲文件時,首先把文件分成塊,然后這些塊在數(shù)據(jù)服務(wù)器chunkserver之間復(fù)制(復(fù)制份數(shù)可以手工指定,建議設(shè)置副本數(shù)為3)。數(shù)據(jù)服務(wù)器可以是多個,并且數(shù)量越多,可使用的“磁盤空間”越大,可靠性也越高。
            3、 客戶端。使用MFS文件系統(tǒng)來存儲和訪問的主機(jī)稱為MFS的客戶端,成功掛接MFS文件系統(tǒng)以后,就可以像以前使用NFS一樣共享這個虛擬性的存儲了。
             
            元數(shù)據(jù)服務(wù)器安裝和配置
            元數(shù)據(jù)服務(wù)器可以是linux,也可以是unix,你可以根據(jù)自己的使用習(xí)慣選擇操作系統(tǒng),在我的環(huán)境里,我是用freebsd做為MFS元數(shù)據(jù)的運(yùn)行平臺。GNU源碼,在各種類unix平臺的安裝都基本一致。
             
            (一)   安裝元數(shù)據(jù)服務(wù)
            1、下載GNU源碼 wget [url]http://www.moosefs.com/files/mfs-1.5.12.tar.gz[/url]
            2、解包 tar zxvf mfs-1.5.12.tar.gz
            3、切換目錄 cd mfs-1.5.12
            4、創(chuàng)建用戶 useradd mfs –s /sbin/nologin 
            5、配置 ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs
            6、編譯安裝 make ; make install
             
            (二)   配置元數(shù)據(jù)服務(wù)
            元數(shù)據(jù)服務(wù)器的配置文件是mfsmaster.cfg,我在安裝MFS時指定了前綴,因此這個文件的位置在/usr/local/mfs/etc/mfsmaster.cfg.我們打開這個配置文件,看看都有哪些內(nèi)容:
            盡管每行都被注釋掉了,但它們卻是配置文件的默認(rèn)值,要改變這些值,需要取消注釋,然后明確指定其取值。接下來說明一下其中一些項(xiàng)目的含義。
            ◆     LOCK_FILE = /var/run/mfs/mfsmaster.pid 文件鎖所在的位置,它的功能是避免啟動多次啟動同一個守護(hù)進(jìn)程。由于系統(tǒng)中本來不存在目錄 /var/run/mfs,因此需要手動創(chuàng)建 mkdir /var/run/mfs,然后更改其屬主 chown –R mfs:mfs /var/run/mfs 這樣MFS 服務(wù)就能對這個目錄有創(chuàng)建/寫入 mfsmaster.pid 文件的權(quán)限了。
            ◆     DATA_PATH = /usr/local/mfs/var/mfs 數(shù)據(jù)存放路徑,只元數(shù)據(jù)的存放路徑。那么這些數(shù)據(jù)都包括哪些呢?進(jìn)目錄看看,大致分3種類型的文件:
            這些文件也同樣要存儲在其他數(shù)據(jù)存儲服務(wù)器的相關(guān)目錄。
            ◆     MATOCS_LISTEN_PORT = 9420 MATOCS--master to chunkserver,即元數(shù)據(jù)服務(wù)器使用9420這個監(jiān)聽端口來接受數(shù)據(jù)存儲服務(wù)器chunkserver端的連接。
            ◆     MATOCU_LISTEN_PORT = 9421 元數(shù)據(jù)服務(wù)器在9421端口監(jiān)聽,用以接受客戶端對MFS進(jìn)行遠(yuǎn)程掛接(客戶端以mfsmount掛接MFS)
            ◆     其他部分看字面意思都不難理解。還有幾個與時間有關(guān)的數(shù)值,其單位是秒。
            這個配置文件,不必做修改就能工作了。
             
            (一)   元數(shù)據(jù)服務(wù)器master啟動
            元數(shù)據(jù)服務(wù)器可以單獨(dú)啟動,即使沒有任何數(shù)據(jù)存儲服務(wù)器(chunkserver)也是能正常工作的,因此當(dāng)我們安裝配置完MFS后,即可啟動它。執(zhí)行命令 /usr/local/mfs/sbin/mfsmaster start ,如果沒有意外,元數(shù)據(jù)庫服務(wù)器就應(yīng)該作為一個守護(hù)進(jìn)程運(yùn)行起來。現(xiàn)在我們可以通過3個方面來檢查一下MFS master的運(yùn)行狀況:
            (四)、關(guān)閉元數(shù)據(jù)服務(wù)器
            關(guān)閉元數(shù)據(jù)服務(wù)器,務(wù)必使用 /usr/local/mfs/sbin/mfsmaster –s 這種方式,如果直接使用kill殺死進(jìn)程,將導(dǎo)致下次啟動時出現(xiàn)找不到相關(guān)文件,而不能正常啟動服務(wù)器。這個一定要謹(jǐn)慎。當(dāng)然,如果發(fā)生了這個事情,還是可以通過 mfsmetastore 來恢復(fù)的。
             
            數(shù)據(jù)存儲chunkserver服務(wù)器的安裝配置
            數(shù)據(jù)存儲服務(wù)器chunkserver也是可以運(yùn)行在各種類unix平臺的,因此不再多說。一個MFS環(huán)境到底能集群多少服務(wù)器,作者的說法是上PB容量,個人建議,最好3臺以上;并且專門用來做存儲,不要把它跟master搞到一個機(jī)器(理論上沒問題,實(shí)現(xiàn)也是可以的,但這不是一個好策略)。因?yàn)槊總€數(shù)據(jù)存儲服務(wù)器的安裝和配置都是相同的,所以只需按照一個服務(wù)器的操作就可以了。
             
            (一)、安裝數(shù)據(jù)存儲服務(wù)器 chunkserver
            1、下載GNU源碼 wget [url]http://www.moosefs.com/files/mfs-1.5.12.tar.gz[/url]
            2、解包 tar zxvf mfs-1.5.12.tar.gz
            3、切換目錄 cd mfs-1.5.12
            4、創(chuàng)建用戶 useradd mfs –s /sbin/nologin 
            5、配置 ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs
            6、編譯安裝 make ; make install
             
            (二)配置數(shù)據(jù)存儲服務(wù)器chunkserver
            數(shù)據(jù)存儲服務(wù)器有2個配置服務(wù)器需要修改,一個是主配置文件 mfschunkserver.cfg ,另一個配置文件是 mfshdd.cfg。每個服務(wù)器用來分配給 MFS使用的空間最好是一個單獨(dú)的硬盤或者一個raid卷,最低要求是一個分區(qū)。作者舉的例子是創(chuàng)建一個大文件,然后掛接在本地,這不好,只能用來做實(shí)驗(yàn)了。

            1、修改配置文件 /usr/local/mfs/etc/mfschunkserver.cfg。下面是修改了的配置文件:

             
             
            這個配置文件里,沒有注釋符號“#”就是被修改過的項(xiàng)了,接下來是里面某些項(xiàng)的含義說明:
            ◆     MASTER_HOST = 192.168.0.19 元數(shù)據(jù)服務(wù)器的名稱或地址,可以是主機(jī)名,也可以是ip地址,只要數(shù)據(jù)存儲服務(wù)器能訪問到元數(shù)據(jù)服務(wù)器就行。
            ◆     LOCK_FILE = /var/run/mfs/mfschunkserver.pid 與元數(shù)據(jù)服務(wù)器master的處理完全相同.
            ◆     CSSERV_LISTEN_PORT = 9422 CSSERV—chunkserver,這個監(jiān)聽端口用于與其它數(shù)據(jù)存儲服務(wù)器間的連接,通常是數(shù)據(jù)復(fù)制。
            ◆     HDD_CONF_FILENAME = /usr/local/mfs/etc/mfshdd.cfg 分配給MFS使用的磁盤空間配置文件的位置。
            2、修改配置文件/usr/local/mfs/etc/mfshdd.cfg。在我的服務(wù)器上,只有一個1T的SATA硬盤,分了一個800G容量的分區(qū)來做為MFS存儲服務(wù)的組成部分。為了使mfs擁有寫目錄的權(quán)限,需要修改目錄的屬主。我的服務(wù)器的分區(qū)掛接點(diǎn)是 /data , 用 chown –R mfs:mfs /data 把屬主改變。因?yàn)槲业拿總€服務(wù)器只需貢獻(xiàn)一個分區(qū)做為MFS,因此配置文件只需要如下一行內(nèi)容就可以了:
            (四)   關(guān)閉數(shù)據(jù)存儲服務(wù)器
            跟元數(shù)據(jù)服務(wù)器master相似,執(zhí)行命令 /usr/local/mfs/sbin/mfschunkserver –s , chunkserver服務(wù)就停下來了。為了使系統(tǒng)重啟過程能自動啟動chunkserver 服務(wù),可以通過在/etc/rc.local文件追加行  /usr/local/mfs/sbin/mfschunkserver start 來達(dá)到這個目的(master的自動重啟處理也可同樣處理)。

             

            本文出自 “sery” 博客,請務(wù)必保留此出處http://sery.blog.51cto.com/10037/147756

            posted on 2010-02-08 09:11 小王 閱讀(939) 評論(0)  編輯 收藏 引用 所屬分類: 分布式系統(tǒng)
            99热精品久久只有精品| 日韩人妻无码一区二区三区久久99 | 青青草国产精品久久| 亚洲欧美日韩精品久久| 中文精品99久久国产 | 亚洲国产精品热久久| 人妻丰满?V无码久久不卡| 久久久一本精品99久久精品88| 中文字幕成人精品久久不卡| 亚洲AV无码久久精品色欲| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区 | 久久精品无码一区二区三区日韩| 久久久久久国产精品无码下载| 国产精品美女久久久久网| 国产69精品久久久久APP下载| 久久九九亚洲精品| 亚洲国产欧美国产综合久久| 久久av高潮av无码av喷吹| 成人国内精品久久久久一区| 青青草国产97免久久费观看| 国产精品嫩草影院久久| 国内精品久久久久久99蜜桃| 久久天天躁狠狠躁夜夜不卡| 久久久久人妻一区精品| 久久久综合九色合综国产| 久久精品无码一区二区无码| 久久久久久久久波多野高潮| 欧美日韩精品久久久免费观看| 88久久精品无码一区二区毛片| 丁香五月网久久综合| 99久久国语露脸精品国产| 国产精品美女久久久久| 久久人人妻人人爽人人爽| 伊人久久综合成人网| 亚洲精品无码久久久久sm| 97精品依人久久久大香线蕉97| 亚洲伊人久久大香线蕉综合图片 | 69国产成人综合久久精品| 无码精品久久久久久人妻中字| 狠狠色丁香久久婷婷综合| 久久99热这里只有精品国产|