该文章翻译自http://www.moosefs.org/tl_files/manpageszip/moosefs-step-by-step-tutorial-v.1.1.pdf,由于本人英语水平有限,不当之处请告之谢谢!
概述
MooseFS 在专用机器上的安装过程
Master server 的安装
Backup server(metalogger)的安装
chunk servers 的安装
客户端的安装
单独server上安装MooseFS
MooseFS的基本用法
停止MooseFS
概述
下面我们介绍在Linux平台上一步一步安装MooseFS系统的过程,我们假设系统使用mfs用户运行并且mfs的所属组也为mfs.将要使用FHS(文件系统层次标准)兼容路径和源码mfs-1.6.15.tar.gz并且把它放到/usr/src下. 我们将要说明怎样安装MooseFS系统在不同的专用机上以及怎样在一台服务器上做一个测试安装
MooseFS的最新稳定版下载地址:http://sourceforge.net/projects/moosefs/,并且在客户端你将需要用到FUSE 包,这个包从以下地址下载:http://sourceforge.net/projects/fuse/.
MooseFS在专用机器上的安装过程
我们假设我们的机器使用以下的IP地址:
Master server: 192.168.1.1 Metalogger server: 192.168.1.2 Chunk servers: 192.168.1.101 和 192.168.1.102 Users'computer(客户端): 192.168.2.x
Master server 安装
当安装master server时我们在./configure禁用chunk server的安装(–disable-mfschunkserver)和客户端的安装(–disable-mfsmount).我们按以下步骤做:
#groupadd mfs #useradd -g mfs mfs #cd /usr/src #tar -zxvf mfs-1.6.15.tar.gz #cd mfs-1.6.15 #./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount #make #make install
示例配置文件将会建立在/etc下扩展名为.dist,我们使用这些作用我们最终的配置文件
#cd /etc #cp mfsmaster.cfg.dist mfsmaster.cfg #cp mfsmetalogger.cfg.dist mfsmetalogger.cfg #cp mfsexports.cfg.dist mfsexports.cfg
如何我们想改变任意设置,应该取消该行的注释然后写一个不同的值.对于注释掉的行,系统将使用内置的默认值.
mfsmaster.cfg 文件包含master server的设置,这里我们没有做任何改变,你能在手册页(man mfsmaster.cfg)了解这个文件的更多信息
mfsexports.cfg文件指定哪个客户端可以挂载MooseFS文件系统并且拥有什么权限.在我们的例子中指定仅仅192.168.2.x的机器能读写MooseFS的整个架构.该文件的第一行,并有这行没有注释我们把星号(*)改变为192.168.2.0/24 因此像下面这样:
192.168.2.0/24 / rw,alldirs,maproot=0
二进制metadata文件和changelog文本文件存放在一个文件夹,该文件夹是在编译期间localstatedir所设置-在我们的例子中这个文件夹是:/var/lib/mfs.首次安装会建立一个名字为metadata.mfs.empty的空的metadata文件.我们把这个空文件改变成metadata.mfs:
#cd /var/lib/mfs #cp metadata.mfs.empty metadata.mfs
我们也需要在/etc/hosts 指定主机名mfsmaster和主机IP地址192.168.1.1相对应(译者注:为了在配置文件中用主机名mfsmaster代替IP,做了一次简单DNS解析)
192.168.1.1 mfsmaster
现在可以运行master server(server将要使用安装时给定的用户运行,在我们的实例中它是mfs):
#/usr/sbin/mfsmaster start
在生产环境中应该设置mfsmaster进程在操作系统启动时自动运行
我们现在也可以运行CGI监控在浏览器中查看当前MooseFS系统的状态:
#/usr/sbin/mfscgiserv
现在可以在http://192.168.1.1:9425/看到一些信息(暂时还没有关于chunk servers的数据)
Backup server(metalogger) 的安装
用来安装metalogger 的主机,在性能上应该比master 强大(至少有更多的内存)。一旦主控
服务器master 失效,只要导入changelogs 到元数据文件,备份服务器metalogger 将能接替发生
故障的master,行使管理服务器的职能
(关于这个的更多信息可以读http://www.moosefs.org/mini-howtos.html#redundant-master)
Metalogger 的安装和master server的安装是非常相似的,我们用以下命令:
#groupadd mfs #useradd -g mfs mfs #cd /usr/src #tar -zxvf mfs-1.6.15.tar.gz #cd mfs-1.6.15 #./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount #make #make install #cd /etc #cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
同样,在/etc/hosts添加:
192.168.1.1 mfsmaster
现在我们准备启动backup server进程:
#/usr/sbin/mfsmetalogger start
在生产环境中你应该设置mfsmetalogger自动启动.
Chunk servers 的安装
我们用以下的命令在准备去安装chunk server的机器上
#groupadd mfs #useradd -g mfs mfs #cd /usr/src #tar -zxvf mfs-1.6.15.tar.gz #cd mfs-1.6.15 #./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster #make #make install
现在我们同样准备chunk server的配置文件
#cd /etc/ #cp mfschunkserver.cfg.dist mfschunkserver.cfg #cp mfshdd.cfg.dist mfshdd.cfg
因为我们的测试安装我们没有对mfschunkserver.cfg做任何改变;你能在手册页(man mfschunkserver.cfg)了解这个文件的更多信息.
在mfshdd.cfg文件我们指定具体位置,该位置已经被挂载在硬盘的根(/)分区,建议他们专门用于MooseFS-这是要适当管理空闲空间.
让我们假设将要使用/mnt/mfschunks1 和 /mnt/mfschunks2,因此我们添加这两行到mfshadd.cfg文件:
/mnt/mfschunks1 /mnt/mfschunks2
在开始运行chunk server之前我们需要确认用户mfs有写权限在这挂载的分区上(因为需要在这分区上建立.lock文件)
#chown -R mfs:mfs /mnt/mfschunks1 #chown -R mfs:mfs /mnt/mfschunks2
同样我们添加下面这行在/etc/hosts
192.168.1.1 mfsmaster
现在我们准备去开始chunk server:
#/usr/sbin/mfschunkserver start
在MooseFS系统中,我们在想要存储数据的每一个chunk server 上重复同样的操作。
现在在http://192.168.1.1:9245可以看到系统的全部信息,包括master server和chunk server
客户端的安装
为了挂载基于MooseFS的文件系统,需要客户端安装FUSE包(版本至少是2.6,推荐>=2.7.2),如果FUSE不存在,你必须去安装它.一种方法是从源码编译它-你能从这个网址得到它
http://sourceforge.net/projects/fuse/:
#cd /usr/src #tar -zxvf fuse-2.8.3.tar.gz #cd fuse-2.8.3 #./configure #make #make install
安装mfsmount包我做以下步骤:
#tar -zxvf mfs-1.6.15.tar.gz #cd mfs-1.6.15 #./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver #make #make install
在/etc/hosts文件添加一行:
192.168.1.1 mfsmaster
在客户端机器上假设我们挂载文件系统在/mnt/mfs文件夹.我们使用以下命令
#mkdir -p /mnt/mfs #/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
单独server上安装MooseFS
如果你想在单独一台机器上测试安装MooseFS系统,你可以按照以下步骤,在这我们不安装metalogger,假设server的IP地址为192.168.1.1
为了挂载基于MooseFS的文件系统,需要客户端安装FUSE包(版本至少是2.6,推荐>=2.7.2),如果FUSE不存在,你必须去安装它.一种方法是从源码编译它-你能从这个网址得到它
http://sourceforge.net/projects/fuse/:
#cd /usr/src #tar -zxvf fuse-2.8.3.tar.gz #cd fuse-2.8.3 #./configure #make #make install
安装MooseFS:
#groupadd mfs #useradd -g mfs mfs #cd /usr/src #tar -zxvf mfs-1.6.15.tar.gz #cd mfs-1.6.15 #./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs #make #make install
重要的是最好文件系统能被MooseFS chunks独享,这样能很好的管理空闲空间,MooseFS没有考虑这样的情形:对于MooseFS可用的空闲空间也能被其他数据使用。如果不能建立一个单独的磁盘分区,用文件虚拟一个文件系统,对于这个测试安装的需要,我们准备两个2GB的文件(位置在/storage/mfschunks),格式化为ext3格式,并且分别挂载在 /mnt/mfschunks1 和 /mnt/mfschunks2.
#mkdir -p /storage/mfschunks #dd if=/dev/zero of=/storage/mfschunks/mfschunks1 bs=1024 count=1 seek=$((2*1024*1024-1)) #mkfs -t ext3 /storage/mfschunks/mfschunks1 #mkdir -p /mnt/mfschunks1 #mount -t ext3 -o loop /storage/mfschunks/mfschunks1 /mnt/mfschunks1 #dd if=/dev/zero of=/storage/mfschunks/mfschunks2 bs=1024 count=1 seek=$((2*1024*1024-1)) #mkfs -t ext3 /storage/mfschunks/mfschunks2 #mkdir -p /mnt/mfschunks2 #mount -t ext3 -o loop /storage/mfschunks/mfschunks2 /mnt/mfschunks2
在开始运行chunk server之前我们需要确认用户mfs有写权限在这挂载的分区上(因为需要在这分区上建立.lock文件)
#chown -R mfs:mfs /mnt/mfschunks1 #chown -R mfs:mfs /mnt/mfschunks2
示例配置文件将会建立在/etc下扩展名为.dist,我们使用这些作用我们最终的配置文件
#cd /etc #cp mfsexports.cfg.dist mfsexports.cfg #cp mfsmaster.cfg.dist mfsmaster.cfg #cp mfschunkserver.cfg.dist mfschunkserver.cfg #cp mfshdd.cfg.dist mfshdd.cfg
mfsexports.cfg文件和mfsmaster.cfg 涉及master server的设置,mfschunkserver.cfg和mfshdd.cfg文件涉及chunk server的设置
mfsexports.cfg文件指定哪个客户端可以挂载MooseFS文件系统并且拥有什么权限.在我们的例子中指定仅仅192.168.1.x的机器能读写MooseFS的整个架构.该文件的第一行,并有这行没有注释我们把星号(*)改变为192.168.1.0/24 因此像下面这样:
192.168.1.0/24 / rw,alldirs,maproot=0
在我们的示例中mfsmaster.cfg和mfschunkserver.cfg文件中的选项没有做任何改变
二进制metadata文件和changelog文本文件存放在一个文件夹,该文件夹是在编译期间localstatedir所设置-在我们的例子中这个文件夹是:/var/lib/mfs.首次安装会建立一个名字为metadata.mfs.empty的空的metadata文件.我们把这个空文件改变为metadata.mfs:
#cd /var/lib/mfs #cp metadata.mfs.empty metadata.mfs
也把下面一行添加到/etc/hosts
192.168.1.1 mfsmaster
此时可以运行master server,CGI monitor和chunk server的进程:
#/usr/sbin/mfsmaster start #/usr/sbin/mfscgiserv #/usr/sbin/mfschunkserver start
可以在http://192.168.1.1:9425/看到关于MooseFS系统当前状态的所有信息
现在挂载系统到/mnt/mfs
#mkdir -p /mnt/mfs #/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
MooseFS的基本用法
在/mnt/mfs下建立folder1,在这个文件夹存储的文件有一个副本(setting goal=1):
mkdir -p /mnt/mfs/folder1
建立folder2,在这个文件夹下存储的文件有两个副本(setting goal=2):
mkdir -p /mnt/mfs/folder2
mfssetglal -r 命令设置文件夹的副本数:
#mfssetgoal -r 1 /mnt/mfs/folder1 /mnt/mfs/folder1: inodes with goal changed: 0 inodes with goal not changed: 1 inodes with permission denied: 0
#mfssetgoal -r 2 /mnt/mfs/folder2 /mnt/mfs/folder2: inodes with goal changed: 0 inodes with goal not changed: 1 inodes with permission denied: 0
复制一个文件到这两个文件夹:
cp /usr/src/mfs-1.6.15.tar.gz /mnt/mfs/folder1 cp /usr/src/mfs-1.6.15.tar.gz /mnt/mfs/folder2
mfscheckfile 命令检查指定文件存储了几份副本
foler1有一个副本存储在一个chuk:
#mfscheckfile /mnt/mfs/folder1/mfs-1.6.15.tar.gz /mnt/mfs/folder1/mfs-1.6.15.tar.gz: 1 copies: 1 chunks
在foler2的文件
mfs-1.6.15.tar.gz 保存两份副本:
#mfscheckfile /mnt/mfs/folder2/mfs-1.6.15.tar.gz /mnt/mfs/folder2/mfs-1.6.15.tar.gz: 2 copies: 1 chunks
附加说明.当所有的进程安装在单独的服务器上时,你会看到文件仅仅保存一个副本甚至在设置goal=2时-这是正确的因为尽管有两个硬盘但是只有一个chunk server
你能读更多关于MooseFS命令用法的信息在这个页面:
http://www.moosefs.org/reference-guide.html#using-moosefs
我们也推荐读这FAQ页面:
http://www.moosefs.org/moosefs-faq.html
停止MooseFS
按以下步骤安全停止MooseFS集群:
在所有机器上用umount命令卸载文件系统(在我们的示例中是:umount /mnt/mfs)
停止chunk server进程: /usr/sbin/mfschunkserver stop 停止metalogger进程: /usr/sbin/mfsmetalogger stop 停止master server进程: /usr/sbin/mfsmaster stop
用来安装metalogger 的主机,在性能上应该比master 强大(至少有更多的内存)。一旦主控
服务器master 失效,只要导入changelogs 到元数据文件,备份服务器metalogger 将能接替发生
故障的master,行使管理服务器的职能。。。。。。。。。
多谢指导,已做更正!
路过… 支持支持 .
在编译客户端的时候别忘记:
–enable-mfsmount