这几天在安装mfs,遇到一些问题,在此记录一下。关于mfs的介绍我这里就不再废话了,直接进入主题。

 

主机ip 地址分配如下

 

主控服务器Master server: 192.168.10.135

主控备份服务器Metalogger server: 192.168.10.133

存储块服务器Chunk servers: 192.168.10.134和192.168.10.77

客户端主机 (clients): 192.168.10.245

 

主控服务器Master server 安装

useradd mfs  -s /sbin/nologin

tar -zxvf mfs-1.6.16.tar.gz

cd mfs-1.6.16

 

 

./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs

make && make install

 

(二) 配置元数据服务 

元数据服务器的配置文件被放置于安装目录/usr/local/mfs/etc。与mfs-1.5.12版本不同的是:

mfs-1.6.x版安装完成只有模版文件,其后缀形如mfsmaster.cfg.dist。为了使mfs master正常

工作,需要两个配置文件mfsmaster.cfg及mfsexports.cfg,前者为主配置文件,后者为权限控

制文件(mfs客户端挂接时使用)。 

 

(1)主配置文件mfsmaster.cfg,可直接从模版文件拷贝而来,

cp /usr/local/mfs/etc/mfsmaster.cfg.dist /usr/local/mfs/etc/mfsmaster.cfg

打开这个配置文件

/usr/local/mfs/etc/mfsmaster.cfg,看看都有哪些内容: 

# WORKING_USER = mfs 

# WORKING_GROUP = mfs 

# SYSLOG_IDENT = mfsmaster 

# LOCK_MEMORY = 0 

# NICE_LEVEL = -19 

 

# EXPORTS_FILENAME = /usr/local/mfs/etc/mfsexports.cfg 

 

# DATA_PATH = /usr/local/mfs/var/mfs 

 

# BACK_LOGS = 50 

 

# REPLICATIONS_DELAY_INIT = 300 

# REPLICATIONS_DELAY_DISCONNECT = 3600 

 

# MATOML_LISTEN_HOST = * 

# MATOML_LISTEN_PORT = 9419 

 

# MATOCS_LISTEN_HOST = * 

# MATOCS_LISTEN_PORT = 9420 

 

# MATOCU_LISTEN_HOST = * 

# MATOCU_LISTEN_PORT = 9421 

 

# CHUNKS_LOOP_TIME = 300 

# CHUNKS_DEL_LIMIT = 100 

# CHUNKS_WRITE_REP_LIMIT = 1 

# CHUNKS_READ_REP_LIMIT = 5 

 

# REJECT_OLD_CLIENTS = 0

 

# deprecated, to be removed in MooseFS 1.7 

# LOCK_FILE = /var/run/mfs/mfsmaster.lock

 

尽管每行都被注释掉了,但它们却是配置文件的默认值,要改变这些值,需要取消注释,然

后明确指定其取值。接下来说明一下其中一些项目的含义。 

◆ EXPORTS_FILENAME  =  /usr/local/mfs/etc/mfsexports.cfg 权限控制文件的存放位

置。 

◆ DATA_PATH = /usr/local/mfs/var/mfs 数据存放路径,只元数据的存放路径。那么这

些数据都包括哪些呢?进目录看看,大致分3种类型的文件:

 

-rw-r----- 1 mfs  mfs    4428 Jul  4 02:00 changelog.8.mfs

-rw-r----- 1 mfs  mfs    4428 Jul  4 01:00 changelog.9.mfs

-rw-r----- 1 mfs  mfs    3859 Jul  4 09:00 metadata.mfs.back

-rw-r--r-- 1 root root      8 Jul  2 10:17 metadata.mfs.empty

-rw-r----- 1 mfs  mfs    1863 Jul  4 09:00 sessions.mfs

-rw-r----- 1 mfs  mfs  610016 Jul  4 09:00 stats.mfs

 

 

这些文件也同样要存储在其他数据存储服务器的相关目录。        

◆ MATOCS_LISTEN_PORT = 9420 MATOCS--master to chunkserver,即元数据服务器

使用9420这个监听端口来接受数据存储服务器chunkserver端的连接。 

◆ MATOML_LISTEN_PORT = 9419 MATOML---master to metalogger,用于备份元数据

服务器的变化日志。注:Mfs-1.5.12以前的版本没有这个项目。 

◆ MATOCU_LISTEN_PORT = 9421 元数据服务器在9421端口监听,用以接受客户端

对MFS进行远程挂接(客户端以mfsmount挂接MFS) 

◆  其他部分看字面意思都不难理解。还有几个与时间有关的数值,其单位是秒。 

这个配置文件,不必做修改就能工作了。 

 

 

(2)配置文件/usr/local/mfs/etc/mfsexports.cfg,也可直接从模版文件复制而来。这个文件的内

容,十分类似NFS服务器的exports文件.实际配置时,可参照这个文件的默认行来修改以

满足自己的应用需求.我的mfsexports.cfg文件的内容为: 

192.168.93.0/24      /      rw 

 

(3)复制文件   

cp /usr/local/mfs/var/mfs/metadata.mfs.empty /usr/local/mfs/var/mfs/metadata.mfs   

这是一个8字节的文件,为mfs-1.6.x新增项目。 

 

(三) 元数据服务器master启动 

元数据服务器可以单独启动,即使没有任何数据存储服务器(chunkserver)也是能正常工作

的,因此当我们安装配置完MFS后,即可启动它。执行命令  /usr/local/mfs/sbin/mfsmaster 

start ,如果没有意外,元数据库服务器就应该作为一个守护进程运行起来。

 

MFS的日志会直接写入系统日志。当我们增加数据存储服务器(chunkserver)或数据存储

服务器(chunkserver)处故障时,都能在系统日志找到这些记录。注意,这个日志跟元数据

变化日志不是一回事情。 

 

(四)、关闭元数据服务器 

关闭元数据服务器,务必使用  /usr/local/mfs/sbin/mfsmaster –s  这种方式,如果直接使用kill

杀死进程,将导致下次启动时出现找不到相关文件,而不能正常启动服务器。这个一定要谨

慎。当然,如果发生了这个事情,还是可以通过  mfsmetastore  来恢复的。

元数据日志服务器安装和配置 

 

元数据日志服务为mfs 1.6以后版本新增的服务,即可以把元数据日志保留在元数据服务器,也可以单独存储。为保证其可靠性,最好单独放置。需要注意的是,源数据日志守护进程跟元数据服务器(master)在同一个服务器上,备份元数据日志的服务器作为它的客户端,从元数据服务器取得日志文件进行备份。

 

 

1.         Tar -xzvf mfs-1.6.20-2.tar.gz

a)         Cd mfs-1.6.20-2

b)         Groupadd mfs

c)         Useradd –g mfs mfs

d)         ./configure –prefix=/usr/local/mfs –with-default-user=mfs---with-default-group=mfs –disable-mfschunkserver –disable-mfsmount 

e)         Make && make install

f)          C d /user/local/mfs/etc

g)         Cp –fr mfsmetalogger.cfg.dist mfsmetalogger.cfg

 

 (二)元数据日志服务(metalogger)配置
该服务仅需要一个配置文件,这里我们只需要从模板文件复制一个,然后稍微加以修改即可,下面是我的某个metalogger 的配置文件:

 

[root@hynfs-2 etc]# more mfsmetalogger.cfg 

# WORKING_USER = mfs 

# WORKING_GROUP = mfs 

# SYSLOG_IDENT = mfsmetalogger 

# LOCK_MEMORY = 0 

# NICE_LEVEL = -19 

 

# DATA_PATH = /usr/local/mfs/var/mfs 

 

# BACK_LOGS = 50 

# META_DOWNLOAD_FREQ = 24 

 

# MASTER_RECONNECTION_DELAY = 5 

 

  MASTER_HOST = 192.168.93.18 

  MASTER_PORT = 9419 

 

# MASTER_TIMEOUT = 60 

 

# deprecated, to be removed in MooseFS 1.7 

# LOCK_FILE = /var/run/mfs/mfsmetalogger.lock 

 

这个配置文件,唯一需要修改的地方就是MASTER_HOST,它的值必须是元数据服务器的主机名或者ip地址。

(1)SYSLOG_IDENT = mfsmetalogger  元数据日志服务运行时,在系统日志输出的标识

 

(2)DATA_PATH = /usr/local/mfs/var/mfs  从元数据服务器(master)抓回文件,然后进行存

放的路径。 

(3)BACK_LOGS = 50  存放备份日志的总个数为50,超出50则轮转。在做元数据恢

复时,仅仅需要最近的那个日志文件备份,因此默认的日志个数就足够了,这也保证了日志

备份不会写满整个分区。 

(4)META_DOWNLOAD_FREQ = 24  元数据备份文件下载请求频率。默认为24小时,即每隔一天从元数据服务器(MASTER)下载一个metadata.mfs.back文件。当元数据服务器关闭或者出故障时,matedata.mfs.back文件将消失,那么要恢复整个mfs,则需从metalogger服务器取得该文件。请特别注意这个文件,它与日志文件一起,才能够恢复整个被损坏的分布式文件系统。 

 

(三)元数据日志服务(metalogger)运行及关闭 

1、启动过程为: 

/usr/local/mfs/sbin/mfsmetalogger start  

 

working directory: /usr/local/mfs/var/mfs 

lockfile created and locked 

initializing mfsmetalogger modules ... 

mfsmetalogger daemon initialized properly 

2、关闭服务,执行命令  /usr/local/mfs/sbin/mfsmetalogger      stop  

 

数据存储chunkserver服务器的安装配置 

数据存储服务器chunkserver也是可以运行在各种类unix平台的,因此不再多说。一个MFS环境到底能集群多少服务器,作者的说法是上PB容量,个人建议,最好3台以上;并且专门用来做存储,不要把它跟master搞到一个机器(理论上没问题,实现也是可以的,但这不是一个好策略)。因为每个数据存储服务器的安装和配置都是相同的,所以只需按照一个服务器的操作就可以了。

(一)、安装数据存储服务器  chunkserver 

1、下载GNU源码 

wget http://ncu.dl.sourceforge.net/project/moosefs/moosefs/1.6.11/mfs-1.6.11.tar.gz 

2、解包  tar zxvf mfs-1.6.11.tar.gz 

3、切换目录  cd mfs-1.6.11 

4、创建用户  useradd mfs –s /sbin/nologin     

5、配置  ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs 

6、编译安装  make && make install

(二)配置数据存储服务器chunkserver 

数据存储服务器有2个配置服务器需要修改,一个是主配置文件  mfschunkserver.cfg ,另一个配置文件是  mfshdd.cfg。每个服务器用来分配给  MFS 使用的空间最好是一个单独的硬盘或者一个raid卷,最低要求是一个分区。作者举的例子是创建一个大文件,然后挂接在本地,这不是个好主意,只能用来做实验了。 

1、修改配置文件  /usr/local/mfs/etc/mfschunkserver.cfg。下面是修改了的配置文件:

#WORKING_USER = mfs 

#WORKING_GROUP = mfs 

 

# DATA_PATH = /usr/local/mfs/var/mfs 

# LOCK_FILE = /var/run/mfs/mfschunkserver.pid 

# SYSLOG_IDENT = mfschunkserver 

 

# BACK_LOGS = 50 

 

# MASTER_RECONNECTION_DELAY = 30 

MASTER_HOST = 192.168.0.19 

MASTER_PORT = 9420 

 

# MASTER_TIMEOUT = 60 

 

# CSSERV_LISTEN_HOST = * 

# CSSERV_LISTEN_PORT = 9422 

 

# CSSERV_TIMEOUT = 60 

 

# CSTOCS_TIMEOUT = 60 

 

# HDD_CONF_FILENAME = /usr/local/mfs/etc/mfshdd.cfg 

MASTER_HOST = 192.168.0.19 元数据服务器的名称或地址,可以是主机名,也可

以是ip地址,只要数据存储服务器能访问到元数据服务器就行。 

LOCK_FILE  =  /var/run/mfs/mfschunkserver.pid 与元数据服务器master的处理完全相同. 

CSSERV_LISTEN_PORT = 9422 CSSERV—chunkserver,这个监听端口用于与其它数

据存储服务器间的连接,通常是数据复制。 

HDD_CONF_FILENAME = /usr/local/mfs/etc/mfshdd.cfg 分配给MFS使用的磁盘空

间配置文件的位置。  

2、修改配置文件/usr/local/mfs/etc/mfshdd.cfg。在我的服务器上,只有一个1T的SATA硬盘,分了一个800G容量的分区来做为MFS存储服务的组成部分。为了使mfs拥有写目录的权限,需要修改目录的属主。我的服务器的分区挂接点是  /data ,  用  chown –R mfs:mfs /data  把属主改变。因为我的每个服务器只需贡献一个分区做为MFS,因此配置文件只需要如下一行内容就可以了: 

/data  

这个文件默认情况下有好几行,我们最好把它删掉,因为按常规情况用注释符号“#”好像不起作用。 

 

 

 

 

 

 

 

 

客户端安装

关于fuse,2.X,x为奇数的版本安装会生成内核模块,2.x的偶数版本安装时不生成内核版本。

关于mfs的回收站,需要先挂载

cd /mnt/
mkdir mfs
/usr/local/mfs/bin/mfsmount /mnt/mfs/ -H 192.168.28.242

mkdir mfsmeta
/usr/local/mfs/bin/mfsmount -m /mnt/mfsmeta/ -H 192.168.10.135


df -ah

 在MFSMETA 的目录里,除了trash 和trash/undel 两个目录外,还有第三个目录reserved,该目录内有已经删除的文件,但却有一直打开着。在用户关闭了这些被打开的文件后,reserved 目录中的文件将被删除,文件的数据也将被立即删除。在reserved 目录中文件的命名方法同trash 目录中的一样,但是不能有其他功能的操作。

 

 参考链接http://hi.baidu.com/cpuramdisk/item/879f1ccd62122f27a0b50a00

参考链接http://bbs.chinaunix.net/thread-1644309-1-1.html