上篇博文對 MooseFS 的結構,元件和特性做了相關介紹。那麼,本篇博文自然就是如何去部署實施 MooseFS 這樣一個分布式檔案系統喽。
廢話不多說,下面就是整個部署流程!
1、架構規劃
由于在整個MooseFS的架構中,預設是一台 Master,一台 Metalogger ,三台 Chunk Servers。是以,在本次實施規劃當中,我們就使用5台虛拟機來進行整個架構的實施部署。
其中 IP位址 的規劃情況如下:
1
2
3
4
5
<code>中繼資料伺服器 mfs-master-1 172.16.100.2</code>
<code>備份伺服器 mfs-metalogger 172.16.100.4</code>
<code>資料存儲伺服器 mfs-chunkserver-1 172.16.100.5</code>
<code>資料存儲伺服器 mfs-chunkserver-2 172.16.100.6</code>
<code>資料存儲伺服器 mfs-chunkserver-3 172.16.100.7</code>
由于這次測試空閑伺服器不夠,是以采用了虛拟機進行測試(好蛋疼)。但是在實際生産環境中,針對每個元件的伺服器選型問題,還是必須要注意的。這裡提供如下幾條建議:
1、Master Server
由于 Master Server 控制着整個 MooseFS 中的各個元件,并且負責對外提供服務,是以我們一定需要保證 Master Server 處于非常穩定的狀态。比如,針對 Master Server采用雙電源雙路配置,多塊磁盤使用RAID1或RAID10,進行備援。
前面也提到,Master Server 将所有通路的中繼資料資訊都放在記憶體當中,提供使用者通路。是以,當檔案數量增加的時候,記憶體使用量也會增加。根據官方的資料,100萬個檔案chunk資訊,大概需要300M的記憶體空間來進行。對于磁盤來講,Master Server 對磁盤的使用量不是很大,這個取決于所用的檔案和chunk塊的數目(記錄在主中繼資料檔案)以及對檔案作出操作的數量(記錄在中繼資料更改日志),一般情況下 20G 可以用來存儲資訊 2500 萬個檔案變更記錄長達50小時。由此看來,作為Master Server 記憶體量夠大才是重中之重。
2、Metalogger Server
在 MooseFS 的設計中,雖然 Metalogger Server 隻是用來收集 MooseFS 主伺服器的中繼資料(檔案更改的資訊的變化)的備份,對硬體的要求不應該高于主伺服器的備份。但是需要注意的是,如果在Master Server沒有做高可用的情況下,主伺服器當機之後,我們是需要啟用Metalogger Server 來頂替主伺服器的。是以,從這方面考慮,Metalogger Server 至少也是和 Master Server 的配置相同的,這點切記!
3、Chunk Server
針對 Chunk Server,它是真正存儲資料的載體。是以,我們對它的要求就簡單粗暴了很多,隻要保障硬碟的性能即可。如果是普通的業務,可以選擇多塊盤做RAID5即可,當然RAID0或RAID10都是可以的。
需要注意的是,由于 MooseFS 的預設負載均衡算法的問題,我建議所有 Chunk Server 的磁盤大小保持一緻。這樣子,我們才能保證 MooseFS 在使用過程中,各個 Chunk 節點的資料使用量是大緻一緻的。否則,磁盤容量大的 Chunk Server 使用量會加大,而磁盤容量小的 Chunk Server 的使用量會變小。切記,切記!
當然,如果公司員工有能力的話,也可以對 MooseFS 的負載均衡算法中每次對carry 變量的增加算法這一部分進行改進,來避免預設算法的缺點,使存儲資料能夠均衡分布在各個 Chunk Server 上。
2、部署 Master Server
1、編譯參數介紹
我們已經知道 MooseFS是由 4 個元件組成的,但是 MooseFS 提供的安裝包卻隻有一個,是以針對每個元件的不同設定,都需要我們在編譯之前的配置階段進行配置,比如安裝 Master Server 的時候,我們需要使用 --disable-mfschunkserver和--disable-mfsmount參數;安裝 Chunk Server 的時候,我們需要使用 --disable-mfsmaster 參數;安裝 Client 時,我們需要使用--disable-mfsmaster和--disable-mfschunkserver參數;如果是安裝 Metalogger Server ,我們使用和安裝 Master Server時的參數一樣即可。
下面,在部署 Master Server 之前,在詳細介紹下 MooseFS 安裝包的幾個關鍵的配置參數:
6
7
8
9
<code>--disable-mfsmaster </code><code># 不建立成管理伺服器(用于純節點的安裝)</code>
<code>--disable-mfschunkserver </code><code># 不建立成資料存儲chunkserver伺服器 </code>
<code>--disable-mfsmount </code><code># 不建立mfsmount和mfstools(如果用開發包安裝,他們會被預設建立的) </code>
<code>--</code><code>enable</code><code>-mfsmount </code><code># 确定安裝mfsmount和mfstools(如果 </code>
<code>--prefix=DIRECTORY </code><code># 鎖定安裝目錄(預設是/usr/local) </code>
<code>--sysconfdir=DIRECTORY </code><code># 選擇配置檔案目錄(預設是${prefix}/etc)) </code>
<code>--localstatedir=DIRECTORY </code><code># 選擇變量資料目錄(預設是${prefix}/var,MFS中繼資料被存儲在mfs的子目錄下,預設是${prefix}/var/mfs ) </code>
<code>--with-default-user </code><code># 運作守護程序的使用者,如果配置檔案中沒有設定使用者,預設為nobody使用者 </code>
<code>--with-default-group </code><code># 運作守護程序的使用者組,如果配置檔案中沒有設定使用者組,預設為nogroup使用者組</code>
2、安裝 Master Server
當我們安裝主伺服器mfs master時,由于我們的目的是安裝主伺服器,是以在配置過程中(./configure),可以選擇加參數取消安裝 Chunk server(使用--disable-mfschunkserver)以及 MooseFS 用戶端(使用--disable-mfsmount)。
下面,我倆出安裝 MooseFS 主要伺服器 Master Server 的詳細步驟:
10
11
12
<code>[root@mfs-master-1 ~]</code><code># yum install zlib-devel -y</code>
<code>[root@mfs-master-1 ~]</code><code># groupadd -g 1000 mfs</code>
<code>[root@mfs-master-1 ~]</code><code># useradd -u 1000 -g mfs -s /sbin/nologin mfs</code>
<code>[root@mfs-master-1 ~]</code><code># cd /usr/local/src</code>
<code>[root@mfs-master-1 src]</code><code># wget http://moosefs.org/tl_files/mfscode/mfs-1.6.27-5.tar.gz</code>
<code>[root@mfs-master-1 src]</code><code># tar zxf mfs-1.6.27-5.tar.gz</code>
<code>[root@mfs-master-1 src]</code><code># cd mfs-1.6.27</code>
<code>[root@mfs-master-1 mfs-1.6.27]</code><code># ./configure --prefix=/usr/local/mfs-1.6.27 --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount</code>
<code>[root@mfs-master-1 mfs-1.6.27]</code><code># make</code>
<code>[root@mfs-master-1 mfs-1.6.27]</code><code># make install</code>
<code>[root@mfs-master-1 mfs-1.6.27]</code><code># ln -s /usr/local/mfs-1.6.27 /usr/local/mfs [root@mfs-master-1 mfs-1.6.27]# ll -d /usr/local/mfs lrwxrwxrwx. 1 root root 21 Dec 28 23:28 /usr/local/mfs -> /usr/local/mfs-1.6.27</code>
<code>[root@mfs-master-1 mfs-1.6.27]</code><code># cd</code>
這裡再補一份快捷操作指令:
<code>yum </code><code>install</code> <code>zlib-devel -y</code>
<code>groupadd -g 1000 mfs;</code><code>useradd</code> <code>-u 1000 -g mfs mfs -s </code><code>/sbin/nologin</code>
<code>cd</code> <code>/usr/local/src</code> <code>&& wget http:</code><code>//moosefs</code><code>.org</code><code>/tl_files/mfscode/mfs-1</code><code>.6.27-5.</code><code>tar</code><code>.gz</code>
<code>tar</code> <code>zxf mfs-1.6.27-5.</code><code>tar</code><code>.gz && </code><code>cd</code> <code>mfs-1.6.27</code>
<code>.</code><code>/configure</code> <code>--prefix=</code><code>/usr/local/mfs-1</code><code>.6.27 --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount</code>
<code>make</code> <code>&& </code><code>make</code> <code>install</code>
<code>ln</code> <code>-s </code><code>/usr/local/mfs-1</code><code>.6.27 </code><code>/usr/local/mfs</code>
<code>ll -d </code><code>/usr/local/mfs</code>
<code>cd</code>
以上就是 MooseFS 的 Master Server 的安裝過程。Master Server 安裝成功以後,會在安裝目錄 /usr/local/mfs-1.6.27 下生成幾個目錄檔案。其中etc目錄為mfs配置檔案目錄,裡面有很多預設配置檔案樣例(結尾字尾為*.dist),後續我們将借用這些樣例作為 MFS 伺服器的目标配置檔案。
這裡來看下每個目錄的用途:
total 16
drwxr-xr-x. 3 root root 4096 Dec 29 00:10 etc # MFS 的配置檔案目錄,裡面放了很多模闆檔案
drwxr-xr-x. 2 root root 4096 Dec 29 00:10 sbin # MFS 指令路徑
drwxr-xr-x. 4 root root 4096 Dec 29 00:10 share # MFS 幫助檔案目錄
drwxr-xr-x. 3 root root 4096 Dec 29 00:10 var # MFS 資料及日志目錄,例如:metadata 資料
提示:etc和var需要備份。
注意:
etc和var目錄裡面存放的是配置檔案和MFS的資料結構資訊,是以請及時做好備份,防止災難損毀。後面做了 Master Server雙機之後,就可以解決這個問題。
3、配置 Master Server
上面簡單看了 MooseFS 的目錄結構,其中 Master Server 的配置檔案是位于/MooseFS根目錄/etc 目錄下。在該目錄下有很多模闆配置檔案,包括 Master,Metalogger、ChunkServer等,有關 Master 的配置檔案主要有兩個,一個是 mfsmaster.cfg,另一個是 mfsexports.cfg。其中,mfsmaster.cfg 是主配置檔案,mfsexports.cfg 用來指定那些用戶端主機可以遠端挂載 MooseFS 檔案系統以及賦予挂載用戶端什麼樣的通路權限。
現在,我們去掉 Master 相關的兩個配置檔案的注釋。
需要注意的是,這裡一定要使用 cp,而不是 mv。這樣,在操作之前保留原檔案,一方面友善更改後對比變化,另一方面也修改出錯後的復原。
下面列出配置步驟以及每個配置檔案的詳解!
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<code>[root@mfs-master-1 ~]</code><code># /usr/local/mfs/etc/mfs</code>
<code>[root@mfs-master-1 mfs]</code><code># cp mfsexports.cfg.dist mfsexports.cfg </code>
<code>[root@mfs-master-1 mfs]</code><code># cp mfsmaster.cfg.dist mfsmaster.cfg</code>
<code>這裡我們先來看下主配置檔案mfsmaster.cfg</code>
<code>[root@mfs-master-1 ~]</code><code># cat /usr/local/mfs/etc/mfs/mfsmaster.cfg </code>
<code># WORKING_USER = mfs # 運作 master server 的使用者</code>
<code># WORKING_GROUP = mfs # 運作 master server 的組</code>
<code># SYSLOG_IDENT = mfsmaster # 是master server在syslog中的辨別,也就是說明這是由master serve産生的</code>
<code># LOCK_MEMORY = 0 # 是否執行mlockall()以避免mfsmaster 程序溢出(預設為0)</code>
<code># NICE_LEVEL = -19 # 運作的優先級(如果可以預設是 -19; 注意: 程序必須是用root啟動)</code>
<code># EXPORTS_FILENAME = /usr/local/mfs-1.6.27/etc/mfs/mfsexports.cfg # 被挂載目錄及其權限控制檔案的存放路徑</code>
<code># TOPOLOGY_FILENAME = /usr/local/mfs-1.6.27/etc/mfs/mfstopology.cfg # mfstopology.cfg檔案的存放路徑</code>
<code># DATA_PATH = /usr/local/mfs-1.6.27/var/mfs # 資料存放路徑,此目錄下大緻有三類檔案,changelog,sessions和stats;</code>
<code># BACK_LOGS = 50 # metadata的改變log檔案數目(預設是 50)</code>
<code># BACK_META_KEEP_PREVIOUS = 1 # metadata的預設儲存份數(預設為1)</code>
<code># REPLICATIONS_DELAY_INIT = 300 # 延遲複制的時間(預設是300s)</code>
<code># REPLICATIONS_DELAY_DISCONNECT = 3600 # chunkserver斷開的複制延遲(預設是3600)</code>
<code># MATOML_LISTEN_HOST = * # metalogger監聽的IP位址(預設是*,代表任何IP)</code>
<code># MATOML_LISTEN_PORT = 9419 # metalogger監聽的端口位址(預設是9419)</code>
<code># MATOML_LOG_PRESERVE_SECONDS = 600</code>
<code># MATOCS_LISTEN_HOST = * # 用于chunkserver連接配接的IP位址(預設是*,代表任何IP)</code>
<code># MATOCS_LISTEN_PORT = 9420 # 用于chunkserver連接配接的端口位址(預設是9420)</code>
<code># MATOCL_LISTEN_HOST = * # 用于用戶端挂接連接配接的IP位址(預設是*,代表任何IP)</code>
<code># MATOCL_LISTEN_PORT = 9421 # 用于用戶端挂接連接配接的端口位址(預設是9421)</code>
<code># CHUNKS_LOOP_MAX_CPS = 100000 # chunks的最大回環頻率(預設是:100000秒)</code>
<code># CHUNKS_LOOP_MIN_TIME = 300 # chunks的最小回環頻率(預設是:300秒)</code>
<code># CHUNKS_SOFT_DEL_LIMIT = 10 # 一個chunkserver中soft最大的可删除數量為10個</code>
<code># CHUNKS_HARD_DEL_LIMIT = 25 # 一個chuankserver中hard最大的可删除數量為25個</code>
<code># CHUNKS_WRITE_REP_LIMIT = 2 # 在一個循環裡複制到一個chunkserver的最大chunk數目(預設是1)</code>
<code># CHUNKS_READ_REP_LIMIT = 10 # 在一個循環裡從一個chunkserver複制的最大chunk數目(預設是5)</code>
<code># ACCEPTABLE_DIFFERENCE = 0.1 # 每個chunkserver上空間使用率的最大差別(預設為0.01即1%)</code>
<code># SESSION_SUSTAIN_TIME = 86400 # 用戶端會話逾時時間為86400秒,即1天</code>
<code># REJECT_OLD_CLIENTS = 0 # 彈出低于1.6.0的用戶端挂接(0或1,預設是0)</code>
<code># deprecated: </code>
<code># CHUNKS_DEL_LIMIT - use CHUNKS_SOFT_DEL_LIMIT instead </code>
<code># LOCK_FILE - lock system has been changed, and this option is used only to search for old lockfile</code>
該配置檔案預設全部都為注釋。mfs官方預設這樣規定的,每一個注釋的配置都是mfs此項配置的預設值。其實,我們linux中很多配置檔案的設計風格都是這樣子的,比如sshd_config.如果打算更改這些配置檔案中某些項的參數,隻需要取消注釋,并且更改對應的參數即可。
針對master來講,mfsmaster.cfg的預設配置無需更改即可投入使用。
下面,就是權限控制配置檔案mfsexports.cfg。
該配置檔案制定了哪些用戶端可以遠端挂接MFS檔案系統,以及授予挂載用戶端什麼樣的通路權限。例如,我們制定隻有172.16.0.0/24網段的主機可以讀寫模式通路MFS的整個共享結構資源(/)。在配置檔案mfsexports.cfg中寫入如下資訊即可。
<code>[root@mfs-master-1 ~]</code><code># cat /usr/local/mfs/etc/mfs/mfsexports.cfg</code>
<code>* / rw,alldirs,mapall=mfs:mfs,password=redhat</code>
<code>* . rw </code><code># 如果需要使用 moosefs的資源回收筒功能,請開啟此行。如果不使用,關閉即可</code>
這裡,我列出該檔案的配置規範:
mfsexports.cfg 檔案中,每一個條目就是一個配置規則,而每一個條目又分為三個部分,其中第一部分是mfs用戶端的ip位址或位址範圍,第二部分是被挂載的目錄,第三個部分用來設定mfs用戶端可以擁有的通路權限。
第一部分:mfs用戶端的ip位址或位址範圍
位址可以指定的幾種表現形式:
<code> </code><code>* 所有的 I P 位址</code>
<code> </code><code>n.n.n.n 單個 I P 位址</code>
<code> </code><code>n.n.n.n</code><code>/b</code> <code>I P 網絡位址/位數掩碼</code>
<code> </code><code>n.n.n.n</code><code>/m</code><code>.m.m.m I P 網絡位址/子網路遮罩</code>
<code> </code><code>f.f.f.f-t.t.t.t I P 段</code>
第二部分:被挂載的目錄
目錄部分需要注意兩點:
<code> </code><code>/ 辨別MooseFS根</code>
<code> </code><code>. 表示MFSMETA檔案系統</code>
第三部分:設定mfs用戶端可以擁有的通路權限
權限部分:
<code> </code><code>ro 隻讀模式共享</code>
<code> </code><code>rw 讀寫模式共享</code>
<code> </code><code>alldirs 允許挂載任何指定的子目錄</code>
<code> </code><code>maproot 映射為root,還是指定的使用者</code>
<code> </code><code>password 指定用戶端密碼</code>
OK,以上兩個配置檔案配置完畢之後,我們還需要注意一個檔案。在 Master Server 首次安裝之後,會在 /usr/local/mfs/var/mfs/ 目錄下生成一個名為 metadata.mfs.empty 的中繼資料metadata檔案,該檔案預設是為空的。(當你整個MooseFS配置好之後,它就有資料了)
Master Server 的運作必須有metadata.mfs,而這個檔案就是從metadata.mfs.empty更名而來的。當然,這個更名操作需要我們自己手動來完成。操作如下:
<code>[root@mfs-master-1 mfs]</code><code># cp /usr/local/mfs/var/mfs/metadata.mfs.empty /usr/local/mfs/var/mfs/metadata.mfs</code>
4、啟動 Master Server
在 MooseFS 的架構中,Master Server 是不依附于其它幾個元件的,它可以單獨啟動。但是需要注意,其它元件必須要等 Master Server 起來之後才能啟動!切記!!!
在通過上面的簡單配置之後,我們就可以啟動 Master Server 了!
下面列出啟動和檢查過程。
<code>[root@mfs-master-1 mfs]</code><code># /usr/local/mfs/sbin/mfsmaster start # 啟動mfs主伺服器</code>
<code>working directory: </code><code>/usr/local/mfs-1</code><code>.6.27</code><code>/var/mfs</code>
<code>lockfile created and locked </code>
<code>initializing mfsmaster modules ... </code>
<code>loading sessions ... </code><code>file</code> <code>not found </code>
<code>if</code> <code>it is not fresh installation </code><code>then</code> <code>you have to restart all active mounts !!! </code>
<code>exports </code><code>file</code> <code>has been loaded </code>
<code>mfstopology configuration </code><code>file</code> <code>(</code><code>/usr/local/mfs-1</code><code>.6.27</code><code>/etc/mfstopology</code><code>.cfg) not found - using defaults </code>
<code>loading metadata ... </code>
<code>create new empty filesystemmetadata </code><code>file</code> <code>has been loaded </code>
<code>no charts data </code><code>file</code> <code>- initializing empty charts </code>
<code>master <-> metaloggers module: listen on *:9419 </code>
<code>master <-> chunkservers module: listen on *:9420 </code>
<code>main master server module: listen on *:9421 </code>
<code>mfsmaster daemon initialized properly</code>
下面進行檢查,針對 Master Server 的啟動檢查主要有3個方面,第一看程序,第二看端口,第三看日志。
<code>[root@mfs-master-1 ~]</code><code># ps -ef|grep mfs # 檢視程序是否正常</code>
<code>mfs 28867 1 0 19:44 ? 00:00:00 </code><code>/etc/ha</code><code>.d</code><code>/resource</code><code>.d</code><code>/mfsmaster</code> <code>start </code>
<code>root 29087 26249 0 19:48 pts</code><code>/1</code> <code>00:00:00 </code><code>grep</code> <code>mfs</code>
<code>[root@mfs-master-1 ~]</code><code># netstat -lnt |grep 94 # 檢視端口看是否起來</code>
<code>tcp 0 0 0.0.0.0:9419 0.0.0.0:* LISTEN </code>
<code>tcp 0 0 0.0.0.0:9420 0.0.0.0:* LISTEN </code>
<code>tcp 0 0 0.0.0.0:9421 0.0.0.0:* LISTEN</code>
開啟 master 的日志情況
<code>[root@mfs-master-1 ~]</code><code># tailf /var/log/messages # 觀察 Master Server 啟動時的日志變化</code>
<code>Dec 31 19:52:10 mfs-master-1 mfsmaster[29112]: </code><code>set</code> <code>gid to 1000</code>
<code>Dec 31 19:52:10 mfs-master-1 mfsmaster[29112]: </code><code>set</code> <code>uid to 1000</code>
<code>Dec 31 19:52:10 mfs-master-1 mfsmaster[29112]: sessions have been loaded</code>
<code>Dec 31 19:52:10 mfs-master-1 mfsmaster[29112]: exports </code><code>file</code> <code>has been loaded</code>
<code>Dec 31 19:52:10 mfs-master-1 mfsmaster[29112]: mfstopology configuration </code><code>file</code> <code>(</code><code>/usr/local/mfs-1</code><code>.6.27</code><code>/etc/mfstopology</code><code>.cfg) not found - network topology not defined</code>
<code>Dec 31 19:52:10 mfs-master-1 mfsmaster[29112]: stats </code><code>file</code> <code>has been loaded</code>
<code>Dec 31 19:52:10 mfs-master-1 mfsmaster[29112]: master <-> metaloggers module: listen on *:9419</code>
<code>Dec 31 19:52:10 mfs-master-1 mfsmaster[29112]: master <-> chunkservers module: listen on *:9420</code>
<code>Dec 31 19:52:10 mfs-master-1 mfsmaster[29112]: main master server module: listen on *:9421</code>
<code>Dec 31 19:52:10 mfs-master-1 mfsmaster[29112]: </code><code>open</code> <code>files limit: 5000</code>
5、停止 Master Server
Master Server 服務和其它普通服務不一樣,它千萬不能使用 kill -9 去強制殺掉程序。每次非正常關閉服務,都需要使用 MooseFS 自帶的恢複工具進行資料恢複,非常悲劇。是以,安全的關閉 Master Server 是非常重要。
<code>[root@mfs-master-1 ~]</code><code># /usr/local/mfs/sbin/mfsmaster stop </code>
<code>sending SIGTERM to lock owner (pid:29112) waiting </code><code>for</code> <code>termination ... terminated</code>
<code>[root@mfs-master-1 ~]</code><code># tailf /var/log/messages # 觀察 Master Server 關閉時的日志變化</code>
<code>Dec 31 19:53:16 mfs-master-1 mfsmaster[29113]: </code><code>set</code> <code>gid to 1000</code>
<code>Dec 31 19:53:16 mfs-master-1 mfsmaster[29113]: </code><code>set</code> <code>uid to 1000</code>
<code>Dec 31 19:53:16 mfs-master-1 mfsmaster[29112]: terminate signal received</code>
<code>Dec 31 19:53:16 mfs-master-1 mfsmaster[29112]: main master server module: closing *:9421</code>
<code>Dec 31 19:53:16 mfs-master-1 mfsmaster[29112]: master <-> chunkservers module: closing *:9420</code>
<code>Dec 31 19:53:16 mfs-master-1 mfsmaster[29112]: master <-> metaloggers module: closing *:9419</code>
6、掃尾操作
a、配置環境變量
為了友善操作 MooseFS,我們需要把他的sbin目錄加入到系統的PATH變量中去。
<code>[root@mfs-metalogger ~]</code><code># echo '# add moosefs to the path variable' >> /etc/profile </code>
<code>[root@mfs-metalogger ~]</code><code># echo 'PATH=/usr/local/mfs/sbin/:$PATH' >> /etc/profile </code>
<code>[root@mfs-metalogger ~]</code><code># tail -2 /etc/profile # add moosefs to the path variable PATH=/usr/local/mfs/sbin/:$PATH</code>
<code>[root@mfs-metalogger ~]</code><code># source /etc/profile</code>
b、配置開機自啟動
開機自啟動的目的,這裡就不多解釋了。
<code>[root@mfs-metalogger ~]</code><code># echo '# Configure the mfsmaster service startup' >> /etc/rc.local </code>
<code>[root@mfs-metalogger ~]</code><code># echo '/usr/local/mfs/sbin/mfsmaster start' >> /etc/rc.local </code>
<code>[root@mfs-metalogger ~]</code><code># tail -2 /etc/rc.local </code>
<code># Configure the metalogger service startup </code>
<code>/usr/local/mfs/sbin/mfsmetalogger</code> <code>start</code>
以上,就是 Master Server 部署的全部操作。
3、部署 Metalogger Server
1、安裝 Metalogger Server
前面已經介紹了,Metalogger Server 是 Master Server 的備份伺服器。是以,Metalogger Server 的安裝步驟和 Master Server 的安裝步驟相同。并且,最好使用和 Master Server 配置一樣的伺服器來做 Metalogger Server。這樣,一旦主伺服器master當機失效,我們隻要導入備份資訊changelogs到中繼資料檔案,備份伺服器可直接接替故障的master繼續提供服務。
這裡僅列出安裝步驟:
<code>[root@mfs-metalogger-1 ~]</code><code># yum install zlib-devel -y</code>
<code>[root@mfs-metalogger-1 ~]</code><code># groupadd -g 1000 mfs</code>
<code>[root@mfs-metalogger-1 ~]</code><code># useradd -u 1000 -g mfs mfs -s /sbin/nologin</code>
<code>[root@mfs-metalogger-1 ~]</code><code># cd /usr/local/src</code>
<code>[root@mfs-metalogger-1 src]</code><code># wget http://moosefs.org/tl_files/mfscode/mfs-1.6.27-5.tar.gz</code>
<code>[root@mfs-metalogger-1 src]</code><code># tar zxf mfs-1.6.27-5.tar.gz</code>
<code>[root@mfs-metalogger-1 src]</code><code># cd mfs-1.6.27</code>
<code>[root@mfs-metalogger-1 mfs-1.6.27]</code><code># ./configure --prefix=/usr/local/mfs-1.6.27 --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount</code>
<code>[root@mfs-metalogger-1 mfs-1.6.27]</code><code># make</code>
<code>[root@mfs-metalogger-1 mfs-1.6.27]</code><code># make install</code>
<code>[root@mfs-metalogger-1 mfs-1.6.27]</code><code># ln -s /usr/local/mfs-1.6.27 /usr/local/mfs </code>
<code>[root@mfs-metalogger-1 mfs-1.6.27]</code><code># ll -d /usr/local/mfs </code>
<code>lrwxrwxrwx. 1 root root 21 Dec 28 23:28 </code><code>/usr/local/mfs</code> <code>-> </code><code>/usr/local/mfs-1</code><code>.6.27</code>
<code>[root@mfs-metalogger-1 mfs-1.6.27]</code><code># cd</code>
2、配置 Metalogger Server
雖然,Metalogger Server 的安裝步驟和 Master Server 一樣,但是配置檔案肯定是有所差别的。這裡将介紹,如何配置Metalogger Server。
<code>[root@mfs-metalogger ~]</code><code># cd /usr/local/mfs/etc/mfs/ </code>
<code>[root@mfs-metalogger mfs]</code><code># cp mfsmetalogger.cfg.dist mfsmetalogger.cfg</code>
<code>[root@mfs-metalogger mfs]</code><code># ll mfsmetalogger.cfg </code>
<code>-rw-r--r--. 1 root root 423 Dec 28 23:55 mfsmetalogger.cfg</code>
<code>[root@mfs-metalogger mfs]</code><code># cat mfsmetalogger.cfg </code>
<code># WORKING_USER = mfs </code>
<code># WORKING_GROUP = mfs </code>
<code># SYSLOG_IDENT = mfsmetalogger </code>
<code># LOCK_MEMORY = 0 </code>
<code># NICE_LEVEL = -19 </code>
<code># DATA_PATH = /usr/local/mfs-1.6.27/var/mfs </code>
<code># BACK_LOGS = 50 </code>
<code># BACK_META_KEEP_PREVIOUS = 3 </code>
<code># META_DOWNLOAD_FREQ = 24 # 中繼資料備份檔案下載下傳請求頻率,預設為24小時,即每個一天從中繼資料伺服器下載下傳一個metadata.mfs.back檔案。當中繼資料伺服器關閉或者出故障時,metadata.mfs.back檔案将小時,那麼要恢複整個mfs,則需要從metalogger伺服器取得該檔案。請注意該檔案,它與日志檔案在一起,才能夠恢複整個被損壞的分布式檔案系統。</code>
<code># MASTER_RECONNECTION_DELAY = 5 </code>
<code>MASTER_HOST = 172.16.100.1 </code><code># 這裡是需要連接配接的 mfs master server 的位址</code>
<code>#MASTER_PORT = 9419 # 這裡是需要連接配接的 mfs master server 的端口</code>
<code># MASTER_TIMEOUT = 60 </code>
<code># deprecated, to be removed in MooseFS 1.7 </code>
<code># LOCK_FILE = /var/run/mfs/mfsmetalogger.lock</code>
這個檔案中需要修改的是MASTER_HOST變量,這個變量的值是 Master Server 的 IP 位址。如果對 Master Server 做了 host 解析也可以不改任何内容。
這裡需要将它修改為如下參數:
MASTER_HOST = 172.16.100.1 # 這裡是需要連接配接的 mfs master server 的位址
3、啟動 Metalogger Server
啟動 Metalogger Server 之前,一定要確定 Master server 的服務是正常啟動的。
<code>[root@mfs-metalogger ~]</code><code># nc -w 2 172.16.100.2 -z 9419 # 從輸出可以看到,Master Server 已經正常啟動</code>
<code>Connection to 172.16.100.2 9419 port [tcp/*] succeeded!</code>
<code>[root@mfs-metalogger ~]</code><code># /usr/local/mfs/sbin/mfsmetalogger start # 啟動 Metalogger Server</code>
<code>initializing mfsmetalogger modules ... </code>
<code>mfsmetalogger daemon initialized properly</code>
<code>[root@mfs-metalogger ~]</code><code># netstat -lantp|grep metalogger # 檢視程序 </code>
<code>tcp 0 0 172.16.100.4:50193 172.16.100.1:9419 ESTABLISHED 17201</code><code>/mfsmetalogger</code>
<code>[root@mfs-metalogger ~]</code><code># tailf /var/log/messages # 開啟 Metalogger Server 時的日志情況</code>
<code>Dec 30 16:44:25 localhost mfsmetalogger[17275]: </code><code>set</code> <code>gid to 1000</code>
<code>Dec 30 16:44:25 localhost mfsmetalogger[17275]: </code><code>set</code> <code>uid to 1000</code>
<code>Dec 30 16:44:26 localhost mfsmetalogger[17275]: connecting ...</code>
<code>Dec 30 16:44:26 localhost mfsmetalogger[17275]: </code><code>open</code> <code>files limit: 5000</code>
<code>Dec 30 16:44:26 localhost mfsmetalogger[17275]: connected to Master</code>
<code>Dec 30 16:44:26 localhost mfsmetalogger[17275]: metadata downloaded 2461B</code><code>/0</code><code>.002353s (1.046 MB</code><code>/s</code><code>)</code>
<code>Dec 30 16:44:26 localhost mfsmetalogger[17275]: changelog_0 downloaded 0B</code><code>/0</code><code>.000001s (0.000 MB</code><code>/s</code><code>)</code>
<code>Dec 30 16:44:26 localhost mfsmetalogger[17275]: changelog_1 downloaded 0B</code><code>/0</code><code>.000001s (0.000 MB</code><code>/s</code><code>)</code>
<code>Dec 30 16:44:26 localhost mfsmetalogger[17275]: sessions downloaded 547B</code><code>/0</code><code>.001027s (0.533 MB</code><code>/s</code><code>)</code>
<code>Dec 30 16:44:28 localhost kernel: nfs: server 172.16.100.3 not responding, timed out</code>
<code>去 Master Server 上進行檢查:</code>
<code>[root@mfs-master-1 ~]</code><code># netstat -lantp|grep 9419 </code>
<code>tcp 0 0 0.0.0.0:9419 0.0.0.0:* LISTEN 25665</code><code>/mfsmaster</code>
<code>tcp 0 0 172.16.100.1:9419 172.16.100.4:50194 ESTABLISHED 25665</code><code>/mfsmaster</code>
我們可以看到Metalogger Server已經和Master Server的9419端口建立了長連接配接
另外,在上面的日志中,我們可以看到他在下載下傳一些檔案,這些檔案就是之前介紹過的Master Server上的檔案,我們可以在以下目錄看到這些檔案。
<code>[root@mfs-metalogger ~]</code><code># ll /usr/local/mfs/var/mfs/ </code>
<code>total 8 </code>
<code>-rw-r-----. 1 mfs mfs 0 Dec 30 16:26 changelog_ml_back.0.mfs </code>
<code>-rw-r-----. 1 mfs mfs 0 Dec 30 16:26 changelog_ml_back.1.mfs </code>
<code>-rw-r-----. 1 mfs mfs 2461 Dec 30 16:26 metadata_ml.mfs.back </code>
<code>-rw-r-----. 1 mfs mfs 547 Dec 30 16:27 sessions_ml.mfs</code>
最後,在貼出 Metalogger Server 運作時的日志輸出情況:
<code>[root@mfs-metalogger ~]</code><code># tailf /var/log/messages </code>
<code>Dec 30 16:45:00 localhost mfsmetalogger[17275]: sessions downloaded 547B</code><code>/0</code><code>.000842s (0.650 MB</code><code>/s</code><code>)</code>
<code>Dec 30 16:46:00 localhost mfsmetalogger[17275]: sessions downloaded 547B</code><code>/0</code><code>.000428s (1.278 MB</code><code>/s</code><code>)</code>
<code>Dec 30 16:47:00 localhost mfsmetalogger[17275]: sessions downloaded 547B</code><code>/0</code><code>.000551s (0.993 MB</code><code>/s</code><code>)</code>
<code>Dec 30 16:48:00 localhost mfsmetalogger[17275]: sessions downloaded 547B</code><code>/0</code><code>.001091s (0.501 MB</code><code>/s</code><code>)</code>
<code>Dec 30 16:49:00 localhost mfsmetalogger[17275]: sessions downloaded 547B</code><code>/0</code><code>.000471s (1.161 MB</code><code>/s</code><code>)</code>
4、關閉 Metalogger Server
<code>[root@mfs-metalogger ~]</code><code># /usr/local/mfs/sbin/mfsmetalogger stop </code>
<code>sending SIGTERM to lock owner (pid:17201) </code>
<code>waiting </code><code>for</code> <code>termination ... terminated</code>
<code>[root@mfs-metalogger ~]</code><code># tailf /var/log/messages # 停止 Metalogger Server 時的日志情況 </code>
<code>Dec 30 16:43:42 localhost mfsmetalogger[17272]: </code><code>set</code> <code>gid to 1000</code>
<code>Dec 30 16:43:42 localhost mfsmetalogger[17272]: </code><code>set</code> <code>uid to 1000</code>
<code>Dec 30 16:43:42 localhost mfsmetalogger[17271]: terminate signal received</code>
<code>此時 Master Server 上會有提示:</code>
<code>[root@mfs-master-1 ~]</code><code># tailf /var/log/messages</code>
<code>Dec 31 10:56:28 mfs-master-1 mfsmaster[25665]: connection with ML(172.16.100.4) has been closed by peer</code>
5、掃尾操作
a、配置全局變量
<code>[root@mfs-metalogger ~]</code><code># tail -2 /etc/profile </code>
<code># add moosefs to the path variable </code>
<code>PATH=</code><code>/usr/local/mfs/sbin/</code><code>:$PATH</code>
<code>[root@mfs-metalogger ~]</code><code># echo '# Configure the metalogger service startup' >> /etc/rc.local </code>
<code>[root@mfs-metalogger ~]</code><code># echo '/usr/local/mfs/sbin/mfsmetalogger start' >> /etc/rc.local </code>
4、部署 Chunk Servers
1、安裝 Chunk Servers
資料存儲伺服器也被稱為 Chunk Server。在 MooseFS 檔案系統中,每個 Chunk Server 的配置是完全相同的。是以,這裡我們僅以一台 Chunk Server 的安裝為例進行示範,其它兩台的安裝步驟這裡不再複述。
<code>[root@mfs-chunkserver-1 ~]</code><code># yum install zlib-devel -y</code>
<code>[root@mfs-chunkserver-1 ~]</code><code># groupadd -g 1000 mfs</code>
<code>[root@mfs-chunkserver-1 ~]</code><code># useradd -u 1000 -g mfs mfs -s /sbin/nologin</code>
<code>[root@mfs-chunkserver-1 ~]</code><code># cd /usr/local/src</code>
<code>[root@mfs-chunkserver-1 src]</code><code># wget http://moosefs.org/tl_files/mfscode/mfs-1.6.27-5.tar.gz</code>
<code>[root@mfs-chunkserver-1 src]</code><code># tar zxf mfs-1.6.27-5.tar.gz</code>
<code>[root@mfs-chunkserver-1 src]</code><code># cd mfs-1.6.27</code>
<code>[root@mfs-chunkserver-1 mfs-1.6.27]</code><code># ./configure --prefix=/usr/local/mfs-1.6.27 --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfsmount</code>
<code>[root@mfs-chunkserver-1 mfs-1.6.27]</code><code># make</code>
<code>[root@mfs-chunkserver-1 mfs-1.6.27]</code><code># make install</code>
<code>[root@mfs-chunkserver-1 mfs-1.6.27]</code><code># ln -s /usr/local/mfs-1.6.27 /usr/local/mfs </code>
<code>[root@mfs-chunkserver-1 mfs-1.6.27]</code><code># ll -d /usr/local/mfs </code>
<code>[root@mfs-chunkserver-1 mfs-1.6.27]</code><code># cd</code>
2、配置 Chunk Servers
配置 Chunk Server 需要兩個配置檔案,分别是 mfschunkserver.cfg 和 mfshdd.cfg 。其中,mfschunkserver.cfg 是主配置檔案,而 mfshdd.cfg 是伺服器用來配置設定給 MFS 使用的空間的配置檔案,最好是一個單獨的磁盤或者一個raid卷,最低要求是一個分區。
在每個mfs chunk server 上的配置及操作如下:
<code>[root@mfs-chunkserver-1 ~]</code><code># cd /usr/local/mfs/etc/mfs/ </code>
<code>[root@mfs-chunkserver-1 mfs]</code><code># cp mfschunkserver.cfg.dist mfschunkserver.cfg </code>
<code>[root@mfs-chunkserver-1 mfs]</code><code># cp mfshdd.cfg.dist mfshdd.cfg</code>
<code>[root@mfs-chunkserver-1 mfs]</code><code># grep -v '^$' mfschunkserver.cfg </code>
<code># SYSLOG_IDENT = mfschunkserver </code>
<code># BIND_HOST = * </code>
<code>MASTER_HOST = mfsmaster </code><code># 該位址為 Master Server 的IP位址或者主機名</code>
<code># MASTER_PORT = 9420 </code>
<code># CSSERV_LISTEN_HOST = *</code>
<code># CSSERV_LISTEN_PORT = 9422 # 該端口用于與其它chunk server之間的通信,主要是資料複制</code>
<code># HDD_CONF_FILENAME = /usr/local/mfs-1.6.27/etc/mfs/mfshdd.cfg </code>
<code># HDD_TEST_FREQ = 10 </code>
<code># LOCK_FILE = /var/run/mfs/mfschunkserver.lock </code>
<code># CSSERV_TIMEOUT = 5</code>
在正常的使用過程中,我們隻需要修改一個 MASTER_HOST參數,将該參數設定為我們 Master Server 的IP位址或者主機名即可。
配置mfshdd.cfg主配置檔案
mfshdd.cfg該檔案用來設定你将 Chunk Server 的哪個目錄共享出去給 Master Server進行管理。當然,雖然這裡填寫的是共享的目錄,但是這個目錄後面最好是一個單獨的分區。分區的相關操作,這裡就不占篇幅了。
<code>[root@mfs-chunkserver-1 ~]</code><code># cat /usr/local/mfs/etc/mfs/mfshdd.cfg </code>
<code>/mfsdata</code>
3、啟動 Chunk Server
和 Metalogger Server 一樣,在啟動 chunk servers之前,必須要先確定 Master Server 的服務是正常啟動的,否則啟動會報錯。
<code>[root@mfs-chunkserver-1 ~]</code><code># nc -w 2 172.16.100.2 -z 9420 </code>
<code>Connection to 172.16.100.2 9420 port [tcp/*] succeeded!</code>
<code>[root@mfs-chunkserver-1 ~]</code><code># /usr/local/mfs/sbin/mfschunkserver start </code>
<code>initializing mfschunkserver modules ... </code>
<code>hdd space manager: path to scan: </code><code>/mfsdata/</code>
<code>hdd space manager: start background hdd scanning (searching </code><code>for</code> <code>available chunks) </code>
<code>main server module: listen on *:9422 </code>
<code>stats </code><code>file</code> <code>has been loaded </code>
<code>mfschunkserver daemon initialized properly</code>
<code>[root@mfs-chunkserver-1 ~]</code><code># netstat -lantp|grep 9420 </code>
<code>tcp 0 0 172.16.100.5:59486 172.16.100.1:9420 ESTABLISHED 7825</code><code>/mfschunkserver</code>
<code>[root@mfs-chunkserver-1 ~]</code><code># tailf /var/log/messages # 啟動 Chunk Server 時的日志變化</code>
<code>Dec 30 19:05:34 mfs-chunkserver-1 mfschunkserver[7825]: </code><code>set</code> <code>gid to 1000</code>
<code>Dec 30 19:05:34 mfs-chunkserver-1 mfschunkserver[7825]: </code><code>set</code> <code>uid to 1000</code>
<code>Dec 30 19:05:34 mfs-chunkserver-1 mfschunkserver[7825]: hdd space manager: folder </code><code>/mfsdata/</code> <code>will be scanned</code>
<code>Dec 30 19:05:34 mfs-chunkserver-1 mfschunkserver[7825]: main server module: listen on *:9422</code>
<code>Dec 30 19:05:34 mfs-chunkserver-1 mfschunkserver[7825]: connecting ...</code>
<code>Dec 30 19:05:34 mfs-chunkserver-1 mfschunkserver[7825]: stats </code><code>file</code> <code>has been loaded</code>
<code>Dec 30 19:05:34 mfs-chunkserver-1 mfschunkserver[7825]: </code><code>open</code> <code>files limit: 10000</code>
<code>Dec 30 19:05:34 mfs-chunkserver-1 mfschunkserver[7825]: connected to Master</code>
<code>Dec 30 19:05:34 mfs-chunkserver-1 mfschunkserver[7825]: scanning folder </code><code>/mfsdata/</code><code>: complete (0s)</code>
<code>Dec 30 19:05:43 mfs-chunkserver-1 mfschunkserver[7825]: testing chunk: </code><code>/mfsdata/D0/chunk_00000000000000D0_00000001</code><code>.mfs</code>
<code>Dec 30 19:05:53 mfs-chunkserver-1 mfschunkserver[7825]: testing chunk: </code><code>/mfsdata/CD/chunk_00000000000000CD_00000001</code><code>.mfs</code>
檢視 Master Server 上的變化:
<code>[root@mfs-master-1 ~]</code><code># tailf /var/log/messages # 啟動 Chunk Server 時的Master Server 的日志變化</code>
<code>Dec 31 11:31:47 mfs-master-1 mfsmaster[26053]: chunkserver register begin (packet version: 5) - ip: 172.16.100.5, port: 9422</code>
<code>Dec 31 11:31:47 mfs-master-1 mfsmaster[26053]: chunkserver register end (packet version: 5) - ip: 172.16.100.5, port: 9422, usedspace: 0 (0.00 GiB), totalspace: 0 (0.00 GiB)</code>
<code>[root@mfs-master-1 ~]</code><code># netstat -lantp|grep 9420 </code>
<code>tcp 0 0 0.0.0.0:9420 0.0.0.0:* LISTEN 26053</code><code>/mfsmaster</code>
<code>tcp 0 0 172.16.100.1:9420 172.16.100.5:59486 ESTABLISHED 26053</code><code>/mfsmaster</code>
<code>tcp 0 0 172.16.100.1:9420 172.16.100.7:41816 ESTABLISHED 26053</code><code>/mfsmaster</code>
<code>tcp 0 0 172.16.100.1:9420 172.16.100.6:39261 ESTABLISHED 26053</code><code>/mfsmaster</code>
4、關閉 Chunk Server
<code>[root@mfs-chunkserver-1 ~]</code><code># /usr/local/mfs/sbin/mfschunkserver stop </code>
<code>sending SIGTERM to lock owner (pid:7068) </code>
<code>[root@mfs-chunkserver-1 ~]</code><code># tailf /var/log/messages</code>
<code>Dec 30 19:11:08 mfs-chunkserver-1 mfschunkserver[7884]: </code><code>set</code> <code>gid to 1000</code>
<code>Dec 30 19:11:08 mfs-chunkserver-1 mfschunkserver[7884]: </code><code>set</code> <code>uid to 1000</code>
<code>Dec 30 19:11:08 mfs-chunkserver-1 mfschunkserver[7859]: terminate signal received</code>
<code>Dec 30 19:11:08 mfs-chunkserver-1 mfschunkserver[7859]: closing *:9422</code>
<code>Dec 31 11:35:16 mfs-master-1 mfsmaster[26053]: connection with CS(172.16.100.5) has been closed by peer</code>
<code>Dec 31 11:35:16 mfs-master-1 mfsmaster[26053]: chunkserver disconnected - ip: 172.16.100.5, port: 9422, usedspace: 1186041856 (1.10 GiB), totalspace: 8022986752 (7.47 GiB)</code>
<code>[root@mfs-chunkserver-1 ~]</code><code># echo '# add moosefs to the path variable' >> /etc/profile </code>
<code>[root@mfs-chunkserver-1 ~]</code><code># echo 'PATH=/usr/local/mfs/sbin/:$PATH' >> /etc/profile </code>
<code>[root@mfs-chunkserver-1 ~]</code><code># tail -2 /etc/profile </code>
<code>[root@mfs-chunkserver-1 ~]</code><code># source /etc/profile</code>
<code>[root@mfs-chunkserver-1 ~]</code><code># echo '# Configure the metalogger service startup' >> /etc/rc.local </code>
<code>[root@mfs-chunkserver-1 ~]</code><code># echo '/usr/local/mfs/sbin/mfsmetalogger start' >> /etc/rc.local </code>
<code>[root@mfs-chunkserver-1 ~]</code><code>#tail -2 /etc/rc.local </code>
5、部署 Client
1、安裝 FUSE
由于 MFS 檔案系統用戶端的挂載依賴于 FUSE 工具,是以需要先安裝 FUSE 工具。
官方注解:
mfsmount requires FUSE to work; FUSE is available on several operating systems: Linux, FreeBSD, OpenSolaris and MacOS X, with the following notes:
In case of Linux a kernel module with API 7.8 or later is required (it can be checked with dmesgcommand - after loading kernel module there should be a line fuse init (API version 7.8)). It is available in fuse package 2.6.0 (or later) or in Linux kernel 2.6.20 (or later). Due to some minor bugs, the newer module is recommended (fuse 2.7.2 or Linux 2.6.24, although fuse 2.7.x standalone doesn't contain getattr/write race condition fix).
是以,安裝之前,我們需要先檢視核心支援情況。如果已經支援了,并且版本也達到要求之後,就無須安裝FUSE了。
<code>[root@mfs-client ~]</code><code># lsmod|grep fuse </code>
<code>fuse 73530 2</code>
如果你的系統版本核心中沒有支援FUSE或者版本不夠,那麼可以使用下面的方式進行安裝,這裡推薦使用 2.8.5 版本。
a、安裝fuse
<code>[root@mfs-client src]</code><code># wget http://jaist.dl.sourceforge.net/project/fuse/fuse-2.X/2.9.3/fuse-2.9.3.tar.gz</code>
<code>[root@mfs-client src]</code><code># tar zxf fuse-2.9.3.tar.gz </code>
<code>[root@mfs-client src]</code><code># cd fuse-2.9.3 </code>
<code>[root@mfs-client fuse-2.9.3]</code><code># ls </code>
<code>[root@mfs-client fuse-2.9.3]</code><code># ./configure </code>
<code>[root@mfs-client fuse-2.9.3]</code><code># make && make install</code>
<code>[root@mfs-client fuse-2.9.3]</code><code>#cd ..</code>
b、調整環境變量
<code>[root@mfs-client src]</code><code># echo 'export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH' > /etc/profile</code>
<code>[root@mfs-client src]</code><code># tail -1 /etc/profile </code>
<code>export</code> <code>PKG_CONFIG_PATH=</code><code>/usr/local/lib/pkgconfig</code><code>:$PKG_CONFIG_PATH</code>
c、加載fuse子產品到核心并配置開機自啟
<code>[root@mfs-client mfs-1.6.27]</code><code># lsmod |grep fuse </code>
<code>[root@mfs-client mfs-1.6.27]</code><code># modprobe fuse </code>
<code>fuse 73530 0 </code>
<code>[root@mfs-client mfs-1.6.27]</code><code># echo 'modeprobe fuse' >> /etc/sysconfig/modules/fuse.modules </code>
<code>[root@mfs-client mfs-1.6.27]</code><code># cat /etc/sysconfig/modules/fuse.modules </code>
<code>modeprobe fuse </code>
<code>[root@mfs-client mfs-1.6.27]</code><code># chmod 755 /etc/sysconfig/modules/fuse.modules2、安裝 mfsmount</code>
<code>[root@mfs-client ~]</code><code># yum install zlib-devel -y</code>
<code>[root@mfs-client ~]</code><code># groupadd -g 1000 mfs</code>
<code>[root@mfs-client ~]</code><code># useradd -u 1000 -g mfs mfs -s /sbin/nologin</code>
<code>[root@mfs-client ~]</code><code># cd /usr/local/src</code>
<code>[root@mfs-client src]</code><code># wget http://moosefs.org/tl_files/mfscode/mfs-1.6.27-5.tar.gz</code>
<code>[root@mfs-client src]</code><code># tar zxf mfs-1.6.27-5.tar.gz</code>
<code>[root@mfs-client src]</code><code># cd mfs-1.6.27</code>
<code>[root@mfs-client mfs-1.6.27]</code><code># ./configure --prefix=/usr/local/mfs-1.6.27 --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver --enable-mfsmount</code>
<code>[root@mfs-client mfs-1.6.27]</code><code># make</code>
<code>[root@mfs-client mfs-1.6.27]</code><code># make install</code>
<code>[root@mfs-client mfs-1.6.27]</code><code># ln -s /usr/local/mfs-1.6.27 /usr/local/mfs </code>
<code>[root@mfs-client mfs-1.6.27]</code><code># ll -d /usr/local/mfs </code>
<code>[root@mfs-client mfs-1.6.27]</code><code># ll /usr/local/mfs/ </code>
<code>total 20 </code>
<code>drwxr-xr-x. 2 root root 4096 Dec 28 16:41 bin </code><code># bin 目錄下是用戶端的指令</code>
<code>drwxr-xr-x. 3 root root 4096 Dec 28 16:41 etc </code>
<code>drwxr-xr-x. 2 root root 4096 Dec 28 16:41 sbin </code>
<code>drwxr-xr-x. 4 root root 4096 Dec 28 16:41 share </code>
<code>drwxr-xr-x. 3 root root 4096 Dec 28 16:41 var</code>
3、從用戶端上挂載mfs檔案系統
a、建立資料目錄挂載點
<code>[root@mfs-client mfs-1.6.27]</code><code># mkdir /mfsdata </code>
<code>[root@mfs-client mfs-1.6.27]</code><code># chown -R mfs.mfs /mfsdata </code>
<code>[root@mfs-client mfs-1.6.27]</code><code># ll -d /mfsdata </code>
<code>drwxr-xr-x. 2 mfs mfs 4096 Dec 28 16:44 </code><code>/mfsdata</code>
b、挂載mfs檔案系統
由于我們之前設定了需要密碼驗證才能挂載成功,是以這裡會提示我們需要輸入密碼
<code>[root@mfs-client mfs-1.6.27]</code><code># /usr/local/mfs/bin/mfsmount /mfsdata -H 172.16.100.2 </code>
<code>mfsmaster register error: Password is needed</code>
<code>[root@mfs-client mfs-1.6.27]</code><code># /usr/local/mfs/bin/mfsmount /mfsdata -H 172.16.100.2 -p # 使用 -p 後面,下面會提示輸入密碼 </code>
<code>MFS Password: </code>
<code>mfsmaster accepted connection with parameters: </code><code>read</code><code>-write,restricted_ip,map_all ; root mapped to mfs:mfs ; </code><code>users</code> <code>mapped to root:root </code>
<code>[root@mfs-client mfs-1.6.27]</code><code># df -h </code>
<code>Filesystem Size Used Avail Use% Mounted on </code>
<code>/dev/sda3</code> <code>18G 949M 16G 6% / </code>
<code>tmpfs 491M 0 491M 0% </code><code>/dev/shm</code>
<code>/dev/sda1</code> <code>194M 28M 157M 15% </code><code>/boot</code>
<code>172.16.100.1:9421 22G 0 22G 0% </code><code>/mfsdata</code>
4、挂載後本地寫入檔案測試
寫入測試前,我們檢視下主和備伺服器的中繼資料檔案及變化日志檔案。
<code>[root@mfs-client mfs-1.6.27]</code><code># cd /mfsdata/</code>
<code>[root@mfs-client mfsdata]</code><code># touch a </code>
<code>[root@mfs-client mfsdata]</code><code># echo redhat > a </code>
<code>[root@mfs-client mfsdata]</code><code># cat a </code>
<code>redhat </code>
<code>[root@mfs-client mfsdata]</code><code># rm -rf a </code>
<code>[root@mfs-client mfsdata]</code><code># ls</code>
在用戶端寫入完成之後,我們可以來觀察一下 Master Server 端的變化
<code>[root@mfs-master-1 mfs]</code><code># cat changelog.0.mfs </code>
<code>1: 1419799640|SESSION():2 </code>
<code>2: 1419799701|SESSION():3 </code>
<code>3: 1419799756|CREATE(1,a,f,420,1000,1000,0):2 </code>
<code>4: 1419799756|ACQUIRE(2,3) </code>
<code>5: 1419799756|ATTR(2,420,1000,1000,1419803408,1419803408) </code>
<code>6: 1419799759|LENGTH(2,0) </code>
<code>7: 1419799759|WRITE(2,0,1):1 </code>
<code>8: 1419799759|LENGTH(2,7) </code>
<code>9: 1419799759|UNLOCK(1) </code>
<code>10: 1419799760|ACCESS(2) </code>
<code>11: 1419799761|RELEASE(2,3) </code>
<code>12: 1419799762|UNLINK(1,a):2 </code>
<code>13: 1419799763|ACCESS(1)</code>
我們再來檢視一下,Metalogger Server 端的變化:
<code>[root@mfs-metalogger ~]</code><code># cd /usr/local/mfs/var/mfs/</code>
<code>[root@mfs-metalogger mfs]</code><code># cat changelog_ml.1.mfs </code>
<code>0: 1419799516|SESSION():1 </code>
<code>[root@mfs-metalogger ~]</code><code># echo 'PATH=/usr/local/mfs/bin/:$PATH' >> /etc/profile </code>
<code>PATH=</code><code>/usr/local/mfs/bin/</code><code>:$PATH</code>
b、配置用戶端開機自動挂載
如果需要Client能夠在開機的時候自動挂載,我們就需要自動把密碼傳遞進去。mfsmount自帶了-o參數,我們可以把密碼配置在其後來實作開機自動挂載。
<code>[root@mfs-client mfs-1.6.27]</code><code># umount /mfsdata/ </code>
<code>[root@mfs-client mfs-1.6.27]</code><code># /usr/local/mfs/bin/mfsmount /mfsdata -H 172.16.100.2 -o mfspassword=redhat </code>
<code>[root@mfs-client mfs-1.6.27]</code><code># echo 'Moosefs boot automatically mount' >> /etc/rc.local</code>
<code>[root@mfs-client mfs-1.6.27]</code><code># echo '/usr/local/mfs/bin/mfsmount /mfsdata -H 172.16.100.2 -o mfspassword=redhat' >> /etc/rc.local</code>
<code>[root@mfs-client mfs-1.6.27]</code><code># tailf -2 /etc/rc.local</code>
<code>Moosefs boot automatically </code><code>mount</code>
<code>/usr/local/mfs/bin/mfsmount</code> <code>/mfsdata</code> <code>-H 172.16.100.2 -o mfspassword=redhat</code>
OK!
以上就是 MooseFS 的部署流程,希望能對51博友有所幫助。針對 MooseFS 更深一步的研究,比如 MooseFS的特性,MooseFS 的日常管理維護以及 MooseFS 的監控和災難恢複等等,我将會放在下一篇博文中去說。
本文轉自 aaao 51CTO部落格,原文連結:http://blog.51cto.com/nolinux/1601385,如需轉載請自行聯系原作者