前言:
- 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的最新稳定版下载地址:并且在客户端你将需要用到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
现在可以在看到一些信息(暂时还没有关于chunk servers的数据)
Backup server(metalogger) 的安装
用来安装metalogger 的主机,在性能上应该比master 强大(至少有更多的内存)。一旦主控服务器master 失效,只要导入changelogs 到元数据文件,备份服务器metalogger 将能接替发生故障的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自动启动。
Backup server(metalogger) 的安装
用来安装metalogger 的主机,在性能上应该比master 强大(至少有更多的内存)。一旦主控服务器master 失效,只要导入changelogs 到元数据文件,备份服务器metalogger 将能接替发生故障的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 上重复同样的操作。
现在在可以看到系统的全部信息,包括master server和chunk server。
客户端的安装
为了挂载基于MooseFS的文件系统,需要客户端安装FUSE包(版本至少是2.6,推荐>=2.7.2),如果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不存在,你必须去安装它.一种方法是从源码编译它。
- #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
可以在看到关于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:
- #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
按以下步骤安全停止MooseFS集群:
在所有机器上用umount命令卸载文件系统(在我们的示例中是:umount /mnt/mfs):
- 停止chunk server进程: /usr/sbin/mfschunkserver stop
- 停止metalogger进程: /usr/sbin/mfsmetalogger stop
- 停止master server进程: /usr/sbin/mfsmaster stop
【编辑推荐】
- CentOS如何安装MooseFS技术实战
- MooseFS的简介、部署及应用
- Moosefs基本概念总结
- MooseFS维护技巧集锦