MooseFS安装教程详解

运维 系统运维
下面我们介绍在Linux平台上一步一步安装MooseFS系统的过程,我们假设系统使用mfs用户运行并且mfs的所属组也为mfs。将要使用FHS(文件系统层次标准)兼容路径和源码mfs-1.6.15.tar.gz并且把它放到/usr/src下。我们将要说明怎样安装MooseFS系统在不同的专用机上以及怎样在一台服务器上做一个测试安装。

前言:

  • 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地址:

  1. Master server: 192.168.1.1  
  2. Metalogger server: 192.168.1.2  
  3. Chunk servers: 192.168.1.101 和 192.168.1.102  
  4. Users'computer(客户端): 192.168.2.x 

#p#

Master server 安装

当安装master server时我们在./configure禁用chunk server的安装(–disable-mfschunkserver)和客户端的安装(–disable-mfsmount).我们按以下步骤做:

  1. #groupadd mfs  
  2. #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  
  7. --localstatedir=/var/lib --with-default-user=mfs 
  8. --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount  
  9. #make  
  10. #make install 

示例配置文件将会建立在/etc下扩展名为.dist,我们使用这些作用我们最终的配置文件:

  1. #cd /etc  
  2. #cp mfsmaster.cfg.dist mfsmaster.cfg  
  3. #cp mfsmetalogger.cfg.dist mfsmetalogger.cfg  
  4. #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 因此像下面这样:

  1. 192.168.2.0/24        /       rw,alldirs,maproot=0 

二进制metadata文件和changelog文本文件存放在一个文件夹,该文件夹是在编译期间localstatedir所设置-在我们的例子中这个文件夹是:/var/lib/mfs.***安装会建立一个名字为metadata.mfs.empty的空的metadata文件.我们把这个空文件改变成metadata.mfs:

  1. #cd /var/lib/mfs  
  2. #cp  metadata.mfs.empty metadata.mfs 

我们也需要在/etc/hosts 指定主机名mfsmaster和主机IP地址192.168.1.1相对应(译者注:为了在配置文件中用主机名mfsmaster代替IP,做了一次简单DNS解析):

  1. 192.168.1.1     mfsmaster 

现在可以运行master server(server将要使用安装时给定的用户运行,在我们的实例中它是mfs):

  1. #/usr/sbin/mfsmaster start 

在生产环境中应该设置mfsmaster进程在操作系统启动时自动运行

我们现在也可以运行CGI监控在浏览器中查看当前MooseFS系统的状态:

  1. #/usr/sbin/mfscgiserv 

现在可以在http://192.168.1.1:9425/看到一些信息(暂时还没有关于chunk servers的数据)#p#

Backup server(metalogger) 的安装

用来安装metalogger 的主机,在性能上应该比master 强大(至少有更多的内存)。一旦主控服务器master 失效,只要导入changelogs 到元数据文件,备份服务器metalogger 将能接替发生故障的master,行使管理服务器的职能(关于这个的更多信息可以读http://www.moosefs.org/mini-howtos.html#redundant-master)

Metalogger 的安装和master server的安装是非常相似的,我们用以下命令:

  1. #groupadd mfs  
  2. #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  
  7. --localstatedir=/var/lib --with-default-user=mfs 
  8. --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount  
  9. #make  
  10. #make install  
  11. #cd /etc  
  12. #cp mfsmetalogger.cfg.dist mfsmetalogger.cfg 

同样,在/etc/hosts添加:

  1. 192.168.1.1   mfsmaster 

现在我们准备启动backup server进程:

  1. #/usr/sbin/mfsmetalogger start 

在生产环境中你应该设置mfsmetalogger自动启动。#p#

Chunk servers 的安装

我们用以下的命令在准备去安装chunk server的机器上:

  1. #groupadd mfs  
  2. #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  
  7. --localstatedir=/var/lib --with-default-user=mfs 
  8. --with-default-group=mfs --disable-mfsmaster  
  9. #make  
  10. #make install 

现在我们同样准备chunk server的配置文件:

  1. #cd /etc/  
  2. #cp  mfschunkserver.cfg.dist mfschunkserver.cfg  
  3. #cp  mfshdd.cfg.dist mfshdd.cfg 

因为我们的测试安装我们没有对mfschunkserver.cfg做任何改变;你能在手册页(man mfschunkserver.cfg)了解这个文件的更多信息。

在mfshdd.cfg文件我们指定具体位置,该位置已经被挂载在硬盘的根(/)分区,建议他们专门用于MooseFS-这是要适当管理空闲空间。

让我们假设将要使用/mnt/mfschunks1 和 /mnt/mfschunks2,因此我们添加这两行到mfshadd.cfg文件:

  1. /mnt/mfschunks1  
  2. /mnt/mfschunks2 

在开始运行chunk server之前我们需要确认用户mfs有写权限在这挂载的分区上(因为需要在这分区上建立.lock文件):

  1. #chown -R mfs:mfs /mnt/mfschunks1  
  2. #chown -R mfs:mfs /mnt/mfschunks2 

同样我们添加下面这行在/etc/hosts:

  1. 192.168.1.1     mfsmaster 

现在我们准备去开始chunk server:

  1. #/usr/sbin/mfschunkserver start 

在MooseFS系统中,我们在想要存储数据的每一个chunk server 上重复同样的操作。

现在在http://192.168.1.1:9245可以看到系统的全部信息,包括master server和chunk server。#p#

客户端的安装

为了挂载基于MooseFS的文件系统,需要客户端安装FUSE包(版本至少是2.6,推荐>=2.7.2),如果FUSE不存在,你必须去安装它.一种方法是从源码编译它-你能从这个网址得到它

http://sourceforge.net/projects/fuse/:

  1. #cd /usr/src  
  2. #tar -zxvf fuse-2.8.3.tar.gz  
  3. #cd fuse-2.8.3  
  4. #./configure  
  5. #make  
  6. #make install 

安装mfsmount包我做以下步骤:

  1. #tar -zxvf mfs-1.6.15.tar.gz  
  2. #cd mfs-1.6.15  
  3. #./configure --prefix=/usr --sysconfdir=/etc  
  4. --localstatedir=/var/lib --with-default-user=mfs 
  5. --with-default-group=mfs --disable-mfsmaster  
  6. --disable-mfschunkserver  
  7. #make  
  8. #make install 

在/etc/hosts文件添加一行:

  1. 192.168.1.1   mfsmaster 

在客户端机器上假设我们挂载文件系统在/mnt/mfs文件夹.我们使用以下命令:

  1. #mkdir -p /mnt/mfs  
  2. #/usr/bin/mfsmount /mnt/mfs -H mfsmaster 

现在我们执行df -h | grep mfs 命令以后可以得到类似以下这个信息:

  1. /storage/mfschunks/mfschunks1  
  2. 2.0G   69M  1.9G   4% /mnt/mfschunks1  
  3. /storage/mfschunks/mfschunks2  
  4. 2.0G   69M  1.9G   4% /mnt/mfschunks2  
  5. mfs#mfsmaster:9421    3.2G     0  3.2G   0% /mnt/mfs 

#p#

单独server上安装MooseFS

如果你想在单独一台机器上测试安装MooseFS系统,你可以按照以下步骤,在这我们不安装metalogger,假设server的IP地址为192.168.1.1

为了挂载基于MooseFS的文件系统,需要客户端安装FUSE包(版本至少是2.6,推荐>=2.7.2),如果FUSE不存在,你必须去安装它.一种方法是从源码编译它。

  1. #cd /usr/src  
  2. #tar -zxvf fuse-2.8.3.tar.gz  
  3. #cd fuse-2.8.3  
  4. #./configure  
  5. #make  
  6. #make install 

安装MooseFS:

  1. #groupadd mfs  
  2. #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  
  7. --localstatedir=/var/lib --with-default-user=mfs 
  8. --with-default-group=mfs 
  9. #make  
  10. #make install 

重要的是***文件系统能被MooseFS chunks独享,这样能很好的管理空闲空间,MooseFS没有考虑这样的情形:对于MooseFS可用的空闲空间也能被其他数据使用。如果不能建立一个单独的磁盘分区,用文件虚拟一个文件系统,对于这个测试安装的需要,我们准备两个2GB的文件(位置在/storage/mfschunks),格式化为ext3格式,并且分别挂载在 /mnt/mfschunks1 和 /mnt/mfschunks2。

  1. #mkdir -p /storage/mfschunks  
  2. #dd if=/dev/zero of=/storage/mfschunks/mfschunks1 bs=1024 count=1 
  3. seek=$((2*1024*1024-1))  
  4. #mkfs -t ext3 /storage/mfschunks/mfschunks1  
  5. #mkdir -p /mnt/mfschunks1  
  6. #mount -t ext3 -o loop /storage/mfschunks/mfschunks1 /mnt/mfschunks1  
  7. #dd if=/dev/zero of=/storage/mfschunks/mfschunks2 bs=1024 count=1 
  8. seek=$((2*1024*1024-1))  
  9. #mkfs -t ext3 /storage/mfschunks/mfschunks2  
  10. #mkdir -p /mnt/mfschunks2  
  11. #mount -t ext3 -o loop /storage/mfschunks/mfschunks2 /mnt/mfschunks2 

在开始运行chunk server之前我们需要确认用户mfs有写权限在这挂载的分区上(因为需要在这分区上建立.lock文件):

  1. #chown -R mfs:mfs /mnt/mfschunks1  
  2. #chown -R mfs:mfs /mnt/mfschunks2 

示例配置文件将会建立在/etc下扩展名为.dist,我们使用这些作用我们最终的配置文件:

  1. #cd /etc  
  2. #cp mfsexports.cfg.dist mfsexports.cfg  
  3. #cp mfsmaster.cfg.dist mfsmaster.cfg  
  4. #cp mfschunkserver.cfg.dist mfschunkserver.cfg  
  5. #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 因此像下面这样:

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

  1. #cd /var/lib/mfs  
  2. #cp  metadata.mfs.empty metadata.mfs 

也把下面一行添加到/etc/hosts:

  1. 192.168.1.1   mfsmaster 

此时可以运行master server,CGI monitor和chunk server的进程:

  1. #/usr/sbin/mfsmaster start  
  2. #/usr/sbin/mfscgiserv  
  3. #/usr/sbin/mfschunkserver start 

可以在http://192.168.1.1:9425/看到关于MooseFS系统当前状态的所有信息

现在挂载系统到/mnt/mfs:

  1. #mkdir -p /mnt/mfs  
  2. #/usr/bin/mfsmount /mnt/mfs -H mfsmaster 

执行df -h | grep mfs 命令以后,我们可以看到类似下面的信息:

  1. /storage/mfschunks/mfschunks1  
  2. 2.0G   69M  1.9G   4% /mnt/mfschunks1  
  3. /storage/mfschunks/mfschunks2  
  4. 2.0G   69M  1.9G   4% /mnt/mfschunks2  
  5. mfs#mfsmaster:9421    3.2G     0  3.2G   0% /mnt/mfs 

#p#

MooseFS的基本用法

在/mnt/mfs下建立folder1,在这个文件夹存储的文件有一个副本(setting goal=1):

  1. mkdir -p /mnt/mfs/folder1 

建立folder2,在这个文件夹下存储的文件有两个副本(setting goal=2):

  1. mkdir -p /mnt/mfs/folder2 

mfssetglal -r 命令设置文件夹的副本数:

  1. #mfssetgoal -r 1 /mnt/mfs/folder1  
  2. /mnt/mfs/folder1:  
  3. inodes with goal changed:                         0  
  4. inodes with goal not changed:                     1  
  5. inodes with permission denied: 
  1. #mfssetgoal -r 2 /mnt/mfs/folder2  
  2. /mnt/mfs/folder2:  
  3. inodes with goal changed:                         0  
  4. inodes with goal not changed:                     1  
  5. inodes with permission denied:                    0 

复制一个文件到这两个文件夹:

  1. cp /usr/src/mfs-1.6.15.tar.gz /mnt/mfs/folder1  
  2. cp /usr/src/mfs-1.6.15.tar.gz /mnt/mfs/folder2 

mfscheckfile 命令检查指定文件存储了几份副本

foler1有一个副本存储在一个chuk:

  1. #mfscheckfile /mnt/mfs/folder1/mfs-1.6.15.tar.gz  
  2. /mnt/mfs/folder1/mfs-1.6.15.tar.gz:  
  3. 1 copies: 1 chunks 

在foler2的文件mfs-1.6.15.tar.gz 保存两份副本:

  1. #mfscheckfile /mnt/mfs/folder2/mfs-1.6.15.tar.gz  
  2. /mnt/mfs/folder2/mfs-1.6.15.tar.gz:  
  3. 2 copies: 1 chunks 

附加说明.当所有的进程安装在单独的服务器上时,你会看到文件仅仅保存一个副本甚至在设置goal=2时-这是正确的因为尽管有两个硬盘但是只有一个chunk server。

停止MooseFS

按以下步骤安全停止MooseFS集群:

在所有机器上用umount命令卸载文件系统(在我们的示例中是:umount /mnt/mfs):

  1. 停止chunk server进程: /usr/sbin/mfschunkserver stop  
  2. 停止metalogger进程: /usr/sbin/mfsmetalogger stop  
  3. 停止master server进程: /usr/sbin/mfsmaster stop 

 

责任编辑:黄丹 来源: lsanotes.cn
相关推荐

2012-07-09 13:29:51

2011-08-24 11:03:33

LUA环境 安装

2011-06-24 17:05:07

QT QT 4.7.3 windows

2011-02-13 11:37:45

Android 3.0

2012-09-11 15:06:48

MooseFS

2012-09-11 14:55:29

Moosefs

2011-09-01 15:51:53

Qt插件VS 2010

2010-12-10 10:16:21

Android 2.3

2013-09-18 14:46:32

StormStorm集群

2012-09-11 16:09:04

MooseFS

2012-09-11 14:39:03

Moosefs

2011-07-29 18:02:06

2011-05-12 08:49:58

iPhone SDKXcode

2011-08-30 11:09:26

MySQL ProxyLua

2012-09-11 13:44:41

MooseFS系统

2010-09-16 15:13:30

Symbian^3Symbian

2011-08-30 10:08:38

Centos 5.2Mysql ProxyLUA

2011-02-18 14:02:36

Android R5 Android NDKAndroid NDK

2011-03-31 15:58:27

2011-06-24 08:46:37

Linux Qt x11 4.5
点赞
收藏

51CTO技术栈公众号