文章目錄
前言
一:MFS理論部分
1.1:分佈式簡介
- 分佈式文件系統(Distributed File System) 是指文件系統管理的物理存儲資源不一定直接連接在本地節點上,而是通過計算機網絡與節點相連。
- 簡單來說就是把一些分散的(分佈在局域網內各個計算機上) 共享文件夾, 集合到一個文件夾內(虛擬共享文件夾)。 對於用戶來說, 要訪問這些共享文件夾時, 只要打開這個虛擬共享文件夾, 就可以看到所有鏈接到虛擬共享文件夾內的共享文件夾, 用戶感覺不到這些共享文件是分散於各個計算機上的。
- 分佈式文件系統的好處是集中訪問、 簡化操作、 數據容災、 提高文件存取性能
1.2:MFS原理
- MooseFS是一個具有容錯性的網絡分佈式文件系統。它把數據分散存放在多個物理服務器上,而呈現給用戶的則是一個統一的資源。
1.2.1:MFS文件系統的組成
-
元數據服務器(Master server)
-
一臺管理整個文件系統的獨立主機,存儲着每個文件的元數據(文件的大小、屬性、位置信息,包括所有非常規文件的所有信息,例如目錄、套接字、管道以及設備文件)
-
在整個體系中負責管理文件系統, 維護元數據
-
-
元數據日誌/備份服務器(MetaLogger server)
-
任意數量的服務器,用來存儲元數據變化日誌並週期性下載主要元數據文件,以便用於管理服務器意外停止時好接替其位置。
-
備份 Master 服務器的變化日誌文件, 文件類型爲 changelog_ml.*.mfs。 當 Master 服務器數據丟失或者損壞,可以從日誌服務器中取得文件恢復
-
-
數據存儲服務器(Chunk Server)
-
任意數量的服務器,用來存儲元數據變化日誌並週期性下載主要元數據文件,以便用於管理服務器意外停止時好接替其位置。
-
真正存儲數據的服務器。 存儲文件時, 會把文件分塊保存, 並在數據服務器之間複製, 數據服務器越多, 能使用的“容量” 就越大, 可靠性就越高, 性能越好。
-
-
客戶端(Client)
-
任意數量的主機,可以通過mfsmount進程與管理服務器(接收和更改元數據)和數據服務器(改變實際文件數據)進行交流。
-
可以像掛載 NFS 一樣掛載 MFS 文件系統, 其操作是相同的。
-
1.2.3:MFS 讀取數據的處理過程
- 【1】客戶端向元數據服務器發出讀請求。
- 【2】元數據服務器把所需數據存放的位置(Chunk Server 的 IP 地址和 Chunk 編號) 告知客戶端。
- 【3】客戶端向已知的 Chunk Server 請求發送數據。
- 【4】Chunk Server 向客戶端發送數據。
1.2.4:MFS 寫入數據的處理過程
- 【1】客戶端向元數據服務器發送寫入請求。
- 【2】元數據服務器與 Chunk Server 進行交互(只有當所需的分塊 Chunks 存在的時候才進行這個交互),但元數據服務器只在某些服務器創建新的分塊Chunks,創建成功後由Servers 告知元數據服務器操作成功
- 【3】元數據服務器告知客戶端, 可以在哪個 Chunk Server 的哪些 Chunks 寫入數據。
- 【4】客戶端向指定的 Chunk Server 寫入數據
- 【5】該 Chunk Server 與其他 Chunk Server 進行數據同步
- 【6】 數據同步成功
- 【7】同步成功後 Chunk Server 告知客戶端數據寫入成功。
- 【8】客戶端告知元數據服務器本次寫入完畢。
二:MFS部署實驗
2.1:環境介紹
-
VMware軟件
-
主機 操作系統 IP地址 主要軟件 Master Server CentOS 7.6 x86_64 192.168.233.131 moosefs-3.0.100-1.tar.gz MetaLogger Server CentOS 7.6 x86_64 192.168.233.132 moosefs-3.0.100-1.tar.gz Chunk Server1 CentOS 7.6 x86_64 192.168.233.133 moosefs-3.0.100-1.tar.gz Chunk Server2 CentOS 7.6 x86_64 192.168.233.128 moosefs-3.0.100-1.tar.gz Chunk Server3 CentOS 7.6 x86_64 192.168.233.129 moosefs-3.0.100-1.tar.gz Client CentOS 7.6 x86_64 192.168.233.130 moosefs-3.0.100-1.tar.gz
fuse-2.9.2.tar.gz
2.2:實驗目的
- 多臺Web服務器通過NFS共享一個存儲,會有如下問題:
- 1、業務功能上滿足需求
- 2、在性能與容量上無法勝任更高的要求
- 3、NFS服務器不堪重負,出現超時問題
- 4、NFS存在着單點故障問題
- 採用MFS解決以上問題
- 1、採用分佈式文件系統
- 2、服務器之間的數據訪問不再是一對多的關係,而是多對多的關係
- 3、可以使性能得到大幅提升
2.3:拓撲圖
2.4:實驗過程
-
六臺服務器上關閉防火牆、關閉核心防護、配置主機名、配置hosts
-
此處僅展示client的操作
[root@localhost ~]# hostnamectl set-hostname client '//修改主機名' [root@localhost ~]# su [root@client ~]# systemctl stop firewalld '//關閉防火牆' [root@client ~]# systemctl disable firewalld '//取消開機自啓動' Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@client ~]# setenforce 0 '//關閉核心防護' [root@client ~]# vi /etc/sysconfig/selinux SELINUX=disabled '//取消開啓自啓動' [root@client ~]# vi /etc/hosts '//修改本地主機映射文件' 192.168.233.131 master 192.168.233.132 metalogger 192.168.233.133 chunk01 192.168.233.128 chunk02 192.168.233.129 chunk03 192.168.233.130 client [root@client ~]# yum -y install gcc gcc-c++ zlib-devel '//安裝編譯器'
2.4.1:搭建 MFSmaster
-
創建用戶並編譯安裝源碼包
[root@master ~]# useradd -s /sbin/nologin -M mfs '//創建用戶' [root@master ~]# mount.cifs //192.168.11.1/ccc /mnt '//掛載宿主機目錄' Password for root@//192.168.11.1/ccc: [root@master ~]# cd /mnt/mfs [root@master mfs]# tar zxvf moosefs-3.0.100-1.tar.gz -C /opt '//解壓源碼包到/opt目錄下' [root@master mfs]# cd /opt/moosefs-3.0.100/ [root@master moosefs-3.0.100]# ./configure \ '//進行配置' > --prefix=/usr/local/mfs \ '//指定安裝目錄' > --with-default-user=mfs \ '//指定運行用戶' > --with-default-group=mfs \ '//指定運行組' > --disable-mfschunkserver \ '//禁用chunk功能' > --disable-mfsmount '//禁用mfsmount功能' [root@master moosefs-3.0.100]# make && make install '//編譯安裝'
-
複製 master 配置文件
[root@master opt]# cd /usr/local/mfs/etc/mfs/ '//進入mfs目錄' [root@master mfs]# ls mfsexports.cfg.sample mfsmaster.cfg.sample mfsmetalogger.cfg.sample mfstopology.cfg.sample '//將幾個配置文件的模板複製一下' [root@master mfs]# cp mfsmaster.cfg.sample mfsmaster.cfg [root@master mfs]# cp mfsexports.cfg.sample mfsexports.cfg [root@master mfs]# cp mfstopology.cfg.sample mfstopology.cfg [root@master mfs]# cd /usr/local/mfs/var/mfs/ [root@master mfs]# cp metadata.mfs.empty metadata.mfs [root@master mfs]# chown mfs:mfs /usr/local/mfs/var/mfs '//設置目錄的屬主屬組' [root@master mfs]# /usr/local/mfs/sbin/mfsmaster start '//開啓master server' [root@master mfs]# netstat -anpt | grep mfs '//檢測mfs是否開啓' tcp 0 0 0.0.0.0:9419 0.0.0.0:* LISTEN 41396/mfsmaster tcp 0 0 0.0.0.0:9420 0.0.0.0:* LISTEN 41396/mfsmaster tcp 0 0 0.0.0.0:9421 0.0.0.0:* LISTEN 41396/mfsmaster '//停止 Master Server 的命令是/usr/local/mfs/sbin/mfsmaster stop'
2.4.2:搭建 MFS 日誌服務器
-
相同方法編譯安裝源碼包,並創建用戶,此處不在贅述
-
複製 metalogger 主配置文件並編輯
[root@metalogger moosefs-3.0.100]# cd /usr/local/mfs/etc/mfs [root@metalogger mfs]# ls mfsexports.cfg.sample mfsmaster.cfg.sample mfsmetalogger.cfg.sample mfstopology.cfg.sample [root@metalogger mfs]# cp mfsmetalogger.cfg.sample mfsmetalogger.cfg [root@metalogger mfs]# vim mfsmetalogger.cfg '//編輯日誌配置文件' MASTER_HOST = 192.168.233.131 '//取消註釋,指定master服務器地址'
-
啓動mfs服務
[root@metalogger mfs]# /usr/local/mfs/sbin/mfsmetalogger start open files limit has been set to: 4096 working directory: /usr/local/mfs/var/mfs lockfile created and locked initializing mfsmetalogger modules ... mfsmetalogger daemon initialized properly [root@metalogger mfs]# netstat -anpt | grep mfs tcp 0 0 192.168.233.132:37252 192.168.233.131:9419 ESTABLISHED 51991/mfsmetalogger
2.4.3:搭建 chunk 存儲端
-
相同方法編譯安裝源碼包,並創建用戶,此處不在贅述
-
三臺節點的操作都是相同的,此處僅展示一個節點的操作
-
複製 mfschunk 主配置文件並編輯
[root@chunk01 moosefs-3.0.100]# cd /usr/local/mfs/etc/mfs/ [root@chunk01 mfs]# ls mfschunkserver.cfg.sample mfshdd.cfg.sample mfsmetalogger.cfg.sample [root@chunk01 mfs]# cp mfschunkserver.cfg.sample mfschunkserver.cfg [root@chunk01 mfs]# cp mfshdd.cfg.sample mfshdd.cfg [root@chunk01 mfs]# vi mfschunkserver.cfg '//編輯存儲節點配置文件' MASTER_HOST = 192.168.100.40 '//指向master服務器地址' [root@chunk01 mfs]# vim mfshdd.cfg /data '//添加一個掛載點目錄' [root@chunk01 mfs]# mkdir /data '//創建掛載點' [root@chunk01 mfs]# chown -R mfs:mfs /data '//給掛載點屬主屬組'
-
啓動mfs服務
[root@chunk01 mfs]# /usr/local/mfs/sbin/mfschunkserver start [root@chunk01 mfs]# netstat -anpt | grep mfs tcp 0 0 0.0.0.0:9422 0.0.0.0:* LISTEN 103672/mfschunkserv tcp 0 0 192.168.233.133:49394 192.168.233.131:9420 ESTABLISHED 103672/mfschunkserv
2.4.4:使用 MFS 掛在到客戶端
-
安裝 FUSE
[root@master ~]# useradd -s /sbin/nologin -M mfs [root@master ~]# mount.cifs //192.168.11.1/ccc /mnt Password for root@//192.168.11.1/ccc: [root@master ~]# cd /mnt/mfs [root@master mfs]# tar zxvf moosefs-3.0.100-1.tar.gz -C /opt [root@master mfs]# tar xzvf fuse-2.9.2.tar.gz -C /opt [root@master mfs]# cd /opt/fuse-2.9.2 [root@client fuse-2.9.2]# ./configure [root@client fuse-2.9.2]# make && make install '//設置環境變量' [root@client fuse-2.9.2]# echo "export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH" >> /etc/profile [root@client fuse-2.9.2]# source /etc/profile '//使之不重啓即可生效'
-
安裝 MFS 客戶端
[root@client fuse-2.9.2]# cd ../moosefs-3.0.100/ [root@client moosefs-3.0.100]# ./configure \ > --prefix=/usr/local/mfs \ > --with-default-user=mfs \ > --with-default-group=mfs \ > --disable-mfsmaster \ > --disable-mfschunkserver \ > --enable-mfsmount [root@client moosefs-3.0.100]# make && make install
-
掛載 MFS 文件系統
[root@client moosefs-3.0.100]# cd [root@client ~]# mkdir /opt/mfs '//創建掛載點' [root@client ~]# modprobe fuse '//加載fuse模塊到內核' [root@client ~]# /usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.233.131 '//指向master服務器地址' mfsmaster accepted connection with parameters: read-write,restricted_ip,admin ; root mapped to root:root [root@client ~]# df -hT 文件系統 類型 容量 已用 可用 已用% 掛載點 。。。省略內容 192.168.233.131:9421 fuse.mfs 60G 13G 48G 21% /opt/mfs '//掛載成功'
-
MFS優化操作
'//MFS 在客戶端安裝完畢後, 會生成/usr/local/mfs/bin/目錄, 在這個目錄下有很多命令是用戶所需要的。 爲了方便使用這些命令,將/usr/local/mfs/bin 加入到環境變量中' [root@client ~]# echo "export PATH=/usr/local/mfs/bin:$PATH" >> /etc/profile [root@client ~]# source /etc/profile '//mfsgetgoal 命令用來查詢文件被複制的份數, 利用-r 命令可以對整個目錄進行遞歸,goal 是指文件被複制的份數' [root@client ~]# mfsgetgoal -r /opt/mfs /opt/mfs: directories with goal 2 : 1 '//命令 mfsgetgoal 用來設置文件被複制的份數, 生產環境 Chunk Server 節點數量應至少大於 2, 文件副本數小於等於 Chunk Server 服務器的數量' [root@client ~]# mfssetgoal -r 3 /opt/mfs/ /opt/mfs/: inodes with goal changed: 1 inodes with goal not changed: 0 inodes with permission denied: 0 '//創建文件測試一下' [root@client ~]# cd /opt/mfs [root@client mfs]# touch aaa.txt [root@client mfs]# mfsgetgoal aaa.txt aaa.txt: 3
2.4.5:創建 MFS 監控
-
master服務器啓動監控程序
[root@master ~]# /usr/local/mfs/sbin/mfscgiserv
-
mfscgiserv是用python編寫的一個web服務器,其監聽端口是9425,可以在masster server 上通過
/usr/local/mfs/sbin/mfscgiserv
來啓動,用戶利用瀏覽器就可以完全監控所有客戶掛接、Chunk server、Master server等。
2.4.6:訪問測試
- 宿主機瀏覽器打開http://192.168.233.131:9425
- 宿主機瀏覽器打開http://192.168.233.131:9425/mfs.cgi?masterhost=master ,注意主機名
- 其中各部分的含義如下:
- Info 部分: 顯示了 MFS 的基本信息。
- Servers 部分: 列出現有 Chunk Server。
- Disks 部分: 列出現有 Chunk Server 硬盤信息。
- Exports 部分: 列出可被掛載的目錄。
- Mounts 部分: 列出被掛載的目錄。
- Operations 部分: 顯示正在執行的操作。
- Resources 部分: 列出當前存儲信息。
- Quitas 部分: 列出當前配額信息。
- Master charts 部分: 顯示 Master Server 的操作情況, 讀、 寫、 刪除等操作。
- Server charts 部分: 顯示 Chunk Server 的操作情況、 數據傳輸率及系統狀態。
三:學習 MFS 維護及災難恢復
3.1:MFS 集羣的啓動與停止
- MFS 集羣啓動的順序如下
- (1) 啓動 mfsmaster 進程。
- (2) 啓動所有的 mfschunkserver 進程。
- (3) 啓動 mfsmetalogger 進程(如果配置了 mfsmetalogger)。
- (4) 在所有的客戶端掛載 MFS 文件系統。
- MFS 集羣停止的順序如下。
- (1) 在所有的客戶端卸載 MFS 文件系統。
- (2) 用 mfschunkserver stop 命令停止 chunkserver 進程。
- (3) 用 mfsmetalogger stop 命令停止 metalogger 進程。
- (4) 用 mfsmaster stop 命令停止 master 進程
3.2:MFS 災難恢復
-
整個 MFS 體系中, 直接斷電只有 Master 有可能無法啓動, 可以在 master 上使用命令
/usr/local/mfs/sbin/mfsmaster -a
修復 -
MFS 元數據通常有兩部分的數據, 分別如下:
-
1、主要元數據文件 metadata.mfs, 當 mfsmaster 運行時會被命名爲 metadata.mfs.back。
-
2、元數據改變日誌 changelog.*.mfs, 存儲了過去的 N 小時的文件改變(N 的數值是由
BACK_LOGS 參數設置的, 參數的設置在 mfschunkserver.cfg 配置文件中)。 -
3、在 Master 發生故障時, 可以從 MetaLogger 中恢復 Master, 步驟如下。
-
4、安裝一臺 mfsmaster, 利用同樣的配置來配置這臺 mfsmaster。
-
5、將 metalogger 上 /usr/local/mfs/var/mfs/目錄下的文件複製到 master 相應的目錄中
[root@master ~]#scp [email protected]:/usr/local/mfs/var/mfs/* /usr/local/mfs/var/mfs/
-
-
利用 mfsmetarestore 命令合併元數據changelogs
[root@master ~]#/usr/local/mfs/sbin/mfsmaster -a
- 如果是全新安裝的 Master, 恢復數據後, 要更改 metalogger 和 chunkserver 配置MASTER_HOST 的 IP, 客戶端也需要重新掛載
3.3:災難測試,恢復測試及其他測試參考資料
-
1.client 機器無論怎樣操作都不會影響master
-
- 客戶端強制kill -9殺掉mfsmount進程,需要先umount,然後再mount。否則會提示: - fuse: bad mount point `/usr/mfstest/': Transport endpoint is not connected - see: /usr/local/mfs/bin/mfsmount -h for help
-
-
2。matser、metalogger、chunker、client端,服務器關機(init0)和重啓(init6)時,程序都是正常關閉,無需修復。
-
3。master啓動後,metalogger、chunker、client三個元素都能自動與master建立連接。
-
- 正常啓動順序:matser---chunker---metalogger---client 關閉順序:client---chunker---metalogger---master - 但實際中無論如何順序啓動或關閉,未見任何異常。
-
-
4、整個mfs體系中,直接斷電只有master有可能無法啓動。
-
-使用mfsmetarestore -a修復才能啓動,如果無法修復,使用metalogger上的備份日誌進行恢復。(幾次測試發現:如果mfsmetarestore -a無法修復,則使用metalogger也無法修復)。 -強制使用metadata.mfs.back創建metadata.mfs,可以啓動master,但應該會丟失1小時的數據。 -mfs開發小組針對此問題回信:明確表示會丟失故障點到上一個整點之間的數據。和之前我猜測的一致。因爲對mfs的操作日誌都記錄到changelog.0.mfs裏面。changelog.0.mfs每小時合併一次到metadata.mfs中,如果突然斷電,則changelog.0.mfs裏面的信息就沒有合併到metadata中,強制使用metadata.mfs.back創建metadata.mfs,就會導致丟失changelog.0.mfs裏的數據。 -直接斷電測試過程,使用mfsmetarestore –a無法修復,使用metalogger也無法修復的情況較少發生。5次只有一次無法修復。
-
-
5、chunker的維持:chunker的塊(chunks)能夠自動複製或刪除
-
-對一個目錄設定“goal”,此目錄下的新創建文件和子目錄均會繼承此目錄的設定,但不會改變已經存在的文件及目錄的copy份數。但使用-r選項可以更改已經存在的copy份數。 -goal設置爲2,只要兩個chunker有一個能夠正常運行,數據就能保證完整性。 假如每個文件的goal(保存份數)都不小於2,並且沒有under-goal文件(可以用mfsgetgoal –r和mfsdirinfo命令來檢查),那麼一個單一的chunkserver在任何時刻都可能做停止或者是重新啓動。以後每當需要做停止或者是重新啓動另一個chunkserver的時候,要確定之前的chunkserver被連接,而且要沒有under-goal chunks。 -實際測試時,傳輸一個大文件,設置存儲2份。傳輸過程中,關掉chunker1,這樣絕對會出現有部分塊只存在chunker2上;啓動chunker1,關閉chuner2,這樣絕對會有部分塊只存在chuner1上。 把chunker2啓動起來。整個過程中,客戶端一直能夠正常傳輸。 -在客戶端查看,一段時間內,無法查看;稍後一段時間後,就可以訪問了。文件正常,使用mfsfileinfo 查看此文件,發現有的塊分佈在chunker1上,有的塊分佈在chuner2上。 使用mfssetgoal 2和mfssetgoal -r 2均不能改變此文件的目前塊的現狀。 但使用mfssetgoal -r 1後,所有塊都修改成1塊了,再mfssetgoal -r 2,所有塊都修改成2份了。 -測試chunker端,直接斷電情況下,chunker會不會出問題: a、數據傳輸過程中,關掉chunker1,等待數據傳輸完畢後,開機啓動chunker1. chunker1啓動後,會自動從chunker2複製數據塊。整個過程中文件訪問不受影響。 b、數據傳輸過程中,關掉chunker1,不等待數據傳輸完畢,開機啓動chunker1. chunker1啓動後,client端會向chunker1傳輸數據,同時chunker1也從chunker2複製缺失的塊。 -如果有三臺chunker,設置goal=2,則隨機挑選2個chunker存儲。 -如果有一個chunker不能提供服務,則剩餘的2個chunker上肯定有部分chunks保存的是一份。則在參數(REPLICATIONS_DELAY_DISCONNECT = 3600)後,只有一份的chunks會自動複製一份,即保存兩份。 保存兩份後,如果此時壞掉的chunker能夠提供服務後,此時肯定有部分chunks存儲了三份,mfs會自動刪除一份。 -當我增加第三個服務器做爲額外的chunkserver時,雖然goal設置爲2,但看起來第三個chunkserver從另外兩個chunkserver上覆制數據。 -硬盤空間平衡器是獨立地使用chunks的,因此一個文件的chunks會被重新分配到所有的chunkserver上。
-
-
6、chunks修復 :mfsfilerepair
-
-mfsfilerepair用來處理壞文件(如讀操作引起的I/O錯誤),使文件能夠部分可讀。在丟失塊的情況下使用0對丟失部分進行填充;在塊的版本號(version)不匹配時設置塊的版本號爲master上已知的能在chunkerservers找到的最高版本號;注意:因爲在第二種情況下,可能存在塊的版本號一樣,但內容不匹配,因此建議在文件修復後,對文件進行拷貝(不是快照!),並刪除原始文件。 Client端大文件傳輸過程中,強制拔下master主機電源,造成master非法關閉,使用mfsmetarestore -a修復後,master日誌報告有壞塊: Jan 19 17:22:17 ngmaster mfsmaster[3250]: chunkserver has nonexistent chunk (000000000002139F_00000001), so create it for future deletion Jan 19 17:22:18 ngmaster mfsmaster[3250]: (192.168.5.232:9422) chunk: 000000000002139F creation status: 20 Jan 19 17:25:18 ngmaster mfsmaster[3250]: chunk 000000000002139F has only invalid copies (1) - please repair it manually Jan 19 17:25:18 ngmaster mfsmaster[3250]: chunk 000000000002139F_00000001 - invalid copy on (192.168.5.232 - ver:00000000) Jan 19 17:26:43 ngmaster mfsmaster[3250]: currently unavailable chunk 000000000002139F (inode: 135845 ; index: 23) Jan 19 17:26:43 ngmaster mfsmaster[3250]: * currently unavailable file 135845: blog.xxx.cn-access_log200904.tar.gz Client端使用mfsfilerepair修復 [root@localhost mfstest]# /usr/local/mfs/bin/mfsfilerepair blog.xxx.cn-access_log200904.tar.gz blog.xxt.cn-access_log200904.tar.gz: chunks not changed: 23 chunks erased: 1 chunks repaired: 0 查看master日誌,發現: Jan 19 17:30:17 ngmaster mfsmaster[3250]: chunk hasn't been deleted since previous loop - retry Jan 19 17:30:17 ngmaster mfsmaster[3250]: (192.168.5.232:9422) chunk: 000000000002139F deletion status: 13 Jan 19 17:35:16 ngmaster mfsmaster[3250]: chunk hasn't been deleted since previous loop - retry Jan 19 17:35:16 ngmaster mfsmaster[3250]: (192.168.5.232:9422) chunk: 000000000002139F deletion status: 13 Client端執行以下操作後,master不再報告相關信息: mv blog.xxt.cn-access_log200904.tar.gz blog.xxt.cn-access_log200905.tar.gz
-
-
7、chunker的空間
-
-每一個chunkserver的磁盤都要爲增長中的chunks保留些磁盤空間,從而達到創建新的chunk。只有磁盤都超過256M並且chunkservers報告自由空間超過1GB總量纔可以被新的數據訪問。最小的配置,應該從幾個G 字節的存儲。 -每個chunkerserver每次以256M的磁盤空間進行申請,客戶端查看得到的磁盤總使用情況的是每個chunkerserver使用量的總和。例如:如果你有3個chunkerserver,7個分區磁盤,每次你的硬盤使用會增加3*7*256MB (大約5GB)。假如你有150T的硬盤空間,磁盤空間就不用過多考慮了。 -另外,如果你的chunkservers使用專用的磁盤,df將顯示正確的磁盤使用情況。但是如果你有其他的數據在你的MooseFS磁盤上,df將會計算你所有的文件。 -如果你想看你的MooseFS文件的使用情況,請使用'mfsdirinfo'命令。
-
-
8、快照snapshot
-
-可以快照任何一個文件或目錄,語法:mfsmakesnapshot src dst -但是src和dst必須都屬於mfs體系,即不能mfs體系中的文件快照到其他文件系統。 Mfsappendchunks:追加chunks到一個文件 snapshot測試: a、對一個文件做snapshot後,查看兩個文件的塊,是同一個塊。把原文件刪除,原文件刪除後(回收站中最初可以看到,但一段時間後,回收站中就徹底刪除了),snapshot文件仍然存在,並且可以訪問。使用mfsfileinfo查看,發現仍然是原來的塊。 b、對一個文件做snapshot後,查看兩個文件的塊,是同一個塊。把原文件修改後,發現原文件使用的塊名變了,即使用的是一個新塊。而snapshot文件仍然使用原來的塊。
-
-
9、回收站 trash bin
-
-設置文件或目錄的刪除時間。一個刪除的文件能夠存放在“ 垃圾箱”中的時間稱爲隔離時間, 這個時間可以用mfsgettrashtime 命令來查看,用mfssettrashtime 命令來設置。單位爲秒。 -單獨安裝或掛載MFSMETA 文件系統(mfsmount -m mountpoint),它包含目錄/ trash (包含仍然可以被還原的刪除文件的信息)和/ trash/undel (用於獲取文件)。 -把刪除的文件,移到/ trash/undel下,就可以恢復此文件。 -在MFSMETA 的目錄裏,除了trash 和trash/undel 兩個目錄,還有第三個目錄reserved,該目錄內有已經刪除的文件,但卻被其他用戶一直打開着。在用戶關閉了這些被打開的文件後,reserved 目錄中的文件將被刪除,文件的數據也將被立即刪除。此目錄不能進行操作。
-
-
10、文件描述符
-
-1.5.12版本,進行大量小文件寫時,出現了一個嚴重錯誤,有可能和操作系統文件描述符有關。操作系統默認文件描述符爲1024. -1.6.11版本默認爲100000 -建議上線時,master和chunker修改文件描述符,即修改/etc/security/limits.conf添加 * - nofile 65535
-
-
11、mfscgiserv
-
-Mfscgiserv 是一個python 腳本, 它的監聽端口是9425 ,使用/usr/local/mfs/sbin/mfscgiserv 來直接啓動,使用瀏覽器就可全面監控所有客戶掛接, chunkserver 及master server,客戶端的各種操作等。
-