MooseFS (MFS) 為開源分散式檔案系統,採用 Master-Metalogger-Chunkserver-Client 四角色架構,支援擴充至數 PB、自動副本、故障自癒。本文以 5 節點叢集為例完整記錄部署流程。
| 角色 | IP | 主機名 | 功能 |
|---|---|---|---|
| Master | 192.168.1.248 | mfsmaster | 元資料管理、協調 |
| Backup (Metalogger) | 192.168.1.249 | mfsbackup | 元資料熱備、故障接管 |
| Chunkserver 1 | 192.168.1.250 | chunk1 | 資料塊儲存 |
| Chunkserver 2 | 192.168.1.238 | chunk2 | 資料塊儲存 |
| Client | 192.168.1.251 | client1 | 掛載使用 |
# 關閉 SELinux 與防火牆
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
service iptables stop
chkconfig iptables off
# 建立專用使用者
useradd mfs
# 統一 hosts 解析
echo "192.168.1.248 mfsmaster" >> /etc/hosts
# 下載編譯安裝
tar zxvf mfs-1.6.17.tar.gz
cd mfs-1.6.17
./configure --prefix=/usr/local/mfs \
--with-default-user=mfs --with-default-group=mfs \
--disable-mfschunkserver --disable-mfsmount
make && make install
# 初始化配置
cd /usr/local/mfs/etc
cp mfsexports.cfg.dist mfsexports.cfg
cp mfsmaster.cfg.dist mfsmaster.cfg
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
cd /usr/local/mfs/var/mfs
cp metadata.mfs.empty metadata.mfs
# 啟動 Master
/usr/local/mfs/sbin/mfsmaster start
# 啟動 CGI 監控介面(埠 9425)
/usr/local/mfs/sbin/mfscgiserv start
瀏覽器訪問 https://192.168.1.248:9425 觀察叢集狀態。
# 安裝同 Master,但啟用 metalogger
./configure --prefix=/usr/local/mfs \
--with-default-user=mfs --with-default-group=mfs \
--disable-mfschunkserver --disable-mfsmount
make && make install
cd /usr/local/mfs/etc
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
cp mfsexports.cfg.dist mfsexports.cfg
cp mfsmaster.cfg.dist mfsmaster.cfg
# 啟動 Metalogger
/usr/local/mfs/sbin/mfsmetalogger start
Metalogger 會自動連接 Master 同步元資料變更日誌,Master 掛點時可手動提升為新 Master。
# 安裝 chunkserver 元件
./configure --prefix=/usr/local/mfs \
--with-default-user=mfs --with-default-group=mfs \
--disable-mfsmaster
make && make install
cd /usr/local/mfs/etc
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg
# 規劃專用儲存目錄(建議獨立磁碟/分區)
mkdir -p /mfs1 /mfs2
chown -R mfs:mfs /mfs1 /mfs2
# 編輯 mfshdd.cfg 指定儲存路徑
echo -e "/mfs1\n/mfs2" > /usr/local/mfs/etc/mfshdd.cfg
# 啟動 Chunkserver
/usr/local/mfs/sbin/mfschunkserver start
啟動後重新整理 CGI 監控頁,應看到兩台 Chunkserver 上線、磁碟空間統計正常。
# 安裝 FUSE(核心 2.6.18-128 需 fuse-2.7.6;2.6.18-194 需 fuse-2.8.4)
tar zxvf fuse-2.7.6.tar.gz
cd fuse-2.7.6
./configure --enable-kernel-module
make && make install
modprobe fuse
lsmod | grep fuse # 確認載入
# 安裝 MFS Client 元件
./configure --prefix=/usr/local/mfs \
--with-default-user=mfs --with-default-group=mfs \
--disable-mfsmaster --disable-mfschunkserver
make && make install
# 掛載檔案系統
mkdir -p /data/mfs
/usr/local/mfs/bin/mfsmount /data/mfs -H mfsmaster
cd /data/mfs
mkdir folder1 folder2 folder3
# 設定副本數:1/2/3
/usr/local/mfs/bin/mfssetgoal -r 1 /data/mfs/folder1
/usr/local/mfs/bin/mfssetgoal -r 2 /data/mfs/folder2
/usr/local/mfs/bin/mfssetgoal -r 3 /data/mfs/folder3
# 測試寫入
cp /root/mfs-1.6.17.tar.gz /data/mfs/folder1/
cp /root/mfs-1.6.17.tar.gz /data/mfs/folder2/
cp /root/mfs-1.6.17.tar.gz /data/mfs/folder3/
於 CGI 介面觀察各 Chunkserver 複本分佈情況。
mfsmaster 程序、Chunkserver 連線數、磁碟使用率、副本不足狀態