mooseFS 2.0.x 編譯安裝

防僞碼:它強任它強,輕風拂山岡;它橫任它橫,月光照大江。

1.MooseFS文件系統介紹

1.1.Moosefs組件介紹
MooseFS是一種分佈式文件系統,MooseFS文件系統結構包括以下四種角色:
1 管理服務器managing server (master)
2 元數據日誌服務器Metalogger server(Metalogger)
3 數據存儲服務器data servers (chunkservers)
4 客戶機掛載使用client computers

各種角色作用:
管理服務器:負責各個數據存儲服務器的管理,文件讀寫調度,文件空間回收以及恢復.多節點拷貝
元數據日誌服務器: 負責備份master服務器的變化日誌文件,文件類型爲changelog_ml.*.mfs,以便於在master server出問題的時候接替其進行工作
數據存儲服務器:負責連接管理服務器,聽從管理服務器調度,提供存儲空間,併爲客戶提供數據傳輸.
客戶端: 通過fuse內核接口掛接遠程管理服務器上所管理的數據存儲服務器,.看起來共享的文件系統和本地unix文件系統使用一樣的效果.
1.2.MooseFS優點
開源
通用文件系統,不需要要修改上層應用就可以使用
可以在線擴容,體系架構可伸縮性極強
部署簡單
體系架構高可用,所有組件無單點故障
文件對象高可用,可設置任意的文件冗餘程度,而絕對不會影響讀寫的性能,只會加速
提供如windows回收站的功能,
提供類似java語言GC(垃圾回收)
提供netapp,emc,ibm等商業存儲的snapshot特性
google filesystem 的一個c實現
提供web gui監控接口
提高隨機讀寫的效率
提高海量小文件的讀寫效率
1.3.MooseFS 1.6.X
  修改1.5中的大批量操作時打開文件過多的bug
新增加了masterlogger服務器,在1.5中沒有的,就是做了master服務器的冗餘,進一步的加強master服務器的穩定性,在mfs體系中master是要求最穩定以及性能要求最高的,因此務必保證master的穩定
修改1.5中存在的對於壞塊的修復功能,在mfs1.5中遇到chunker壞塊校驗,錯誤比較多的是往往導致master將出現壞塊的chunker自動剔除出去的情況,此次增加了對壞塊的修復功能,很方便的進行修復,簡化對壞塊的處理功能。
對metadata和changelog的新認識,之前認爲changelog記錄的是文件的操作,定期的像數據庫的日誌一樣歸檔到metadata中,發現上面的理解存在誤區,真正的是changelog中記錄了對文件的操作,metadata記錄文件的大小和位置,因此metadata是比較重要的,在進行修復的過程中是採用metadata和最後一次changelog進行修復。
MFS 文檔中明確指出對於內存和磁盤大小的要求
指出了在測試的過程中多個chunker並不影響寫的速度,但是能加快讀的速度,在原來的基礎上增加一個chunker時,數據會自動同步到新增的chunker上以達到數據的平衡和均衡。

1.4.Key differences between versions 1.6.2x and 2.0.x
1. Master host(s) configuration is done solely via DNS – it is no longer possible to list master(s) IP address(es) in clients’ and Chunkservers’ configuration; default name for master domain is mfsmaster, it can be changed in configuration files;
2. In Pro version Metaloggers become optional, they can be replaced by additional Master Servers; in Community Edition it is still strongly recommended to set up Metaloggers.
3. Mfsmetarestore tool is no longer present in the system; instead, it is enough to start the master process with -a switch; 4. Configuration files now sit in mfs subdirectory inside the /etc directory (this change was introduced in 1.6.27).
1.5.常見問題
master性能瓶頸,主要是可擴展性不強
體系架構存儲文件總數的瓶頸,mfs把文件系統的結構緩存到master內存中,這樣文件越多,master的內存消耗越大,8G對應2500kw文件數,2億就的64G內存
單點故障解決方案的健壯性
垃圾回收   把默認的86400改爲300秒,這樣可以免的垃圾還沒回收完,你的存儲容量就暴掉了。
1.6.mfs的原理
就是客戶端請求master,master分派他去哪裏讀數據,

1.1.1.MFS
MFS系統由4個部分構成,master、metalogger、chunkserver、client。
Master —— mfs的大腦,記錄着管理信息,比如:文件大小,存儲的位置,份數等,和innodb中共享空間(ibdata)中存儲的信息類似,這些信息被記錄到metadata.mfs中,當該文件被載入內存後,改文件會重命名爲metadata.mfs.back,當chunkserver上有更新時,master會定期將獲得的新的信息回寫到metadata.mfs.back中,保重元數據的可靠。 
硬件推薦:大內存,因爲內存中需要將metadata.mfs加載進來,這個文件的大小取決於你chunkserver上存儲的數據量,內存的大小會成爲之後的問題,要ECC的可以進行錯誤校驗,當內存中數據量達到一定程度,如果沒有個容錯的機制,會很可怕;冗餘電池,和磁盤配置RAID1/RAID5/RAID10,都是爲了保證高可靠。
1.1.2. Metalogger
Metalogger —— mfs的備份,好比mysql中的m-s結構,metalogger會定期重master上將的metadata、changelog、session類型的文件下載同步到本地目錄下,並加後綴”_ml”將其重命名。
 
硬件推薦:與master機器配置一致,metalogger本身就是master的一個備機,當master宕機後,可以直接將metalogger提升爲master。
1.1.3. Chunkserver
Chunkserver —— 數據存儲地,文件以chunk大小存儲,每chunk最大爲64M,小於64M的,該chunk的大小即爲該文件大小,超過64M的文件將被均分,每一份(chunk)的大小以不超過64M爲原則;文件可以有多份copy,即除了原始文件以外,該文件還存儲的份數,當goal爲1時,表示只有一份copy,這份copy會被隨機存到一臺chunkserver上,當goal的數大於1時,每一份copy會被分別保存到每一個chunkserver上,goal的大小不要超過chunkserver的數量,否則多出的copy,不會有chunkserver去存,goal設置再多實際上也就沒有意義的。Copy的份數,一般設爲大於1份,這樣如果有一臺chukserver壞掉後,至少還有一份copy,當這臺又被加進來後,會將失去的那份copy補回來,始終保持原有的copy數,而如果goal設爲1copy,那麼當存儲該copy的chunkserver壞掉,之後又重新加入回來,copy數將始終是0,不會恢復到之前的1個copy。
Chunkserver上的剩餘存儲空間要大於1GB(Reference Guide有提到),新的數據纔會被允許寫入,否則,你會看到No space left on device的提示,實際中,測試發現當磁盤使用率達到95%左右的時候,就已經不行寫入了,當時可用空間爲1.9GB。
硬件建議:普通的機器就行,就是要來存幾份數據,只要磁盤夠大就好。
1.1.4. Client
Client —— 客戶端通過內核加載的FUSE模塊,再通過和master的共同,將chunkserver共享的分區掛載到本地,然後進行讀寫操作。由於FUSE模塊是外加的模塊,當系統重啓後,需要執行modprobe fuse,將其加載到內核中

matedata.mfs.back文件將消失,那麼要恢復整個mfs,則需從metalogger服務器取得該文件。請特別注意這個文件,它與日誌文件一起,才能夠恢復整個被損壞的分佈式文件系統。
2.環境準備

角色
主機名IPOS
配置
Mastermfsmaster110.162.23.51Redhat7.28C16G300G
Metaloggermfsmetalogger10.162.23.52Redhat7.28C16G300G
Chunkservermfschunkserver110.162.23.53Redhat7.28C16G300G
Chunkservermfschunkserver210.162.23.54Redhat7.28C16G300G
Chunkservermfschunkserver310.162.23.55Redhat7.28C16G300G
ChunkserverMfschunkserver410.162.23.56Redhat7.28C16G300G
ChunkserverMfschunkserver510.162.23.57Redhat7.28C16G300G
ChunkserverMfschunkserver610.162.23.58Redhat7.28C16G300G
ChunkserverMfschunkserver710.162.23.59Redhat7.28C16G300G
ChunkserverMfschunkserver810.162.23.60Redhat7.28C16G300G

moosefs安裝前準備:
# mooseFS軟件包:moosefs-2.0.88-1.tar.gz
# client端 :fuse-2.9.6.tar.gz
# IPTABLES :OFF
# SELINUX :disable

# 所有主機解決GCC等依賴問題
# yum install gcc zlib-devel

# cat /etc/hosts
10.162.23.51 mfsmaster
# 此處所有角色中master-host配置默認都是mfsmaster。如果DNS配置瞭解析這裏就不需要配置了。

3.MooseFS編譯安裝
3.1.Master server 安裝
當我們安裝主控服務器時,在配置過程中(./configure),可以取消安裝 chunk server (--disable-mfschunkserver)以及 MooseFS 客戶端(--disable-mfsmount). 安裝 主控服務器 master 的具體步驟爲:
# 添加 mfs 組
# groupadd mfs
# 新增系統用戶 mfs
# useradd -g mfs mfs
# passwd mfs
# 解包歸檔文件
# tar -zxvf moosefs-2.0.88-1.tar.gz
# 進入安裝目錄
# cd moosefs-2.0.88
# mkdir /opt/server/mfs -p
# chmod 755 -R /opt/server
# 配置
# ./configure --prefix=/opt/server/mfs --with-default-user=mfs --with-default-group=mfs --localstatedir=/opt/server/mfs/data --disable-mfschunkserver --disable-mfsmount
# 編譯並安裝
# make && make install
成功安裝 master 以後,系統會在/opt/server/mfs/etc/mfs目錄自動生成樣例配置文件,這些樣例文件是以.dist 後綴命名。這裏我們將借用這些樣例文件作爲 MooseFS 主控服務器的目標配置文件:

# 切換目錄
# cd /opt/server/mfs/etc/mfs
# 複製樣例文件,以得到 master 所需的配置文件
# cp mfsmaster.cfg.dist mfsmaster.cfg
# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
# cp mfsexports.cfg.dist mfsexports.cfg

Mfsmaster.cfg 配置文件包含主控服務器 master 相關的設置,在這裏我們暫時不打算對其 進行修改。如果你想知道關於該配置文件更多的信息,請查看它的手冊頁(使用命令 man mfsmaster.cfg)。
配置文件 mfsexports.cfg 指定那些客戶端主機可以遠程掛接 MooseFS 文件系統,以及授予 掛接客戶端什麼樣的訪問權限。例如,我們指定只有 172.25.0.x 網段的主機可以以讀寫模式 訪問 MooseFS 的整個共享結構資源(/)。在配置文件 mfsexports.cfg 文件的第一行,先 取消註釋,然後把星號(*)改成 172.25.0.0/24,以便我們可以得到下面的文本行:
# cat /opt/server/mfs/etc/mfs/mfsexports.cfg
10.162.23.0/24  / rw,alldirs,maproot=0

二進制文件 metadata 和文本文件 changelog 將被保存在目錄/opt/server/mfs/data,這是因爲我們安 裝過程的 configure 步驟使用了選項 --localstatedir=/opt/server/mfs/data 。首次安裝 master 時,會自 動生成一個名爲 metadata.mfs.empty 的元數據文件 metadata,該文件是空的。MooseFS master 運必須有文件 metadata.mfs,這個文件是從 metadata.mfs.empty 改名而來:
# 切換目錄
# cd /opt/server/mfs/data/mfs
# 重命名文件
# cp metadata.mfs.empty metadata.mfs
MooseFS master 運行以後,metadata.mfs 文件大小將發生變化,肯定不會是 空文件了。

# 運行master服務
# /opt/server/mfs/sbin/mfsmaster start

在一個生產環境裏,我們應當設置自動啓動腳本,以便操作系統重新啓動時,MooseFS master 也能自動運行。
爲了監控 MooseFS 當前運行狀態,我們可以運行 CGI 監控服務,這樣就可以用瀏覽器查看整個 MooseFS 的運行情況:
# /opt/server/mfs/sbin//mfscgiserv

# 開機啓動
# cat /etc/rc.local

FU8`]$0W6OSR93AWSAOVO6Y.png

現在,我們在瀏覽器地址欄輸入 http://10.162.23.51:9425 即可查看 master 的運行情況(這個時 候,是不能看見 chunk server 的數據)。

image.png

3.2.Backup server (metalogger) 安裝
用來安裝 metalogger 的主機,在性能上應該比 master 強大(至少有更多的內存)。一旦主控 服務器 master 失效,只要導入 changelogs 到元數據文件,備份服務器 metalogger 將能接替發生 故障的 master,行使管理服務器的職能(更多細節請參看 http://www.moosefs.org/minihowtos.html#redundant-master)。
備份服務器 Metalogger 安裝跟主控服務器 master 安裝非常類似。其安裝命令如下:
# 添加 mfs 組
# groupadd mfs
# 新增系統用戶 mfs
# useradd -g mfs mfs
# passwd mfs
# 解包歸檔文件
# tar -zxvf moosefs-2.0.88-1.tar.gz
# 進入安裝目錄
# cd moosefs-2.0.88
# mkdir /opt/server/mfs -p
# chmod 755 -R /opt/server

# 配置
# ./configure --prefix=/opt/server/mfs --with-default-user=mfs --with-default-group=mfs --localstatedir=/opt/server/mfs/data --disable-mfschunkserver --disable-mfsmount
# 編譯並安裝
# make && make install
# 產生配置文件
# cd /opt/server/mfs/etc/mfs
# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

# 修改文件/etc/hosts ,增加如下的文本行:
# 生產已經做了DNS域名解析,不需要配置
10.162.23.51 mfsmaster
#沒有對mfsmaster解析的話,需要手動配置master_host
# cat mfsmetalogger.cfg|grep -i master_host
# MASTER_HOST = mfsmaster

# 運行備份服務 mfsmetaloger:
# /opt/server/mfs/sbin/mfsmetalogger start
# 開機啓動
# vim /etc/rc.local
/opt/server/mfs/sbin/mfsmetalogger start
# 在一個生產環境裏,我們應當設置自動啓動腳本,以便操作系統重新啓動時,MooseFS mfsmetalogger 服務也能自動運行。

}C@8[$JO]@_I7N8%R2Q{EOX.png

3.3.存儲塊服務器 Chunkservers 安裝
在每個 chunk server 主機上執行下面的命令:
# 添加 mfs 組
# groupadd mfs
# 新增系統用戶 mfs
# useradd -g mfs mfs
# passwd mfs
# 解包歸檔文件
# tar -zxvf moosefs-2.0.88-1.tar.gz
# 進入安裝目錄
# cd moosefs-2.0.88
# mkdir /opt/server/mfs -p
# chmod 755 -R /opt/server
# 配置
# ./configure --prefix=/opt/server/mfs --with-default-user=mfs --with-default-group=mfs --localstatedir=/opt/server/mfs/data --disable-mfsmaster
# 編譯並安裝
# make && make install

# 準備 chunk server 服務所需的配置文件:
# cd /opt/server/mfs/etc/mfs
# cp mfschunkserver.cfg.dist mfschunkserver.cfg
# cp mfshdd.cfg.dist mfshdd.cfg
# 爲了測試這個安裝,我們保留 mfschunkserver.cfg 文件不做任何改動;如果讀者想了解 配置文件 mfschunkserver.cfg 更詳細的信息,請查看手冊頁 (man mfschunkserver.cfg)。

# 存儲配置
# fdisk -l
/dev/sdb 300G

#Creating a partition on /dev/sdb
# parted --align optimal /dev/sdb
GNU Parted 2.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
(parted) mkpart mfschunks1 0% 100%
(parted) q

# Installing xfsprogs
# yum install xfsprogs

# Formatting partitions
# mkfs.xfs /dev/sdb1

# Formatting partitions with 4k block size
# mkfs.xfs -s size=4k /dev/sdb1 -f

# 配置掛載開機啓動
# mkdir /mnt/mfschunks1

# cat /etc/fstab
/dev/sdb1 /mnt/mfschunks1 xfs defaults 0 0

# mount /mnt/mfschunks1

# df -Th
/dev/sdb1                       xfs       300G   33M  300G   1% /mnt/mfschunks1

# 權限配置
# chown mfs:mfs /mnt/mfschunks1
# chmod 770 /mnt/mfschunks1

# mfs Chunkserver 存儲塊配置
# cat /opt/server/mfs/etc/mfs/mfshdd.cfg
/mnt/mfschunks1

# 修改文件/etc/hosts ,增加如下的文本行:
# 生產已經做了DNS域名解析,不需要配置
10.162.23.51 mfsmaster
# hosts配置中沒有對mfsmaster解析的話,需要手動配置master_host
# cat /opt/server/mfs/etc/mfs/mfschunkserver.cfg|grep -i master_host
# MASTER_HOST = mfsmaster

# Starting MooseFS Chunkserver
# /opt/server/mfs/sbin/mfschunkserver start
# 開機啓動
# cat /etc/rc.local
/opt/server/mfs/sbin/mfschunkserver start
現在再通過瀏覽器訪問 http://10.162.23.51:9425/ 應該可以看見這個 MooseFS 系統的全部信息, 包括主控 master 和存儲服務 chunkserver 。

W~K}1OD@_K6I4P%J@W~19TF.png

3.4.客戶端 Users’computers 安裝
爲了掛接基於 MooseFS 分佈式文件,客戶端主機必須安裝 FUSE 軟件包( fuse 版本號至少 2.8,推薦使用版本號大於 2.9.x 的 fuse)。如果系統沒有安裝 fuse,你必須手動對其進行安裝。 一種常見的安裝方式是從源碼進行編譯安裝-我們可以從 http://sourceforge.net/projects/fuse/取 得安裝源碼:
# 刪除舊版本fuse
# rpm -qa|grep fuse
fuse-libs-2.9.2-6.el7.x86_64
# rpm -e fuse-libs-2.9.2-6.el7.x86_64 --nodeps
# tar -zxvf fuse-2.9.6.tar.gz
# cd fuse-2.9.6
# ./configure
# make
# make install

# yum -y install fuse-devel

# 安裝客戶端軟件 mfsmount 的步驟:
# export PKG_CONFIG_PATH=/opt/server/lib/pkgconfig:$PKG_CONFIG_PATH
# 解包歸檔文件
# tar -zxvf moosefs-2.0.88-1.tar.gz
# 進入安裝目錄
# cd moosefs-2.0.88
# 配置
# ./configure --prefix=/opt/server/mfs --with-default-user=mfs --with-default-group=mfs --localstatedir=/opt/server/mfs/data --disable-mfsmaster --enable-mfsmount
# make && make install

# 修改文件/etc/hosts ,增加如下的文本行:
# 生產已經做了DNS域名解析,不需要配置
10.162.23.51 mfsmaster

假定客戶端的掛接點是/mnt/mfs,我們將以下面的指令來使用 MooseFS 分佈式共享文件系統:
# 創建掛接點
# mkdir -p /opt/data/z-cmp/shareddata
# chmod 755 -R /opt/data
# useradd mfs
# passwd mfs
# chown mfs.mfs -R /opt/server/mfs/

# 開始掛接操作
# /opt/server/mfs/bin/mfsmount /opt/data/z-cmp/shareddata -H mfsmaster
# 查看掛載
# df -Th
mfsmaster:9421                  fuse.mfs  2.1T  2.0G  2.1T   1% /opt/data/z-cmp/shareddata

_QBDUTYIMM7PHIF%T31T{H6.png

3.5.配置文件解釋
3.5.1.mfsmaster.cfg
需要注意的是,凡是用#註釋掉的變量均使用其默認值,這裏我解釋一下這些變量:
#  WORKING_USER = mfs  運行master server的用戶
#  WORKING_GROUP = mfs  運行master server的用戶組
#  SYSLOG_IDENT = mfsmaster master在syslog中的標識,也就是說明這是由master serve產生的
#  LOCK_MEMORY = 0 是否執行mlockall()以避免mfsmaster 進程溢出
#  NICE_LEVEL = -19 運行的優先級(如果可以默認是 -19; 注意: 進程必須是用root啓動)
#  FILE_UMASK = 027 設置目錄和文件被創建時得到的權限
#  DATA_PATH = /opt/server/mfs/data/mfs 數據存放路徑,此目錄下大致有三類文件,changelog,sessions和stats
#  EXPORTS_FILENAME = /opt/server/mfs/etc/mfs/mfsexports.cfg 被掛接目錄及其權限控制文件的存放位置
#  TOPOLOGY_FILENAME = /opt/server/mfs/etc/mfs/mfstopology.cfg 
#  BACK_LOGS = 50 metadata的改變log文件數目(默認是 50)
#  BACK_META_KEEP_PREVIOUS = 1 保存以前mfs元數據的文件數,默認值是1 
#  CHANGELOG_PRESERVE_SECONDS = 1800 CHANGELOG保存時間設置
#  MATOML_LISTEN_HOST = *     metalogger監聽的IP地址(默認是*,代表任何IP)
#  MATOML_LISTEN_PORT = 9419  metalogger監聽的端口地址(默認是9419)
#  MATOCS_LISTEN_HOST = *     用於chunkserver連接的IP地址(默認是*,代表任何IP)
#  MATOCS_LISTEN_PORT = 9420  用於chunkserver連接的端口地址(默認是9420)
#  MATOCS_TIMEOUT = 10   chunkserver連接超時設置,默認10s
#  REPLICATIONS_DELAY_INIT = 300 延遲複製的時間(默認是300s)
#  CHUNKS_LOOP_MAX_CPS = 100000 chunks的迴環執行,最大值100000
#  CHUNKS_LOOP_MIN_TIME = 300 chunks的迴環執行,最小值300
#  CHUNKS_SOFT_DEL_LIMIT = 10 一個chunkserver中可以刪除chunks的最大數,軟限 (默認:10)
#  CHUNKS_HARD_DEL_LIMIT = 25 一個chunkserver中可以刪除chunks的最大數,硬限 (默認:25)
#  CHUNKS_WRITE_REP_LIMIT = 2,1,1,4 在一個循環裏複製到一個chunkserver的最大chunk數目(四字數字表示:損壞的塊,設定的塊,服務器之間需要平衡的,其他服務器平衡的數目)
#  CHUNKS_READ_REP_LIMIT = 10,5,2,5 在一個循環裏從一個chunkserver複製的最大chunk數目(四字數字表示:損壞的塊,設定的塊,服務器之間需要平衡的,其他服務器平衡的數目)
#  CS_HEAVY_LOAD_THRESHOLD = 100 設置chunkserver負載閥值100
#  CS_HEAVY_LOAD_RATIO_THRESHOLD = 5.0  設置chunkserver負載閥值比
#  CS_HEAVY_LOAD_GRACE_PERIOD = 900 設置chunkserver超時時間則進入Grace模式
#  ACCEPTABLE_PERCENTAGE_DIFFERENCE = 1.0 設置可接受的差異百分比
#  PRIORITY_QUEUES_LENGTH = 1000000 設置優先級隊列長度
#  MATOCL_LISTEN_HOST = *    用於客戶端掛接連接的IP地址(默認是*,代表任何IP
#  MATOCL_LISTEN_PORT = 9421 用於客戶端掛接連接的端口地址(默認是9421)
#  SESSION_SUSTAIN_TIME = 86400 client斷開連接超時時間,默認1天
#  QUOTA_TIME_LIMIT = 604800 client軟限制,時間默認爲7天
3.5.2.mfsmetalogger.cfg
# META_DOWNLOAD_FREQ = 24  元數據備份文件下載請求頻率,默認24小時
3.5.3.mfschunkserver.cfg 
#  HDD_TEST_FREQ = 10 定期chunk測試
#  HDD_LEAVE_SPACE_DEFAULT = 256MiB  設置預留磁盤空間
#  HDD_REBALANCE_UTILIZATION = 20    設置均衡數據的時間比例
#  HDD_ERROR_TOLERANCE_COUNT = 2     設置磁盤錯誤的數量
#  HDD_ERROR_TOLERANCE_PERIOD = 600  設置超過錯誤數量,則標記爲磁盤損壞
#  HDD_FSYNC_BEFORE_CLOSE = 0        禁用fsync
#  WORKERS_MAX = 150 
#  WORKERS_MAX_IDLE = 40
#  BIND_HOST = *
#  MASTER_HOST = mfsmaster
#  MASTER_PORT = 9420
#  MASTER_TIMEOUT = 10
#  MASTER_RECONNECTION_DELAY = 5   設置連接master重試超時時間
#  CSSERV_LISTEN_HOST = *
#  CSSERV_LISTEN_PORT = 9422   同其他數據塊服務器進行連接,用於幾個副本複製
3.6.MooseFS 基礎用法
在 MooseFS 掛接點下創建目錄 folder1, 在該目錄,我們將以一個副本的方式存放文件 (設置 goal=1):
# mkdir -p /mnt/mfs/folder1
再在掛接點創建第 2 個目錄 folder2, 在該目錄,我們將以兩個個副本的方式存放文件(設置 goal=2):
# mkdir -p /mnt/mfs/folder2

# 使用命令 mfssetgoal -r 設定目錄裏文件的副本數:
# 副本數爲 1
# mfssetgoal -r 1 /mnt/mfs/folder1
/mnt/mfs/folder1:
inodes with goal changed: 0
inodes with goal not changed: 1
inodes with permission denied: 0

# 副本數爲 2
# mfssetgoal -r 2 /mnt/mfs/folder2
/mnt/mfs/folder2:
inodes with goal changed: 0
inodes with goal not changed: 1
inodes with permission denied: 0

# 拷貝同一個文件到兩個目錄:
# cp /usr/src/mfs-1.6.15.tar.gz /mnt/mfs/folder1
# cp /usr/src/mfs-1.6.15.tar.gz /mnt/mfs/folder2

命令 mfschunkfile 用來檢查給定的文件以多少副本數來存儲。對應目錄 folder1 來說, 有一個副本存儲在一個 chunk 裏:
# mfscheckfile /mnt/mfs/folder1/mfs-1.6.15.tar.gz
/mnt/mfs/folder1/mfs-1.6.15.tar.gz:
1 copies: 1 chunks

# 而在目錄 folder2 中,文件 mfs-1.6.15.tar.gz 是以兩個副本保存的:
#mfscheckfile /mnt/mfs/folder2/mfs-1.6.15.tar.gz
/mnt/mfs/folder2/mfs-1.6.15.tar.gz: 2 copies: 1 chunks

附加信息。當所有的組件被安裝到同一個物理主機的時候,即便設定了 goal=2 來到達保存兩個 副本的目的,但你可能看到的只是一個副本而已—這是合理的,儘管有兩個磁盤,但它只是一 個 chunk server 啊!

更多關於 MooseFS 命令的使用方法,可以在這裏找到:
http://www.moosefs.org/reference-guide.html#using-moosefs
我們推薦你閱讀 FAQ 頁面內容: http://www.moosefs.org/moosefs-faq.html
3.7.停止/啓動  MooseFS
爲了安全停止/啓動 MooseFS 集羣,建議執行如下的步驟:
停止:
在所有客戶端用 Unmount 命令先卸載文件系統(本例將是: umount /mnt/mfs)
停止 chunk server 進程: /opt/server/mfs/sbin/mfschunkserver stop
停止 metalogger 進程: /opt/server/mfs/sbin/mfsmetalogger stop
停止主控 master server 進程: /opt/server/mfs/sbin/mfsmaster stop
啓動:
啓動主控 master server 進程: /opt/server/mfs/sbin/mfsmaster start
啓動 metalogger 進程: /opt/server/mfs/sbin/mfsmetalogger start
啓動 chunk server 進程: /opt/server/mfs/sbin/mfschunkserver start


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章