部署MooseFS分散式檔案系統
MooseFS是一個分散式檔案系統,其本身具有高可用性,高拓展性,開放原始碼,高容錯,等在資料的讀寫效能方面,通過dd測試,MooseFS也就是寫入的速度稍微好於NFS,讀上沒有差別.
MooseFS的檔案系統結構體系可分為以下四種角色,分別對應不同的功能:
1.管理伺服器managing server (master)
2.元資料日誌伺服器Metalogger server(Metalogger)
3.資料儲存伺服器data servers (chunkservers)
4.客戶機掛載使用client computers
下面我們分別編譯安裝MFS的每個元件,實現一個企業環境的分散式檔案系統。
實驗環境與IP分配
[主機型別] [主機IP] [主機作用]
Master-Server 192.168.22.195 主控伺服器
MetaLogger-Server 192.168.22.191 備份伺服器
Cunk-Server 192.168.22.192 儲存節點1
Cunk-Server 192.168.22.193 儲存節點2
Client 192.168.22.194 掛載客戶端
◆Master-Server配置◆
Master-Server相當於MFS的大腦,用於管理協調伺服器之間正常工作,此處也就是主控伺服器
1.伺服器上的/etc/hosts中新增下面指向,指明主伺服器IP
vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.22.195 mfsmaster #在原來的基礎上新增這一條即可
2.原始碼編譯安裝Master-Server
yum install -y gcc zlib zlib-devel #安裝依賴 groupadd mfs #建立使用者組 useradd -M -s /sbin/nologin -g mfs mfs #建立使用者並將其加入使用者組 tar –xzvf moosefs-3.0.99.tar.gz cd moosefs-3.0.99/ ./configure --prefix=/usr --sysconfdir=/etc \ --localstatedir=/var/lib --with-default-user=mfs \ --with-default-group=mfs --disable-mfschunkserver \ --disable-mfsmount ------------------------------------------------------------------------------------------------ [引數解釋] --prefix=/usr #指定主目錄存放位置 --sysconfdir=/etc #指定配置檔案存放位置 --localstatedir=/var/lib #存放二進位制檔案metadata和文字檔案changelog --with-default-user=mfs #指定使用者 --with-default-group=mfs #指定組 --disable-mfschunkserver #關閉chunk-server --disable-mfsmount #關閉掛載 ------------------------------------------------------------------------------------------------ make && make install
3.成功安裝 Master 以後,系統會在/etc/mfs目錄自動生成樣例配置檔案,我們需要將此配置檔案修改一下,去掉字尾.sample配置檔案才會生效
cd /etc/mfs/
cp -a mfsmaster.cfg.sample mfsmaster.cfg
cp -a mfsmetalogger.cfg.sample mfsmetalogger.cfg
cp -a mfsexports.cfg.sample mfsexports.cfg
cd /var/lib/mfs
cp -a metadata.mfs.empty metadata.mfs
4.啟動Master-Server服務和CGI 監控服務
/usr/sbin/mfsmaster start #啟動Master-Server
/usr/sbin/mfscgiserv #啟動監控服務
5.設定Mfsmaster和mfscgiserv程序開機自啟動,此處將開機命令追加寫入/etc/profile系統每次開機都會執行這條指令,從而實現開機自啟動
echo "/usr/sbin/mfsmaster start" >> /etc/profile
echo "/usr/sbin/mfscgiserv" >> /etc/profile
6.現在我們來測試一下,使用瀏覽器訪問以下地址,成功的話會看到監控頁面
http://192.168.22.195:9425 #檢視是否啟動成功
◆MetaLogger-Server配置◆
Metalogger server主要作用是主控伺服器的備份,他的作用是起到主控伺服器崩潰了它自動頂上,所以Metalogger server 的安裝和master server的安裝大體是一樣的,當然備份伺服器不安裝照樣能使用,但是就失去了備份的功能
1.伺服器上的/etc/hosts中新增下面指向,指向主伺服器IP(可選/如果不做第1步則要做第3步)
vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.22.195 mfsmaster #在原來的基礎上新增這一條即可
2.原始碼編譯安裝Masterlog-Server
yum install -y gcc zlib zlib-devel #安裝依賴
groupadd mfs #建立使用者組
useradd -M -s /sbin/nologin -g mfs mfs #建立使用者並將其加入使用者組
tar -xzvf moosefs-3.0.99.tar.gz
cd moosefs-3.0.99/
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib \
--with-default-user=mfs --with-default-group=mfs \
--disable-mfschunkserver --disable-mfsmount
------------------------------------------------------------------------------------------------
[引數解釋]
--prefix=/usr #指定主目錄存放位置
--sysconfdir=/etc #指定配置檔案存放位置
--localstatedir=/var/lib #存放二進位制檔案metadata和文字檔案changelog
--with-default-user=mfs #指定使用者
--with-default-group=mfs #指定組
--disable-mfschunkserver #關閉chunk-server
--disable-mfsmount #關閉掛載
------------------------------------------------------------------------------------------------
make && make install
3.Masterlog-Server修改主配置檔案,指定主伺服器IP
[開啟配置檔案]
------------------------------------------------------------------------------------------------
cd /etc/mfs
cp -a mfsmetalogger.cfg.sample mfsmetalogger.cfg
------------------------------------------------------------------------------------------------
[配置引數]
------------------------------------------------------------------------------------------------
vim /etc/mfs/mfsmetalogger.cfg
META_DOWNLOAD_FREQ = 2 #元資料備份檔案下載請求頻率(預設24小時)
MASTER_HOST = 192.168.22.195 #指定Master-Server地址(主控地址)
------------------------------------------------------------------------------------------------
4.啟動Metalogger server備用伺服器程序,並設定開機自啟動
/usr/sbin/mfsmetalogger start
echo "/usr/sbin/mfsmetalogger start" >> /etc/profile
5.檢查從伺服器是否啟動成功並同步了資料
cd /var/lib/mfs #檢視是否有檔案產生(產生了檔案說明成功)
lsof -i :9419 #檢查埠是否開啟
◆Cunk-Server配置◆
真正儲存資料的節點,擴建它增加容量,可以多臺每個檔案可能在不同伺服器間拷貝
1.Cunk-server伺服器上的/etc/hosts中新增下面指向,指明主伺服器IP
(可選/如果不做第1步則要做第3步)
vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.22.195 mfsmaster #在原來的基礎上新增這一條即可
2.原始碼編譯安裝Cunk-Server
yum install -y gcc zlib zlib-devel #安裝依賴
groupadd mfs #建立使用者組
useradd -M -s /sbin/nologin -g mfs mfs #建立使用者並將其加入使用者組
tar -xzvf moosefs-3.0.99.tar.gz
cd moosefs-3.0.99/
./configure --prefix=/usr --sysconfdir=/etc \
--localstatedir=/var/lib --with-default-user=mfs \
--with-default-group=mfs --disable-mfsmaster
------------------------------------------------------------------------------------------------
[引數解釋]
--prefix=/usr #指定主目錄存放位置
--sysconfdir=/etc #指定配置檔案存放位置
--localstatedir=/var/lib #存放二進位制檔案metadata和文字檔案changelog
--with-default-user=mfs #指定使用者
--with-default-group=mfs #指定組
--disable-mfschunkserver #關閉chunk-server
--disable-mfsmount #關閉掛載
------------------------------------------------------------------------------------------------
make && make install
3.拷貝 Chunk-Server 服務所需的配置檔案(開啟配置檔案),去掉.sample字尾開啟
------------------------------------------------------------------------------------------------
cd /etc/mfs
cp -a mfschunkserver.cfg.sample mfschunkserver.cfg
cp -a mfshdd.cfg.sample mfshdd.cfg
------------------------------------------------------------------------------------------------
4.修改Chunk-Server 配置檔案,指定伺服器地址,埠,和共享的磁碟
vim /etc/mfs/mfschunkserver.cfg
MASTER_HOST = 192.168.22.195 #指明Master-Server伺服器地址
MASTER_PORT = 9420 #指明Master-Server埠
HDD_CONF_FILENAME = /etc/mfs/mfshdd.cfg #指明哪個配置檔案來配置共享磁碟的
5.編輯/etc/mfs/mfshdd.cfg,在最後面新增下面的文字行,並建立相應掛載目錄
在配置檔案 mfshdd.cfg 中我們給出了用於客戶端掛接 MooseFS 分散式檔案系統根分割槽所使用的共享空間位置.
建議在Chunk-Server上劃分單獨的空間給 MooseFS 使用,這樣做的好處是便於管理剩餘空間.
此處我們假定要使用一個共享點/mnt/mfschunk(如果沒有,請先建立共享點).
------------------------------------------------------------------------------------------------
[寫入配置]
vim /etc/mfs/mfshdd.cfg
/mnt/mfschunk #Chunk-Server共享的目錄
------------------------------------------------------------------------------------------------
[建立共享目錄]
mkdir -p /mnt/mfschunk
chown -R mfs:mfs /mnt/mfschunk
------------------------------------------------------------------------------------------------
6.啟動 Cunk-Server 服務,並設定開機自啟動
/usr/sbin/mfschunkserver start
echo "/usr/sbin/mfschunkserver start" >> /etc/profile
7.現在通過瀏覽器訪問,主控地址
網頁中,應該可以看見這個 MooseFS 系統的全部資訊(包括主控 master和儲存服務 chunkserver)
在Disks上可以看到我們的掛載/ghost目錄了
◆Client客戶端配置◆
實際的使用節點,例如:每臺Apache都掛載上共享目錄,即可實現所有Apache伺服器全部共享一個目錄
1.在/etc/hosts中新增下面指向,指明主伺服器IP(可選/不指定則要通過IP掛載)
vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.22.195 mfsmaster #在原來的基礎上新增這一條即可
2.為了掛載基於MooseFS的檔案系統,需要所有客戶端安裝FUSE包
tar -xzvf fuse-2.9.3.tar.gz
cd fuse-2.9.3/
./configure
make && make install
3.Linux下執行下面命令,不然編譯mfsmount會報Fuse不存在的錯
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
4.編譯安裝客戶端軟體mfsmount
yum install -y gcc zlib zlib-devel #安裝依賴
groupadd mfs #建立使用者組
useradd -M -s /sbin/nologin -g mfs mfs #建立使用者並將其加入使用者組
tar -xzvf moosefs-3.0.99.tar.gz
cd moosefs-3.0.99/
./configure --prefix=/usr --sysconfdir=/etc \
--localstatedir=/var/lib --with-default-user=mfs \
--with-default-group=mfs --disable-mfsmaster \
--disable-mfschunkserver
------------------------------------------------------------------------------------------------
[引數解釋]
--prefix=/usr #指定主目錄存放位置
--sysconfdir=/etc #指定配置檔案存放位置
--localstatedir=/var/lib #存放二進位制檔案metadata和文字檔案changelog
--with-default-user=mfs #指定使用者
--with-default-group=mfs #指定組
--disable-mfschunkserver #關閉chunk-server
--disable-mfsmount #關閉掛載
------------------------------------------------------------------------------------------------
make && make install
5.假定客戶端的掛接點是 /media,我們將以下面的指令來使用 MooseFS 分散式系統
/usr/bin/mfsmount/mfsmount /media -H mfsmaster #不指定掛接地址
/usr/bin/mfsmount/mfsmount /media -H 192.168.1.12 #掛接地址掛載(指定主儲存IP)
#上面的解釋,用/usr/bin/mfsmount將192.168.22.195的資源掛載到本地/media下
#掛載成功後,執行命令 df -h 檢視分割槽情況
6.應該寫入配置檔案/etc/fstab或者/etc/profile開機自動掛載
echo "/usr/bin/mfsmount /media -H 192.168.22.195" >> /etc/profile
◆MooseFS常用功能◆
1.資料誤刪除恢復操作,垃圾回收站機制
mfssettrashtime 64800 /ghost/l1.txt #給1.txt設定一個儲存時間
mkdir /back
chown mfs.mfs /back
mfsmount -m /back -H 192.168.22.195 #指定伺服器IP
find . -name *1.txt* #搜尋刪除的1.txt
mv 002/00000002\|1.txt /back/trash/undel/ #拿到undel佇列裡,就恢復了
2.快照功能(提取資料)
mkdir /back
chown mfs.mfs back/
mfsmakesnapshot 1.txt back/ #拷貝1.txt的源資訊到back/目錄下
cd back/ #拷貝出來的資料
3.冗餘 goal 設定(自定義備份個數)
mfsgetgoal /ghost/1.txt #檢視1.txt的冗餘數
mfsfileinfo /ghost/1.txt #檢視1.txt的冗餘分佈在那幾臺機器上
mfssetgoal 3 /ghost/1.txt #設定1.txt的冗餘個數 (要備份幾份)
4.還原 master資料(主伺服器的宕機/資料丟失/恢復資料)
我們要去從伺服器,將從裡的資料拷貝到主上,並重新建立檔案索引,即可恢復丟失檔案
scp /usr/local/mfs/var/mfs/* [email protected]:/usr/local/mfs/var/mfs
mfsmaster -a #自動恢復重新建立索引
netstat -an |grep "9419" #檢查是否開啟成功