实验室要以分布式文件系统为基础做实验,我按照网上的官方教程,并根据自己实验室的实际情况作了适当修改,搭建了以三台CentOS5.5为服务器的MFS分布式文件系统,具体配置流程如下:
我们假定使用的主机ip 地址分配如下:
· 主控服务器DB:
222.31.76.73/24——服务器6
· 主控备份服务器
· 存储块服务器兼客户端主机:
Web1:222.31.76.227/24——服务器3;
Web2:222.31.76.118/24——服务器4
主控服务器DB 安装
当我们安装主控服务器时,在配置过程中(./configure),可以取消安装chunk server
(--disable-mfschunkserver)以及MooseFS 客户端(--disable-mfsmount). 安装
主控服务器master 的具体步骤为:
1、添加mfs 组
#groupadd mfs
2、新增系统用户mfs
#useradd -g mfs mfs
3、切换目录
#cd /usr/src
4、解包归档文件
#tar -zxvf mfs-1.6.15.tar.gz
5、进入安装目录
#cd mfs-1.6.15
6、配置
#./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
7、编译并安装
#make
#make install
成功安装master 以后,系统会在/etc 目录自动生成样例配置文件,这些样例文件是以.dist
后缀命名。这里我们将借用这些样例文件作为MooseFS 主控服务器的目标配置文件:
1、切换目录
#cd /etc
2、复制样例文件,以得到master 所需的配置文件
#cp mfsmaster.cfg.dist mfsmaster.cfg
#cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
#cp mfsexports.cfg.dist mfsexports.cfg
如果我们打算更改这些配置文件中的某些项目的值,则需要打开特定配置文件相关文本行前的注释,然后修改跟随其后的值。因为被注释掉的行,即是MooseFS 内置的缺省值。
配置文件mfsexports.cfg 指定那些客户端主机可以远程挂接MooseFS 文件系统,以及授予挂接客户端什么样的访问权限。例如,我们指定只有222.31.76.x网段的主机可以以读写模式访问MooseFS 的整个共享结构资源(/)。在配置文件mfsexports.cfg 文件的第一行,先取消注释,然后把星号(*)改成222.31.76.0/24,以便我们可以得到下面的文本行:
222.31.76.0/24 / rw,alldirs,maproot=0
二进制文件metadata 和文本文件changelog 将被保存在目录/var/lib/mfs,这是因为我们安装过程的configure 步骤使用了选项 --localstatedir=/var/lib 。首次安装master 时,会自动生成一个名为metadata.mfs.empty 的元数据文件metadata,该文件是空的。MooseFS master 运必须有文件metadata.mfs,这个文件是从metadata.mfs.empty 改名而来:
1、切换目录
#cd /var/lib/mfs
2、重命名文件
#cp metadata.mfs.empty metadata.mfs
MooseFS master 运行以后,metadata.mfs 文件大小将发生变化,肯定不会是空文件了。
修改/etc/hosts 文件,以绑定主机名mfsmaster 与ip 地址222.31.76.73:
222.31.76.73 mfsmaster
这个时候,我们可以试着运行master 服务(服务将以安装配置configure 指定的用户运行,这我们的案例里,它是mfs):
#/usr/sbin/mfsmaster start
在一个生产环境里,我们应当设置自动启动脚本,以便操作系统重新启动时,MooseFS master也能自动运行。
为了监控MooseFS 当前运行状态,我们可以运行CGI 监控服务,这样就可以用浏览器查看整个MooseFS 的运行情况:
#/usr/sbin/mfscgiserv
现在,我们在浏览器地址栏输入http://222.31.76.73:9425 即可查看master 的运行情况(这个时候,是不能看见chunk server 的数据)。
注意:要想通过浏览器查看,一定要先关闭服务器的防火墙:
#service iptables stop
存储块服务器Web1&Web2安装
在每个chunk server 主机上执行下面的命令:
#groupadd mfs
#useradd -g mfs mfs
#cd /usr/src
#tar -zxvf mfs-1.6.15.tar.gz
#cd mfs-1.6.15
(下一步会调用到gcc、zlib-devel等库,注意这一步一定要在mfs-1.6.15目录下执行,若系统未安装gcc、zlib-devel等,则需先手动安装:#yum –y install gcc、#yum –y install zlib-devel)
#./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --enable-mfschunkserver –-enable-mfsmount[S1]
#make
#make install
准备chunk server 服务所需的配置文件:
#cd /etc/
#cp mfschunkserver.cfg.dist mfschunkserver.cfg
#cp mfshdd.cfg.dist mfshdd.cfg
为了测试这个安装,我们保留mfschunkserver.cfg 文件不做任何改动;如果读者想了解配置文件mfschunkserver.cfg 更详细的信息,请查看手册页 (man mfschunkserver.cfg)。
在配置文件mfshdd.cfg 中,我们给出了用于客户端挂接MooseFS 分布式文件系统根分区所使用的共享空间位置。建议在chunk server 上划分单独的空间给 MooseFS 使用,这样做的好处是便于管理剩余空间。
我们将sdb盘划分出两个分区sdb1和sdb2,给 MooseFS 使用,具体步骤为:
(1)创建分区(以sdb1为例,sdb2创建过程与其相似,将区号换为2即可)
①切换到dev目录
#cd /dev
②开启windows的磁盘管理器,开始对新盘进行相应操作(注意,新插的盘要重启后才能识别)
#fdisk ./sdb
③命令:p,查看当前新盘状态,会发现其属于未分配的空间
④命令:n,创建一个新的分区
⑤有两个选项:e(扩展分区)和p(主分区),选择p分配区号(1到4中选,sdb1就选1)
⑥再选择柱面起始位置(默认是可分配的第一个柱面,直接回车)
⑦选择分区大小:+204800M
⑧现在再用p命令查看可发现多了一个./sdb1分区,就是刚刚新建的分区
⑨执行以上分区操作并退出:w;若不想保存修改,则直接输入q退出。
另外,若想删除某个分区,输入d,再按相应提示操作即可。
(2)在硬盘分区上建立文件系统(只有创建了文件系统后,这个分区才能真正的使用实现IO操作)
①查看支持的文件系统:
#ls /sbin/mk*
②将刚刚的新分区创建为ext3文件系统:
#mkfs –t ext3 /dev/sdb1
#mkfs –t ext3 /dev/sdb2
现在就可以看到新增的文件系统了~
(3)挂载文件系统
①创建挂载点:
#mkdir /mnt/mfschunks1
#mkdir /mnt/mfschunks2
②挂在文件系统:
#mount /dev/sdb1 /mnt/mfschunks1
#mount /dev/sdb2 /mnt/mfschunks2
③为了让该文件系统在开机时能自动挂载,需要修改文件系统的入口文件/etc/fstab:
mount /dev/sdb1 /mnt/mfschunks1 ext3 defaults 0 0
mount /dev/sdb2 /mnt/mfschunks2 ext3 defaults 0 0
到此,新的文件系统就已成功挂载,可正常使用了~
此处我们假定要使用两个共享点/mnt/mfschunks1 和/mnt/mfschunks2,为此,我们在/etc/mfshdd.cfg 加入下面的文本行:
/mnt/mfschunks1
/mnt/mfschunks2
在启动chunk server 前,需确保用户mfs 有权限读写将要被挂接的分区(因为chunk server 运行时要在此创建一个.lock 的文件):
#chown -R mfs:mfs /mnt/mfschunks1
#chown -R mfs:mfs /mnt/mfschunks2
类似地,修改/etc/hosts 文件,增加下面的行:
222.31.76.73 mfsmaster
开始启动chunk server:
#/usr/sbin/mfschunkserver start
现在再通过浏览器访问 http://222.31.76.73:9425/ 应该可以看见这个MooseFS 系统的全部信息,包括主控master 和存储服务chunkserver 。
注意:要想通过浏览器查看,一定要先关闭服务器的防火墙:
#service iptables stop
客户端Users’ computers 安装
Web1(服务器3)和Web2(服务器4)同时作为客户端使用。
为了挂接基于MooseFS 分布式文件,客户端主机必须安装FUSE 软件包( fuse 版本号至少2.6,推荐使用版本号大于2.7.2 的fuse)。如果系统没有安装fuse,你必须手动对其进行安装:
#cd /usr/src
#tar -zxvf fuse-2.8.5.tar.gz
#cd fuse-2.8.5
#./configure --prefix=/usr --enable-static --enable-lib --enable-util --enable-example --with-pkgconfigdir=/usr/lib/pkgconfig/
#make
#make install
修改环境变量文件/etc/profile ,执行以下命令:
#export PKG_CONFIG_PATH=/usr/lib/pkgconfig:$PKG_CONFIG_PATH
假定客户端的挂接点是/mnt/mfs,我们将以下面的指令来使用MooseFS 分布式共享文件系统:
1、 创建挂接点
#mkdir -p /mnt/mfs
2、加载fuse模块到内核:
#modprobe fuse
3、开始挂接操作
#/usr/bin/mfsmount /mnt/mfs -H mfsmaster
执行命令df –h | grep mfs 检查分区情况,可能的输出如下:
/storage/mfschunks/mfschunks1
2.0G 69M 1.9G 4% /mnt/mfschunks1
/storage/mfschunks/mfschunks2
2.0G 69M 1.9G 4% /mnt/mfschunks2
mfs#mfsmaster:9421 3.2G 0 3.2G 0% /mnt/mfs
测试时一定要记得关闭服务器防火墙!!否则服务器的所有端口都会被禁止访问,通过浏览器访问是显示不出相应监测数据的!!
#service iptables stop
停止 MooseFS
为了安全停止MooseFS 集群,建议执行如下的步骤:
· 在所有客户端用Unmount 命令先卸载文件系统(本例将是: umount /mnt/mfs)
· 停止chunk server 进程: /usr/sbin/mfschunkserver stop
· 停止 metalogger 进程: /usr/sbin/mfsmetalogger stop
· 停止主控 master server 进程: /usr/sbin/mfsmaster stop
参考文献:
http://www.unixaid.info/index.php/unixtecspt/30-backup/258-moosev16.html
[S1]加这一句是因为该服务器也做客户端,所以实际是为后面客户端的配置命令做设置!另外,若要运行这一步,先确保fuse按照下面客户端的配置正确安装,并且设置相应的环境变量文件/etc/profile,否则这一步会报错:
checking for FUSE... no
configure: error: mfsmount build was forced, but fuse library is too old or not installed