Moosefs管理小技巧分享

运维 系统运维
之前写过一个初步介绍Moosefs基本概念的文章,仅是简单测试之后,对mfs的一些理解和认识。最近在实际环境中部署了一套MooseFS系统,用于备份和其他之用,在这个过程中又遇到了些问题,于是又重新找来文档复习理解了一遍,又加深了对MFS的了解,下面是这次学习的点点收获和大家分享下。

之前写过一个初步介绍Moosefs基本概念的文章,仅是简单测试之后,对mfs的一些理解和认识。最近在实际环境中部署了一套MooseFS系统,用于备份和其他之用,在这个过程中又遇到了些问题,于是又重新找来文档复习理解了一遍,又加深了对MFS的了解,下面是这次学习的点点收获和大家分享下。

1. 挂载目录管理

Moosefs系统支持客户端根据需要挂载对应子目录;默认不指定-S的话会挂载到根目录(/)下,当通过df –sh查看空间使用used显示的是当前整个mfs系统的硬盘使用情况;而挂载子目录则只会看到目录的使用情况。具体操作如下:

  1. Shell> mfsmount /mnt –H mfsmaster — 挂载到根目录(/)下  
  2.  
  3. Shell> mkdir –p /mnt/subdir  
  4.  
  5. Shell> umount /mnt  
  6.  
  7. Shell> mfsmount /mnt –H mfsmaster –S /subdir — 挂载到子目录(/subdir)下 

在Moosefs的管理中,可以找一台机器作为管理型的client端,在配置文件mfsexports.cfg中限制只有该台机器可以挂载到根目录下,同时也可限制只有该台机器可以挂载metadata目录(恢复误删除时可用到),而其他普通client端,则根据不同业务的需要让管理client端为其创建独立用途的目录,分别挂载到对应的子目录下,这样就可以细化管理控制权限。Mfsexports.cfg的配置如下:

  1. # managing client  
  2.  
  3. 192.168.0.2 / rw,alldirs,maproot=0 
  4.  
  5. 192.168.0.2 . rw  
  6.  
  7. # for db backup sub-folder  
  8.  
  9. 192.168.0.20 /backup/db rw.maproot=0 
  10.  
  11. # for image sub-folder  
  12.  
  13. 192.168.0.30 /app/image rw.maproot=0 

2. 客户端重启后自动挂载mfs目录

  1. Shell> vi /etc/rc.local  
  2.  
  3. /sbin/modprobe fuse  
  4.  
  5. /usr/bin/mfsmount /mnt1 -H mfsmaster -S /backup/db  
  6.  
  7. /usr/bin/mfsmount /mnt2 -H mfsmaster -S /app/image 

Moosefs官方网页上有提到,1.6.x以上的版本还可以通过/etc/fstab的方式,系统重启后自动挂载mfs文件系统,测试之后,并没有成功,原因是FUSE模块没有加载到内核,所以,我觉得用/etc/fstab,FUSE模块需要事先将其编译进系统内核中才行。fstab的配置如下:

  1. Shell> vi /etc/fstab  
  2.  
  3. mfsmount /mnt fuse mfsmaster=MASTER_IP,mfsport=9421,_netdev 0 0 (重启系统后挂载MFS的根目录)  
  4.  
  5. mfsmount /mnt fuse mfstermaster=MASTER_IP,mfsport=9421,mfssubfolder=/subdir,_netdev 0 0(重启系统后挂载MFS的子目录) 

采用fstab配置文件挂载方式可以通过如下命令,测试是否配置正确:

  1. 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。

责任编辑:黄丹 来源: mysqlsystems.com
相关推荐

2012-09-11 15:06:48

MooseFS

2011-07-15 17:35:19

JavaScript

2011-07-11 10:24:09

PHP

2011-07-12 18:20:45

降权

2011-06-28 13:56:43

JAVA

2011-07-05 14:59:17

java

2021-06-09 07:15:20

Go枚举技巧

2011-06-13 17:36:43

外链

2011-06-24 17:39:08

长尾关键词

2024-01-03 08:53:35

JavaScrip编程语言NodeJS

2009-12-03 16:54:36

PHP获取中国IP段

2010-01-28 10:55:14

Android电源管理

2013-01-09 10:14:34

2012-11-15 10:49:33

网络管理WAN以太网

2022-06-06 15:01:16

JavaScriptJSON前端

2010-11-12 10:13:46

数据中心改造

2015-08-17 15:53:58

Linux桌面

2011-07-06 16:00:28

ASP

2010-08-17 15:15:40

CSSIE8

2010-09-25 09:42:59

Java内存管理
点赞
收藏

51CTO技术栈公众号