免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 133307 | 回复: 89

[mooseFS] mfs(mooseFS)文件系统 [复制链接]

论坛徽章:
0
发表于 2010-01-13 17:52 |显示全部楼层
对于mfs文件系统也用了半年了,确实不错,最近又翻译了作者的三篇文章,再此一同发上,希望对大家有所帮助。不足之处还请指出,以便完善,谢谢!

感谢网友nonamexz做了精美的pdf文档 MFS文件系统使用手册.pdf (453.19 KB, 下载次数: 5901)

MFS文件系统使用手册.pdf

453.19 KB, 下载次数: 1163

MFS文件系统使用手册.pdf

论坛徽章:
0
发表于 2010-01-13 17:54 |显示全部楼层

mfs文件系统(二)

编译和安装

MooseFS部署的首选方法是从源代码安装
源代码包安装支持标准./configure && make && make install的步骤,重要的配置选项有:
--disable-mfsmaster –不创建成管理服务器(用于纯节点的安装)
--disable-mfschunkserver –不创建成数据存储chunkserver服务器
--disable-mfsmount –不创建mfsmount和mfstools(如果用开发包安装,他们会被默认创建的)
--enable-mfsmount –确定安装mfsmount和mfstools(如果
--prefix=DIRECTORY –锁定安装目录(默认是/usr/local)
--sysconfdir=DIRECTORY –选择配置文件目录(默认是${prefix}/etc))
--localstatedir=DIRECTORY –选择变量数据目录(默认是${prefix}/var,MFS元数据被存储在mfs的子目录下,默认是${prefix}/var/mfs )
--with-default-user  -运行守护进程的用户,如果配置文件中没有设定用户,默认为nobody用户
--with-default-group=GROUP  运行守护进程的用户组,如果配置文件中没有设定用户组,默认为nogroup用户组
例如用FHS(文件系统层次标准)的兼容路径在Linux上的安装:
   ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib

编译安装遵守标准的DESTDIR= variable,允许安装包在临时目录(例如以创造二进制包)。已经存在的配置或这是元数据文件将会被覆盖掉。

一、管理服务器(master)
作为管理服务器(master)是MooseFS部署中重要的一个元素,在硬件方面,应该被安装在一台能够保证高可靠性和能胜任的整个系统存取的要求的机器上。一个明智的做法是用一个配有冗余电源、ECC内存、磁盘阵列,如RAID1/RAID5/RAID10。在操作系统方面,管理服务器的操作系统应该是具有POSIX兼容的系统(到目前支持Linux, FreeBSD, Mac OS X and OpenSolaris)。
安装管理服务器(master server)的过程:
1、安装mfs-master
2、如果是从源码安装的话,在configure时不要加--disable-mfsmaster选项。
3、创建运行master的用户(如果这样的用户不存在的话)
4、确定存放元数据文件的目录存在,而且能够被运行master的用户可写(通过configure的选项来设置运行master server的用户和元数据存储的路径,make install命令的执行要用root用户)
5、配置master server服务器是通过配置文件mfsmaster.cfg来做的,要特别注意的是TCP端口的使用
6、添加或创建(依赖于操作系统和发布版本)一组启动mfsmaster进程的脚本
安装完管理服务器后,便可以用mfsmaster命令来启动master server,如果用root用户执行mfsmaster命令,则在启动后转为mfsmaster.cfg中指定的用户来运行,否则将以执行mfsmaster命令的用户来运行master server。

二、元数据日志服务器

元数据日志守护进程是在安装master server时一同安装的,最小的要求并不比master本身大,可以被运行在任何机器上(例如任一台chunkserver),但是最好是放置在MooseFS master的备份机上,备份master服务器的变化日志文件,文件类型为changelog_ml.*.mfs。因为主要的master server一旦失效,可能就会将这台metalogger机器取代而作为master server。
安装管理进程:
1、从源代码安装mfs-master,在执行configure时不要带有--disable-mfsmaste选项
2、创建有运行mfsmetalogger服务权限运行的用户(如果这样的用户不存在的话)
3、确定存放元数据文件的目录存在,而且能够被运行mfsmetalogger服务的用户可写(通过configure的选项来设置运行mfsmetalogger服务的用户和元数据存储的路径,make install命令的执行要用root用户)
4、通过mfsmetalogger.cfg配置mfsmetalogger服务,要特别注意的是TCP端口,这里要使用MASTER_PORT要必须和mfsmaster.cfg文件中的MATOML_LISTEN_PORT一致。
5、添加或创建(依赖于操作系统和发布版本)一组启动mfsmetalogger进程的脚本
安装完管理服务器后,便可以用mfsmetalogger命令来启动mfsmetalogger server,如果用root用户执行mfsmetalogger命令,则在启动后转为mfsmetalogger.cfg中指定的用户来运行,否则将以执行mfsmetalogger命令的用户来运行mfsmetalogger server。
三、数据服务器
安装完管理服务器后,将安装数据服务器(chunkservers),这些机器的磁盘上要有适当的剩余空间,而且操作系统要遵循POSIX标准(验证了的有这些:Linux, FreeBSD, Mac OS X and OpenSolaris)。Chunkserver在一个普通的文件系统上储存数据块/碎片(chunks/fragments)作为文件。
Linux:
creating:
dd if=/dev/zero of=file bs=100m seek=400 count=0
mkfs -t ext3 file
mounting:
mount -o loop file mount-point
FreeBSD:
creating and mounting:
dd if=/dev/zero of=file bs=100m count=400
mdconfig -a -t vnode -f file -u X
newfs -m0 -O2 /dev/mdX
mount /dev/mdX mount-point
mounting a previously created file system:
mdconfig -a -t vnode -f file -u X
mount /dev/mdX mount-point
Mac OS X:
Start "Disk Utility" from "/Applications/Utilities"
Select from menu "Images->New->Blank Image ..."
注: 每一个chunkserver的磁盘都要为增长中的chunks保留些磁盘空间,从而达到创建新的chunk。只有磁盘都超过256M并且chunkservers报告自由空间超过1GB总量才可以被新的数据访问。最小的配置,应该从几个G字节的存储。
安装数据服务器 (chunkserver):
1、 把预先隔离的磁盘空间作为一个单独的文件系统,挂接在一个本地的目录下(如:/mnt/hd1, /mnt/hd2等等);
2、安装mfs-chunkserver
在执行configure时要不带--disable-mfschunkserver选项,
3、创建有运行chunkserver服务权限运行的用户(如果这样的用户不存在的话)
4、并给予这个户对整个MooseFS文件系统写的权限
5、利用mfschunkserver.cfg文件配置mfschunkserver服务,特别要注意的是TCP端口(MASTER_PORT变量要和mfsmaster.cfg中MATOCS_LISTEN_PORT的值一样)。
6、在mfshdd.conf文件中列出要用于MooseFS的挂载点
7、添加或创建(依赖于操作系统和发布版本)一组启动mfschunkserver进程的脚本
注:
Mfschunkserver的本地ip很重要,Mfschunkserver用此ip和mfsmaster进行连接,mfsmaster通过此ip和MFS客户端连接(mfsmount),而且其它chunkservers之间的通讯也是通过这个ip,因此这个ip必须是远程可访问的。因此mfsmaster的本地ip地址(MASTER_HOST)设置必须和chunkserver一样,以便于正确的连接,通常的做法是mfsmaster,chunkservers和MFS客户端在同一网段。一般的回环地址(localhost, 127.0.0.1)不能用于MASTER_HOST,它将使chunkserver无法被其她主机访问(这样的配置只会是单机器的机器mfsmaster,mfschunkserver和mfsmount运行)。
安装完mfschunkserver后,便可以用mfschunkserver命令来启动mfschunkserver服务器,如果用root用户执行mfschunkserver命令,则在启动后转为mfschunkserver.cfg中指定的用户来运行,否则将以执行mfschunkserver命令的用户来运行mfschunkserver服务。




四、客户端(mfsmount)
mfsmount需要FUSE才可以正常工作,FUSE支持多种操作系统:Linux, FreeBSD, OpenSolaris and MacOS X。
Linux一个内核模块的API版本至少必需是7.8的,这个可以用dmesg命令来检测,当载入内核模块后,应该能看到有一行fuse init (API version 7.8)。一些可用的fuse版本是2.6.0以上,Linux kernel 2.6.20(Linux内核从2.6.20后加入了fuse)以上。由于一些小bug,因此比较新模块被荐使用,如fuse 2.7.2 及 Linux 2.6.24(尽管fuse 2.7.x单独没有包含getattr/write race condition fix)。在FreeBSD系统上fusefs-kmod版本要0.3.9以上的才可以,在MacOS X Mac上 FUSE要10.5版本。
安装MooseFS客户端:
1、安装mfs-client,从源代码安装,在进行configure时不要加--disable-mfsmount选项就可以了
2、建立被MooseFS挂接的目录,例如/mnt/mfs。
3、MooseFS用一下的命令挂接:
mfsmount [-h master] [-p port] [-l path] [-w mount-point]
-H MASTER:是管理服务器(master server)的ip地址
-P PORT: 是管理服务器(master server)的端口号,要按照mfsmaster.cfg 配置文件中的变量MATOCU_LISTEN_POR的之填写。如果master serve使用的是默认端口号则不用指出。
-S PATH:指出被挂接mfs目录的子目录,默认是/目录,就是挂载整个mfs目录。
Mountpoint:是指先前创建的用来挂接mfs的目录。

[ 本帖最后由 ltgzs777 于 2010-1-14 09:58 编辑 ]

论坛徽章:
0
发表于 2010-01-13 17:56 |显示全部楼层

mfs文件系统(三)

使用  MooseFS
一、挂载文件系统
启动管理服务器(master server)和数据服务器(chunkservers) (chunkservers一个是必需的,但至少两个推荐) 后,客户机便可以利用mfsmount挂接mfs文件系统。
MooseFS文件系统利用下面的命令:
mfsmount mountpoint [-d] [-f] [-s] [-m] [-n] [-p] [-H MASTER] [-P PORT] [-S PATH] [-o OPT[,OPT...]]
-H MASTER:是管理服务器(master server)的ip地址
-P PORT: 是管理服务器(master server)的端口号,要按照mfsmaster.cfg 配置文件中的变量MATOCU_LISTEN_POR的之填写。如果master serve使用的是默认端口号则不用指出。
-S PATH:指出被挂接mfs目录的子目录,默认是/目录,就是挂载整个mfs目录。
Mountpoint:是指先前创建的用来挂接mfs的目录。
在开始mfsmount进程时,用一个-m或-o mfsmeta的选项,这样可以挂接一个辅助的文件系统MFSMETA,这么做的目的是对于意外的从MooseFS卷上删除文件或者是为了释放磁盘空间而移动的文件而又此文件又过去了垃圾文件存放期的恢复,例如:
mfsmount -m /mnt/mfsmeta
需要注意的是,如果要决定挂载mfsmeta,那么一定要在mfsmaster的mfsexports.cfg文件中加入如下条目:
*                       .       rw

原文件中有此条目,只要将其前的#去掉就可以了。
基本操作
挂载文件系统后就可以执行所有的标准的文件操作了(如创建,拷贝,删除,重命名文件,等等)。MooseFS是一个网络文件系统,因此操作进度可能比本地系统要慢。
MooseFS卷的剩余空间检查可以用和本地文件系统同样的方法,例如df命令:
$ df -h | grep mfs
mfsmaster:9421         85T   80T  4.9T  95% /mnt/mfs
mfsmaster:9321        394G  244G  151G  62% /mnt/mfs-test
重要的是每一个文件可以被储存多个副本,在这种情况下,每一个文件所占用的空间要比其文件本身大多了。此外,被删除且在有效期内(trashtime)的文件都放在一个“垃圾箱”,所以他们也占用的空间,其大小也依赖文件的份数。就像其他Unix的文件系统一样,以防删除一个被其它进程打开文件,数据将被一直存储,至少直到文件被关闭。
二、MooseFS的特定的操作
1、设定的目标
目标(goal),是指文件被拷贝的份数,设定了拷贝的份数后是可以通过可以mfsgetgoal命令来证实的,也可以通过mfssetgoal来改变设定。例如:
$ 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
用mfsgetgoal –r和mfssetgoal –r同样的操作可以对整个树形目录递归操作。
$ mfsgetgoal -r /mnt/mfs-test/test2
/mnt/mfs-test/test2:
files with goal        2 :                   36
directories with goal  2 :                    1
$ mfssetgoal -r 3 /mnt/mfs-test/test2
/mnt/mfs-test/test2:
inodes with goal changed:                        37
inodes with goal not changed:                     0
inodes with permission denied:                    0
$ mfsgetgoal -r /mnt/mfs-test/test2
/mnt/mfs-test/test2:
files with goal        3 :                   36
directories with goal  3 :                    1
实际的拷贝份数可以通过mfscheckfile 和 mfsfileinfo 命令来证实,例如:
$ 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
注意:一个不包含数据的零长度的文件,尽管没有设置为非零的目标(the non-zero "goal"),但用命令查询将返回一个空的结果,例如:
[root@www bin]# touch    /mnt/mfs/mmm
[root@www bin]# ./mfsfileinfo  /mnt/mfs/mmm   
/mnt/mfs/mmm:
但是如果对此文件进行编辑,如:
[root@www bin]# echo "1234"> /mnt/mfs/mmm
然后看:
root@www bin]# ./mfsfileinfo  /mnt/mfs/mmm      
/mnt/mfs/mmm:
        chunk 0: 0000000000000040_00000001 / (id:64 ver:1)
                copy 1: 192.168.3.31:9422
                copy 2: 192.168.3.96:9422
                copy 3: 192.168.3.139:9422
此时在将文件清空:
[root@www bin]# echo ""> /mnt/mfs/mmm  
然后在看:
[root@www bin]# ./mfsfileinfo  /mnt/mfs/mmm         
/mnt/mfs/mmm:
        chunk 0: 0000000000000041_00000001 / (id:65 ver:1)
                copy 1: 192.168.3.31:9422
                copy 2: 192.168.3.96:9422
                copy 3: 192.168.3.139:9422
副本将任然存在。
假如改变一个已经存在的文件的拷贝个数,那么文件的拷贝份数将会被扩大或者被删除,这个过程会有延时。可以通过上面的命令来证实。
对一个目录设定“目标”,此目录下的新创建文件和子目录均会继承此目录的设定,但不会改变已经存在的文件及目录的拷贝份数。例如:
[root@bzd f]# touch 1
[root@bzd f]# echo “11” > 1
[root@bzd f]# /usr/local/mfs/bin/mfsfileinfo 1   
1:
        chunk 0: 0000000000000043_00000001 / (id:67 ver:1)
                copy 1: 192.168.3.31:9422
                copy 2: 192.168.3.96:9422
                copy 3: 192.168.3.139:9422
[root@bzd f]# cd ..
[root@bzd mfs]# /usr/local/mfs/bin/mfssetgoal 2 f
f: 2
[root@bzd mfs]# cd f/
[root@bzd f]# ls
1
[root@bzd f]# touch 2
[root@bzd f]# echo “222” > 2
[root@bzd f]# /usr/local/mfs/bin/mfsfileinfo 1
1:
        chunk 0: 0000000000000043_00000001 / (id:67 ver:1)
                copy 1: 192.168.3.31:9422
                copy 2: 192.168.3.96:9422
                copy 3: 192.168.3.139:9422
[root@bzd f]# /usr/local/mfs/bin/mfsfileinfo 2
2:
        chunk 0: 0000000000000044_00000001 / (id:68 ver:1)
                copy 1: 192.168.3.31:9422
                copy 2: 192.168.3.96:9422

整个目录树的内容摘要可以用一个功能增强的等同于du –s的命令mfsdirinfo,mfsdirinfo为MooseFS列出具体的信息。
例如:
$ mfsdirinfo /mnt/mfs-test/test/:
inodes:                         15
  directories:                    4
  files:                          8
chunks:                          6
length:                     270604
size:                       620544
realsize:                  1170432
上述内容摘要显示了目录、文件及chunks的数目,还有整个目录占用磁盘空间的情况。
length -文件大小的总和
size –块长度总和
realsize –磁盘空间的使用包括所有的拷贝

这是一个文件被分成了6个chunk例子:
[root@bzd mfs]# /usr/local/mfs/bin/mfsfileinfo fdsf.iso
1.img:
        chunk 0: 000000000000053A_00000001 / (id:1338 ver:1)
                copy 1: 192.168.3.31:9422
                copy 2: 192.168.3.96:9422
                copy 3: 192.168.3.139:9422
        chunk 1: 000000000000053B_00000001 / (id:1339 ver:1)
                copy 1: 192.168.3.31:9422
                copy 2: 192.168.3.96:9422
                copy 3: 192.168.3.139:9422
        chunk 2: 000000000000053C_00000001 / (id:1340 ver:1)
                copy 1: 192.168.3.31:9422
                copy 2: 192.168.3.96:9422
                copy 3: 192.168.3.139:9422
        chunk 3: 000000000000053D_00000001 / (id:1341 ver:1)
                copy 1: 192.168.3.31:9422
                copy 2: 192.168.3.96:9422
                copy 3: 192.168.3.139:9422
        chunk 4: 000000000000053E_00000001 / (id:1342 ver:1)
                copy 1: 192.168.3.31:9422
                copy 2: 192.168.3.96:9422
                copy 3: 192.168.3.139:9422
        chunk 5: 000000000000053F_00000001 / (id:1343 ver:1)
                copy 1: 192.168.3.31:9422
                copy 2: 192.168.3.96:9422
                copy 3: 192.168.3.139:9422

三、垃圾箱(trash bin)设定隔离的时间(quarantine time)
一个删除文件能够存放在一个“垃圾箱”的时间就是一个隔离时间,这个时间可以用mfsgettrashtime命令来验证,也可以用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
这些工具也有个递归选项-r,可以对整个目录树操作,例如:
$ mfsgettrashtime -r /mnt/mfs-test/test2
/mnt/mfs-test/test2:
files with trashtime                 0 :                   36
directories with trashtime      604800 :                    1
$ mfssettrashtime -r 1209600 /mnt/mfs-test/test2
/mnt/mfs-test/test2:
inodes with trashtime changed:                       37
inodes with trashtime not changed:                    0
inodes with permission denied:                        0
$ mfsgettrashtime -r /mnt/mfs-test/test2
/mnt/mfs-test/test2:
files with trashtime           1209600 :                   36
directories with trashtime     1209600 :                    1
时间的单位是秒(有用的值有:1小时是3600秒,24 - 86400秒,1 - 604800秒)。就像文件被存储的份数一样, 为一个目录 设定存放时间是要被新创建的文件和目录所继承的。数字0意味着一个文件被删除后, 将立即被彻底删除,在想回收是不可能的
删除文件可以通过一个单独安装MFSMETA文件系统。特别是它包含目录 / trash (包含任然可以被还原的被删除文件的信息)和 / trash/undel (用于获取文件)。只有管理员有权限访问MFSMETA(用户的uid 0,通常是root)。
$ 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
被删文件的文件名在 “垃圾箱”目录里还可见,文件名由一个八位十六进制的数i-node和被删文件的文件名组成,在文件名和i-node之间不是用“/”,而是用了“|”替代。如果一个文件名的长度超过操作系统的限制(通常是255个字符),那么部分将被删除。通过从挂载点起全路径的文件名被删除的文件任然可以被读写。需要注意的是被删除的文件在用全路径文件名(注意文件名是两部分)时一定要用单引号引起来。例如:
# cat '/mnt/mfs-test-meta/trash/00013BC7|test1'
test1
# echo 'test/test2' > '/mnt/mfs-test-meta/trash/00013BC7|test1'
# cat '/mnt/mfs-test-meta/trash/00013BC7|test1'
test/test2
移动这个文件到trash/undel子目录下,将会使原始的文件恢复到正确的MooseFS文件系统上 路径下(如果路径没有改变)。例如:
[root@www mfs]# ll dgg   
-rw-r--r--  1 root root 8 Jan 13 08:45 dgg
[root@www mfs]# rm -f dgg
[root@www mfs]# ll dgg   
ls: dgg: No such file or directory
[root@www trash]# ls
0000000B|dgg   00000047|f1    undel
[root@www trash]# mv '/mnt/mfsmeta/trash/0000000B|dgg' ./undel/
[root@www trash]# ls
undel 00000047|f1
[root@www mfs]# ll dgg
-rw-r--r--  1 root root 8 Jan 13 08:45 dgg
注意:如果在同一路径下有个新的同名文件,那么恢复不会成功
从“垃圾箱”中删除文件结果是释放之前被它站用的空间(删除有延迟,数据被异步删除)。在这种被从“垃圾箱”删除的情况下,该文件是不可能恢复了。
可以通过mfssetgoal工具来改变文件的拷贝数,也可以通过mfssettrashtime工具来改变存储在“垃圾箱”中的时间。
在 MFSMETA的目录里,除了trash和trash/undel两个目录外,还有第三个目录reserved,该目录内有已经删除的文件,但却有一直打开着。在用户关闭了这些被打开的文件后,reserved目录中的文件将被删除,文件的数据也将被立即删除。在reserved目录中文件的命名方法同trash目录中的一样,但是不能有其他功能的操作。
四、快照
MooseFS系统的另一个特征是利用mfsmakesnapshot工具给文件或者是目录树做快照,例如:
$ mfsmakesnapshot source ... destination

Mfsmakesnapshot是在一次执行中整合了一个或是一组文件的拷贝,而且任何修改这些文件的源文件都不会影响到源文件的快照, 就是说任何对源文件的操作,例如写入源文件,将不会修改副本(或反之亦然)。
文件快照可以用mfsappendchunks,就像MooseFS1.5中的mfssnapshot一样,,作为选择,二者都可以用。例如:
$ mfsappendchunks destination-file source-file ...
当有多个源文件时,它们的快照被加入到同一个目标文件中(每个chunk的最大量是chunk)。
五、额外的属性
文件或目录的额外的属性(noowner, noattrcache, noentrycache),可以被mfsgeteattr,mfsseteattr,mfsdeleattr工具检查,设置,删除,其行为类似mfsgetgoal/mfssetgoal or或者是mfsgettrashtime/mfssettrashtime,详细可见命令手册。

[ 本帖最后由 ltgzs777 于 2010-1-21 17:13 编辑 ]

论坛徽章:
0
发表于 2010-01-13 17:57 |显示全部楼层

mfs文件系统(四)

MooseFS  维护
一、启动MooseFS集群
最安全的启动MooseFS集群(避免任何读或写的错误数据或类似的问题)的方式是按照以下命令步骤:
1.启动mfsmaster进程
2.启动所有的mfschunkserver进程
3.启动mfsmetalogger进程(如果配置了mfsmetalogger)
当所有的chunkservers连接到MooseFS master后,任何数目的客户端可以利用mfsmount去挂接被export的文件系统。(可以通过检查master的日志或是CGI监视器来查看是否所有的chunkserver被连接)。

二、停止MooseFS集群
安全的停止MooseFS集群:
1.在所有的客户端卸载MooseFS 文件系统(用umount命令或者是其它等效的命令)
2.用mfschunkserver –s命令停止chunkserver进程
3.用mfsmetalogger –s命令停止metalogger进程
4.用mfsmaster –s命令停止master进程

三、MooseFS chunkservers的维护
假如每个文件的goal(目标)都不小于2,并且没有under-goal文件(这些可以用mfsgetgoal –r和mfsdirinfo命令来检查),那么一个单一的chunkserver在任何时刻都可能做停止或者是重新启动。以后每当需要做停止或者是重新启动另一个chunkserver的时候,要确定之前的chunkserver被连接,而且要没有under-goal chunks。

四、MooseFS元数据的备份
通常元数据有两部分的数据
1.主要元数据文件metadata.mfs,当mfsmaster运行的时候会被命名为metadata.mfs.back
2.元数据改变日志changelog.*.mfs,存储了过去的N小时的文件改变(N的数值是由BACK_LOGS参数设置的,参数的设置在mfschunkserver.cfg配置文件中)。
主要的元数据文件需要定期备份,备份的频率取决于取决于多少小时changelogs储存。元数据changelogs应该实时的自动复制。自从MooseFS 1.6.5,这两项任务是由mfsmetalogger守护进程做的。

五、MooseFS master的恢复
一旦mfsmaster崩溃(例如因为主机或电源失败),需要最后一个元数据日志changelog并入主要的metadata中。这个操作时通过mfsmetarestore工具做的,最简单的方法是:
mfsmetarestore -a
如果master数据被存储在MooseFS编译指定地点外的路径,则要利用-d参数指定使用,如:
mfsmetarestore -a -d /storage/mfsmaster

六、从备份恢复MooseFS master
为了从备份中恢复一个master,需要做:
1、安装一个mfsmaster
2、利用同样的配置来配置这台mfsmaster(利用备份来找回mfsmaster.cfg),可见配置文件也是需要备份的。
3、找回metadata.mfs.back文件,可以从备份中找,也可以中metalogger主机中找(如果启动了metalogger服务),然后把metadata.mfs.back放入data目录,一般为${prefix}/var/mfs。
4、从在master宕掉之前的任何运行metalogger服务的服务器上拷贝最后metadata文件,然后放入mfsmaster的数据目录。
5、利用mfsmetarestore命令合并元数据changelogs,可以用自动恢复模式mfsmetarestore –a,也可以利用非自动化恢复模式,语法如下:
mfsmetarestore -m metadata.mfs.back -o metadata.mfs changelog_ml.*.mfs

[ 本帖最后由 ltgzs777 于 2010-1-14 11:24 编辑 ]

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
发表于 2010-01-13 18:46 |显示全部楼层
为了方便大家阅读,我把4个主题合成了1个主题。

论坛徽章:
0
发表于 2010-01-14 00:12 |显示全部楼层
学习一下

论坛徽章:
0
发表于 2010-01-14 08:50 |显示全部楼层
好东西,谢LZ

论坛徽章:
0
发表于 2010-01-14 09:00 |显示全部楼层
好东西,谢谢

论坛徽章:
0
发表于 2010-01-14 10:16 |显示全部楼层

回复 #8 wolfheader 的帖子

谢谢回复
不辛,为人民服务

论坛徽章:
0
发表于 2010-01-14 10:41 |显示全部楼层
好东西,最近要测试一下了,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP