Moosefs管理小技巧分享
之前寫過一個初步介紹Moosefs基本概念的文章,僅是簡單測試之后,對mfs的一些理解和認識。最近在實際環境中部署了一套MooseFS系統,用于備份和其他之用,在這個過程中又遇到了些問題,于是又重新找來文檔復習理解了一遍,又加深了對MFS的了解,下面是這次學習的點點收獲和大家分享下。
1. 掛載目錄管理
Moosefs系統支持客戶端根據需要掛載對應子目錄;默認不指定-S的話會掛載到根目錄(/)下,當通過df –sh查看空間使用used顯示的是當前整個mfs系統的硬盤使用情況;而掛載子目錄則只會看到目錄的使用情況。具體操作如下:
- Shell> mfsmount /mnt –H mfsmaster — 掛載到根目錄(/)下
- Shell> mkdir –p /mnt/subdir
- Shell> umount /mnt
- Shell> mfsmount /mnt –H mfsmaster –S /subdir — 掛載到子目錄(/subdir)下
在Moosefs的管理中,可以找一臺機器作為管理型的client端,在配置文件mfsexports.cfg中限制只有該臺機器可以掛載到根目錄下,同時也可限制只有該臺機器可以掛載metadata目錄(恢復誤刪除時可用到),而其他普通client端,則根據不同業務的需要讓管理client端為其創建獨立用途的目錄,分別掛載到對應的子目錄下,這樣就可以細化管理控制權限。Mfsexports.cfg的配置如下:
- # managing client
- 192.168.0.2 / rw,alldirs,maproot=0
- 192.168.0.2 . rw
- # for db backup sub-folder
- 192.168.0.20 /backup/db rw.maproot=0
- # for image sub-folder
- 192.168.0.30 /app/image rw.maproot=0
2. 客戶端重啟后自動掛載mfs目錄
- Shell> vi /etc/rc.local
- /sbin/modprobe fuse
- /usr/bin/mfsmount /mnt1 -H mfsmaster -S /backup/db
- /usr/bin/mfsmount /mnt2 -H mfsmaster -S /app/image
Moosefs官方網頁上有提到,1.6.x以上的版本還可以通過/etc/fstab的方式,系統重啟后自動掛載mfs文件系統,測試之后,并沒有成功,原因是FUSE模塊沒有加載到內核,所以,我覺得用/etc/fstab,FUSE模塊需要事先將其編譯進系統內核中才行。fstab的配置如下:
- Shell> vi /etc/fstab
- mfsmount /mnt fuse mfsmaster=MASTER_IP,mfsport=9421,_netdev 0 0 (重啟系統后掛載MFS的根目錄)
- mfsmount /mnt fuse mfstermaster=MASTER_IP,mfsport=9421,mfssubfolder=/subdir,_netdev 0 0(重啟系統后掛載MFS的子目錄)
采用fstab配置文件掛載方式可以通過如下命令,測試是否配置正確:
- Shell> mount –a –t fuse
3. FUSE的安裝問題
FUSE模塊是mfsmount客戶端所依賴的模塊,我們所作的操作,先由FUSE接收,然后通過mfsmount進程與mfsmaster聯系,***應用到chunkserver上。FUSE(Filesystem in Userspace)叫作用戶態文件系統,它提供了一個框架,讓我們開發的文件系統在用戶態下運行操作,減少了開發文件系統與內核模塊之間的過多接觸,了解后知道原來偉大的ZFS就是FUSE的。在Moosefs的文檔中,提到Linux內核2.6.14以后的版本中都將支持FUSE模塊,也就是說在系統目錄/lib/modules/`uname -r`/kernel/fs/下會有一個fuse的子目錄,里面會包含一個fuse.ko的文件。當我們編譯安裝好fuse后,執行modprobe fuse命令,就可以動態將FUSE模塊加載進內核,有時候會出現找不到該模塊的提示,那就是在/lib/modules/`uname -r`/kernel/fs/目錄下沒有fuse這個子目錄,缺少那個ko文件。本人安裝時就遇到了,內核為2.6.18-92.el5,沒有fuse子目錄。當時使用的fuse-2.8.5,默認編譯安裝也沒有生成這個文件;后來韓老師幫我找問題,他用2.7.4版本默認編譯安裝(沒添加任何configure選項)后,modprobe便可以成功加載fuse模塊,這時fuse那個子目錄也被創建,網上有看到說需要加這個編譯項–enable-kernel-module。
4. Moosefs可以節省空間
不小心發現拷貝到mfs目錄下的文件大小比ext3下的小了很多,開始以為是少同步了一些文件,于是又將mfs下的所有文件拷回到ext3下,發現大小和之前的一致,于是,隱約感覺到mfs難道可以節省空間。測試后發現,mfs對小文件(我用的是8K左右的)存儲空間的節省非常明顯,可以節省一半的空間,之后我又拷被了一個1.7G文件到mfs下,大小為1.6G。