查看文章
 
mfs初试
2009年05月06日 星期三 上午 9:38
MFS就是moose file system,是一种分布式文件系统

MFS文件系统的组成

1、 元数据服务器。在整个体系中负责管理管理文件系统,目前MFS只支持一个元数据服务器master,这是一个单点故障,需要一个性能稳定的服务器来充当。希望今后MFS能支持多个master服务器,进一步提高系统的可靠性。

2、 数据存储服务器chunkserver。真正存储用户数据的服务器。存储文件时,首先把文件分成块,然后这些块在数据服务器chunkserver之间复制(复制份数可以手工指定,建议设置副本数为3)。数据服务器可以是多个,并且数量越多,可使用的“磁盘空间”越大,可靠性也越高。(他的chunkserver可以是任何unix-like系统,通过fuse库来操作)

3、 客户端。使用MFS文件系统来存储和访问的主机称为MFS的客户端,成功挂接MFS文件系统以后,就可以像以前使用NFS一样共享这个虚拟性的存储了。

http://www.kuqin.com/system-analysis/20090410/45211.html

http://www.moosefs.com/pages/userguides.html

(一) 安装元数据服务

1、下载GNU源码 wget http://www.moosefs.com/files/mfs-1.5.12.tar.gz

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

3、切换目录 cd mfs-1.5.12

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

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

6、编译安装 make ; make install

#WORKING_USER = mfs
#WORKING_GROUP = mfs

LOCK_FILE = /var/run/mfs/mfsmaster.pid
# DATA_PATH = /usr/local/mfs/var/mfs
# SYSLOG_IDENT = mfsmaster

# BACK_LOGS = 50

#REPLICATIONS_DELAY_INIT = 300
# REPLICATIONS_DELAY_DISCONNECT = 3600

# MATOCS_LISTEN_HOST = *
# MATOCS_LISTEN_PORT = 9420

# MATOCU_LISTEN_HOST = *
# MATOCU_LISTEN_PORT = 9421

# CHUNKS_LOOP_TIME = 300
# CHUNKS_DEL_LIMIT = 100
# CHUNKS_REP_LIMIT = 15

◆ MATOCS_LISTEN_PORT = 9420 MATOCS--master to chunkserver,即元数据服务器使用9420这个监听端口来接受数据存储服务器chunkserver端的连接。

◆ MATOCU_LISTEN_PORT = 9421 元数据服务器在9421端口监听,用以接受客户端对MFS进行远程挂接(客户端以mfsmount挂接MFS)

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

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

启动:

/usr/local/mfs/sbin/mfsmaster start

/usr/local/mfs/sbin/mfsmaster -s:停止

(日志在message,看一下9420,9421端口是否起了)

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

1、下载GNU源码 wget http://www.moosefs.com/files/mfs-1.5.12.tar.gz

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

3、切换目录 cd mfs-1.5.12

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

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

6、编译安装 make ; make install

配置:
# 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.16master服务器的地址
# 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在这个文件里写要提供使用的目录
#mount /dev/hda7 /opt
# cat mfshdd.cfg
/opt
启动:/usr/local/mfs/sbin/mfschunkserver start
停止:/usr/local/mfs/sbin/mfschunkserver -s
同样可以通过查看端口和message文件看服务是否启动正常

一、centos作为MFS的客户端。

(一) 安装MFS客户端

◆Mfsmount需要依赖FUSE,因此需要先安装好fuse,这里我选用fuse-2.7.4.tar.gz。

1、解包 tar zxvf fuse-2.7.4.tar.gz

2、切换目录 cd fuse-2.7.4.

3、配置 ./configure

4、编译安装 make;make install

如果系统已经安装了fuse,则跳过这个步骤。

◆安装MFS客户端程序

1、修改环境变量文件/etc/profile ,追加下面的行,然后再执行命令source /etc/profile使修改生效。


#insmod fuse.ko

挂接MFS /usr/local/mfs/bin/mfsmount –h 192.168.0.16 -w /opt/mfs

参数-m挂载元数据

设置拷贝份数:

$ mfsgetgoal /mnt/mfs-test/test1
/mnt/mfs-test/test1: 2
$ mfssetgoal 3 /mnt/mfs-test/test1
/mnt/mfs-test/test1: 3
$ mfsgetgoal /mnt/mfs-test/test1
/mnt/mfs-test/test1: 3

Similar operations can be done on the whole directory trees with the mfsrgetgoal and mfsrsetgoal commands:

$ mfsrgetgoal /mnt/mfs-test/test2
/mnt/mfs-test/test2:
files with goal 2 : 36 (36)
directories with goal 2 : 1 (1)
$ mfsrsetgoal 3 /mnt/mfs-test/test2
/mnt/mfs-test/test2:
inodes with goal changed: 37 (37)
inodes with goal not changed: 0 (0)
inodes with permission denied: 0 (0)
$ mfsrgetgoal /mnt/mfs-test/test2
/mnt/mfs-test/test2:
files with goal 3 : 36 (36)
directories with goal 3 : 1 (1)

The actual number of copies of a file can be verified with the mfscheckfile and mfsfileinfo commands:

$ mfscheckfile /mnt/mfs-test/test1
/mnt/mfs-test/test1:
3 copies: 1 chunks
$ mfsfileinfo /mnt/mfs-test/test1
/mnt/mfs-test/test1:
chunk 0: 00000000000520DF_00000001 / (id:336095 ver:1)
copy 1: 192.168.0.12:9622
copy 2: 192.168.0.52:9622
copy 3: 192.168.0.54:9622

文件被删除后放在trash文件夹中:

The time of storing a deleted file can be verified by the mfsgettrashtime command and changed with mfssettrashtime:

$ mfsgettrashtime /mnt/mfs-test/test1
/mnt/mfs-test/test1: 604800
$ mfssettrashtime 0 /mnt/mfs-test/test1
/mnt/mfs-test/test1: 0
$ mfsgettrashtime /mnt/mfs-test/test1
/mnt/mfs-test/test1: 0

These tools also have their recursive equivalents mfsrgettrashtime and mfsrsettrashtime operating on whole directory trees:

$ mfsrgettrashtime /mnt/mfs-test/test2
/mnt/mfs-test/test2:
files with trashtime 604800 : 36 (36)
directories with trashtime 604800 : 1 (1)
$ mfsrsettrashtime 1209600 /mnt/mfs-test/test2
/mnt/mfs-test/test2:
inodes with trashtime changed: 37 (37)
inodes with trashtime not changed: 0 (0)
inodes with permission denied: 0 (0)
$ mfsrgettrashtime /mnt/mfs-test/test2
/mnt/mfs-test/test2:
files with trashtime 1209600 : 36 (36)
directories with trashtime 1209600 : 1 (1)

$ mfssettrashtime 3600 /mnt/mfs-test/test1
/mnt/mfs-test/test1: 3600
$ rm /mnt/mfs-test/test1
$ ls /mnt/mfs-test/test1
ls: /mnt/mfs-test/test1: No such file or directory
# ls -l /mnt/mfs-test-meta/trash/*test1
-rw-r--r-- 1 user users 1 2007-08-09 15:23 /mnt/mfs-test-meta/trash/00013BC7|test1

http://www.moosefs.com/pages/userguides.html

Stopping MFS cluster

To safely stop MFS:

  • unmount MFS on all clients (using the umount command or an equivalent)
  • stop chunkserver processes with the mfschunkserver -s
  • stop master process with the mfsmaster -s command .

————————————————————————————————————————————————

可能出现问题:
我参考你的贴子:http://bbs.chinaunix.net/viewthread.php?tid=1422602
在虚拟机里配置了MFS
前面配置都成功了,但是最后文件写入时出错。
挂载的文件系统里可以建目录,便是不能cp文件进去。
日志如下:
# tail -f /var/log/messages
Apr 24 18:42:00   mfsmaster[1163]: inodes: 4
Apr 24 18:42:00   mfsmaster[1163]: dirnodes: 1
Apr 24 18:42:00   mfsmaster[1163]: filenodes: 3
Apr 24 18:42:00   mfsmaster[1163]: chunks: 0
Apr 24 18:42:00   mfsmaster[1163]: chunks to delete: 0
Apr 24 18:42:00   mfsmaster[1163]: chunkservers status:
Apr 24 18:42:00   mfsmaster[1163]: server 1 (192.168.1.50): usedspace: 441628672 (0 GB), totalspace: 441628672 (0 GB), usage: 100.00%
Apr 24 18:42:00   mfsmaster[1163]: total: usedspace: 441628672 (0 GB), totalspace: 441628672 (0 GB), usage: 100.00%
Apr 24 18:42:02   mfsmount: file: 4, index: 0, chunk: 0, version: 0 - fs_writechunk returns status 12
Apr 24 18:42:02   mfsmount: file: 4, index: 0, chunk: 0, version: 0 - write(flush) error (try counter: 29)
已经自已解决:)
原来必存储单元必须挂载为分区。
呵呵!希望朋友们不要和我一样粗心。目前正在五个虚拟机上测试:)
http://bbs.chinaunix.net/viewthread.php?tid=1422602&extra=&page=2


类别:存贮备份| |分享到i贴吧|浏览(567)|评论 (0)
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu