当前位置:文档之家› MFS安装维护文档v1

MFS安装维护文档v1

MFS文档

版本号20140902_v1

贾文和整理

MFS文档

1、目前开源的几种分布式文件系统

2、各文件系统的简单描述及用途

3、简单介绍MOOSEFS工作原理

3.1 MFS文件系统结构

3.2 MFS基础网络拓扑图

4、实验环境

5、安装流程

5.1 MFS-MASTER安装

5.1.1 MFS-MASTER安装

5.1.2 MFS-MASTER配置

5.2 mfsmetalogger的安装

5.1.1 mfsmetalogger安装

5.1.2 mfsmetalogger配置

5.3 chunkserver的安装

5.1.1 chunkserver安装

5.1.2 chunkserver配置

5.4 MFS-CLIENT的安装

5.1.1 MFS-CLIENT的安装

6、使用MFS文件系统

6.1 CLIENT端挂载MFS

6.1.1 mfsmount

6.2 从垃圾箱恢复意外删除的文件

6.3 垃圾箱相关设定

6.3.1 mfsgettrashtime

6.3.2 mfssettrashtime

6.4 设置文件拷贝份数

6.4.1 mfsgetgoal

6.4.2 mfscheckfile

6.4.3 mfsfileinfo

6.4.4 mfsdirinfo

6.4.5 mfssetgoal

6.5修复损坏的块

6.5.1 mfsfilerepair

6.6 快照

6.6.1 mfsmakesnapshot

6.6.2 mfsappendchunks

7、灾难恢复实验

6.1、master端

6.1.1、服务器损坏或是master无法启动

6.1.2、master端的元数据丢失

6.2、

目前开源的几种分布式文件系统

1、M ooseFS易用,稳定,对小文件很高效。

2、M ogileFS 据说对于Web 2.0 应用存储图片啥的很好。

3、G lusterFS 感觉广告宣传做的比产品本身好。

4、O penAFS/Coda 是很有特色的东西。

5、L ustre 复杂,高效,适合大型集群。

6、P VFS2 搭配定制应用会很好,据说曙光的并行文件系统就是基于PVFS。

以上评价,非个人评价,是从CHINAUNIX中,一些人总结的。在此借鉴一下。

各文件系统的简单描述及用途

dCache

- 依赖PostgreSQL

xtreemfs

* 服务端是Java 实现的

- 性能不高

CloudStore (KosmosFS)

+ 被Hadoop 作为分布式文件系统后端之一

- 不支持文件元信息

- kfs_fuse 太慢,不可用

- 编译依赖多,文档落后,脚本简陋

- 开发不活跃

MooseFS

+ 支持文件元信息

+ mfsmount 很好用

+ 编译依赖少,文档全,默认配置很好

+ mfshdd.cfg 加* 的条目会被转移到其它chunkserver,以便chunkserver 安全退出

+ 不要求chunk server 使用的文件系统格式以及容量一致

+ 开发很活跃

+ 可以以非root 用户身份运行

+ 可以在线扩容

+ 支持回收站

+ 支持快照

- master server 存在单点故障

- master server 很耗内存

MogileFS

- 不适合做通用文件系统,适合存储静态只读小文件,比如图片

GlusterFS

(https://www.doczj.com/doc/ee15896941.html,/community/documentation/index.php/GlusterFS_Features) + 无单点故障问题

+ 支持回收站

+ 模块化堆叠式架构

- 对文件系统格式有要求,ext3/ext4/zfs 被正式支持,xfs/jfs 可能可以,reiserfs 经测试可以

(https://www.doczj.com/doc/ee15896941.html,/community/documentation/index.php/Storage_Serve r_Installation_and_Configuration#Operating_System_Requirements) - 需要以root 用户身份运行(用了trusted xattr,mount 时加user_xattr 选项是没用的,官方说法是glusterfsd 需要创建不同属主的文件,所以必需root 权限) - 不能在线扩容(必须通过umount 增加存储节点),计划在3.1 里实现

- 分布存储以文件为单位,条带化分布存储不成熟

GFS2

https://www.doczj.com/doc/ee15896941.html,/cluster/wiki/DRBD_Cookbook

https://www.doczj.com/doc/ee15896941.html,/blog/index.php/2008/02/11/gfs-goodgrief-wheres-th e-documentation-file-system/

https://www.doczj.com/doc/ee15896941.html,/kristian_jerpetjoen

https://www.doczj.com/doc/ee15896941.html,/blog/?p=941

https://www.doczj.com/doc/ee15896941.html,/u1/53728/showart_1073271.html (基于红帽RHEL5U2 GFS2+ISCSI+XEN+Cluster 的高可性解决方案)

https://www.doczj.com/doc/ee15896941.html,/blog/?p=27 (iscsi+clvm+gfs2+xen+Cluster)

https://www.doczj.com/doc/ee15896941.html,/bbs/thread-777867-1-1.html

* 并不是distributed file system, 而是shared disk cluster file system,需要某种机制在机器之间共享磁盘,以及加锁机制,因此需要drbd/iscsi/clvm/ddraid/gnbd 做磁盘共享,以及dlm 做锁管理)

- 依赖Red Hat Cluster Suite (Debian: aptitude install redhat-cluster-suite,图形配置工具包

system-config-cluster, system-config-lvm)

- 适合不超过约30 个节点左右的小型集群,规模越大,dlm 的开销越大,默认配置8 个节点,dlm锁必须通过内核编译才能够打开内核的支持;

OCFS2

* GFS 的 Oracle 翻版,据说性能比GFS2 好(Debian: aptitude install ocfs2-tools, 图形配置工具包ocfs2console)

- 不支持ACL、flock,只是为了Oracle database 设计

OpenAFS

+ 成熟稳定

+ 开发活跃,支持Unix/Linux/MacOS X/Windows

- 性能不够好

Coda

* 从服务器复制文件到本地,文件读写是本地操作因此很高效

* 文件关闭后发送到服务器

+ 支持离线操作,连线后再同步到服务器上

- 缓存基于文件,不是基于数据块,打开文件时需要等待从服务器缓存到本地完毕

- 并发写有版本冲突问题

- 并发读有极大的延迟,需要等某个client 关闭文件,比如不适合tail -f some.log

- 研究项目,不够成熟,使用不广

PVFS2

https://www.doczj.com/doc/ee15896941.html,/yfw418/archive/2007/07/06/1680930.aspx

* 高性能

- 没有锁机制,不符合POSIX 语意,需要应用的配合,不适合做通用文件系统 (See pvfs2-guide chaper 5: PVFS2 User APIs and Semantics)

- 静态配置,不能动态扩展

Lustre

* 适合大型集群

+ 很高性能

+ 支持动态扩展

- 需要对内核打补丁,深度依赖Linux 内核和ext3 文件系统

Hadoop HDFS

* 本地写缓存,够一定大小(64 MB) 时传给服务器

- 不适合通用文件系统

FastDFS

- 只能通过API 使用,不支持fuse

NFSv4 Referrals

+ 简单

- 没有负载均衡,容错

NFSv4.1 pNFS

- 没有普及

spNFS

* pNFS 在Linux 上的一个实现

Ceph (https://www.doczj.com/doc/ee15896941.html,/)

- 开发初期,不稳定

- 依赖btrfs

GFarm (https://www.doczj.com/doc/ee15896941.html,/software/)

OBFS

简单介绍MOOSEFS工作原理3.1 MFS文件系统结构

3.2 MFS基础网络拓扑图

实验环境

本次实验在实验室的6台实体机上进行实验

1

2、MFS版本

mfs-1.6.27

3、使用其他补丁的版本

安装最新的fuse :yum -y install fuse-devel

用户空间文件系统(Filesystem in Userspace,简称FUSE)是操作系统中的概念,指完全在用户态实现的文件系统。目前Linux通过内核模块对此进行支持。一些文件系统如ZFS,glusterfs和lustre使用FUSE实现。

Linux用于支持用户空间文件系统的内核模块名叫FUSE,FUSE一词有时特指Linux 下的用户空间文件系统。

文件系统是一个通用操作系统重要的组成部分。传统上操作系统在内核层面上对文件系统提供支持。而通常内核态的代码难以调试,生产率较低。

Linux从2.6.14版本开始通过FUSE模块支持在用户空间实现文件系统。

在用户空间实现文件系统能够大幅提高生产率,简化了为操作系统提供新的文件系统的工作量,特别适用于各种虚拟文件系统和网络文件系统。上述ZFS和glusterfs都属于网络文件系统。但是,在用户态实现文件系统必然会引入额外的内核态/用户态切换带来的开销,对性能会产生一定影响。

安装流程

MFS-MASTER安装(192.168.3.26)

1、MFS-MASTER安装

a)下载源码包

https://www.doczj.com/doc/ee15896941.html,/projects/moosefs/

放到/opt目录下

b)解压

tar zxvf mfs-1.6.27.tar.gz

c)增加mfs的组和用户

新增mfs用户组:groupadd mfs

新增mfs用户:useradd mfs -g mfs -s /sbin/nologin

建立mfs文件夹:mkdir -p /opt/soft /data /mnt/mfschunks

赋权:chown -R mfs:mfs /mnt/mfschunks

d)配置mfs

cd /opt/mfs-1.6.27

./configure --prefix=/opt/mfs --sysconfdir=/opt/mfs/etc --localstatedir=/data --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount

e)编译连接

make && make install

f)配置master配置文件

g)cd /opt/mfs/etc/mfs

cp mfsmaster.cfg.dist mfsmaster.cfg

cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

cp mfsexports.cfg.dist mfsexports.cfg

cd /data/mfs

cp metadata.mfs.empty metadata.mfs

2、MFS-MASTER配置 mfsmaster.cfg

a) 默认配置文件不做任何修改,即可以启动MFS-MASTER端

b) 简单介绍配置文件的具体参数

WORKING_USER = mfs 运行master server 的用户

WORKING_GROUP = mfs 运行master server 的用户组

SYSLOG_IDENT = mfsmaster master server 在syslog中的标识,说明是由master serve 产生的 LOCK_MEMORY = 0 是否执行mlockall()以避免mfsmaster 进程溢出(默认为0)

NICE_LEVEL = -19 运行的优先级(如果可以默认是-19; 注意: 进程必须是用root启动

EXPORTS_FILENAME = /usr/local/mfs/etc/mfsexports.cfg 被挂接目录权限配置文件

DATA_PATH = /usr/local/mfs/var/mfs 数据存放路径,此目录下大致有三类文件,changelog,

sessions和stats;

BACK_LOGS = 50 metadata 的改变log 文件数目(默认是50)

REPLICATIONS_DELAY_INIT = 300 延迟复制的时间(默认是300s);

REPLICATIONS_DELAY_DISCONNECT = 3600 chunkserver 断开的复制延迟(默认是3600);

MATOML_LISTEN_HOST = * metalogger 监听的IP 地址(默认是*,代表任何IP);

MATOML_LISTEN_PORT = 9419 metalogger 监听的端口地址(默认是9419);

MATOCS_LISTEN_HOST = * 用于chunkserver 连接的IP 地址(默认是*,代表任何IP);MATOCS_LISTEN_PORT = 9420 用于chunkserver 连接的端口地址(默认是9420);

MATOCU_LISTEN_HOST = * 用于客户端挂接连接的IP 地址(默认是*,代表任何IP); MATOCU_LISTEN_PORT = 9421 用于客户端挂接连接的端口地址(默认是9421);

CHUNKS_LOOP_TIME = 300 chunks 的回环频率(默认是:300 秒);

原文:在几秒钟内循环次数

CHUNKS_DEL_LIMIT = 100 在一个loop设备中可以删除chunks的最大数 (默认:100) CHUNKS_WRITE_REP_LIMIT = 1 在一个循环里复制到一个chunkserver 的最大chunk数目

(默认是1)

CHUNKS_READ_REP_LIMIT = 5 在一个循环里从一个chunkserver 复制的最大chunk数目

(默认是5)

REJECT_OLD_CLIENTS = 0 弹出低于1.6.0 的客户端挂接(0 或1,默认是0)

注意mfsexports 访问控制对于那些老客户是没用的LOCK_FILE=/var/run/mfs/mfsmaster.lock避免启动多次启动同一个守护进程

c) 这步暂时不操作

vi mfsexports.cfg

192.168.198.0/24 / rw

192.168.1.0/24 / rw,alldirs,maproot=0,password=passcode

10.0.0.0-10.0.0.5 /test rw,maproot=nobody,password=test

第一部分:客户端的ip 地址

第二部分:被挂接的目录

第三部分:客户端拥有的权限

第二部分说明

/ 标识MooseFS 根

第三部分详细说明

ro 只读模式共享

rw 读写的方式共享

alldirs 允许挂载任何指定的子目录

maproot映射为root,还是指定的用户(0表示ROOT)

password 指定客户端密码

d) 启动MFS-MASTER

/usr/local/mfs/sbin/mfsmaster start

关闭MFS-MASTER

/usr/local/mfs/sbin/mfsmaster –s(stop)

e) 首次启动会提示缺少元数据

解决:

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

f) 再次启动MFSMASTER

g) 检查是否启动成功

netstat –nlp

ps –ef|grep mfs

h)日志观察

tail –f /var/log/messages

mfsmetalogger的安装(192.168.3.119)

这个和mfsmaster安装差不多,差别主要是配置文件的拷贝步骤

a)下载或者拷贝mfs , cd /opt tar, zxvf mfs-1.6.27.tar.gz

cd mfs-1.6.27

./configure --prefix=/opt/mfs --sysconfdir=/opt/mfs/etc --localstatedir=/data --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount make && make install

cd /opt/mfs/etc/mfs

cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

1、配置mfsmetalogger

需要重复master安装中需要的mfs用户组用户文件夹和赋权

a)vi mfsmetalogger.cfg

WORKING_USER =mfs 运行master server 的用户

WORKING_GROUP = mfs 运行master server 的用户组

SYSLOG_IDENT =mfsmetalogger mfsmetalogger在syslog中的标识,说明是mfsmetalogger产生的LOCK_MEMORY = 0 是否执行mlockall()以避免mfsmaster 进程溢出(默认为0)

NICE_LEVEL = -19 运行的优先级(如果可以默认是-19; 注意: 进程必须是用root启动

DATA_PATH= /usr/local/mfs/var/mfs 数据存放路径

BACK_LOGS = 50 metadata 的改变log 文件数目(默认是50)

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

MASTER_RECONNECTION_DELAY = 5

MASTER_HOST = 192.168.198.60MFS-MASTER的IP

MASTER_PORT = 9419MFS-MASTER的端口

MASTER_TIMEOUT = 60 可能是用于下载文件超时的重试时间

LOCK_FILE = /var/run/mfs/mfsmetalogger.lock 避免启动多次启动同一个守护进程

b)启动mfsmetalogger

/usr/local/mfs/sbin/mfsmetalogger start

关闭MFS-METALOGGER

/usr/local/mfs/sbin/mfsmetalogger -s

c)检查是否启动成功

netstat –nlp

ps –ef|grep mfs

d)日志观察

tail –f /var/log/messags

chunkserver的安装

1、chunkserver的编译安装

需要重复master安装中需要的mfs用户组用户文件夹和赋权

a)cd /opt

b)tar zxvf mfs-1.6.20-2.tar.gz

c)cd mfs-1.6.20-2

d)./configure --prefix=/opt/mfs --sysconfdir=/opt/mfs/etc --localstatedir=/data

--with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfsmount

e)make && make install

f)cd /opt/mfs/etc/mfs

g)cp mfschunkserver.cfg.dist mfschunkserver.cfg

h)cp mfshdd.cfg.dist mfshdd.cfg

2、配置chunkserver

a)vi mfschunkserver.cfg

WORKING_USER = mfs 运行master server 的用户

WORKING_GROUP = mfs 运行master server 的用户组

DATA_PATH = /usr/local/mfs/var/mfs 数据存放路径

LOCK_FILE = /var/run/mfs/mfschunkserver.lock 避免启动多次启动同一个守护进程

SYSLOG_IDENT = mfschunkserver chunkserver在syslog中的标识,说明是chunkserver产生#BACK_LOGS = 50

MASTER_RECONNECTION_DELAY = 30 重新连接延时30秒

MASTER_HOST = 192.168.198.60 元数据服务器的名称或地址,可以是主机名,也可以是ip 地址MASTER_PORT = 9420 MFS-MASTER的端口

MASTER_TIMEOUT = 60 连接MASTER的超时时间

CSSERV_LISTEN_HOST = * 数据复制服务器地址

CSSERV_LISTEN_PORT = 9422 这个监听端口用于与其它数据存储服务器间的连接,通常是数据复

CSSERV_TIMEOUT = 60 数据复制的超时时间

CSTOCS_TIMEOUT = 60 未知???

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

位置

b)vi mfshdd.cfg

/hdd 在chunkserver端挂载点,就是chunkserver这个机器真实存在的目录

c)启动mfschunkserver

/usr/local/mfs/sbin/mfschunkserver start

关闭MFS-METALOGGER

/usr/local/mfs/sbin/mfschunkserver -s

d)检查是否启动成功

netstat –nlp || ps –ef|grep mfs

e)日志观察

tail –f /var/log/messags

MFS-CLIENT的安装

1、解压mfs,建立用户组和用户文件夹赋权

2、编译MOOSEFS

a)编译安装

cd /opt/mfs-1.6.27

./configure --localstatedir=/data --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver --enable-mfsmount

make && make install

b)配置挂载点

mkdir /mnt/mfs

chown –R mfs:mfs /mnt/mfs

修改所有机器的/etc/hosts文件添加行192.168.3.26 mfsmaster

/usr/local/mfs/bin/mfsmount /mnt/mfs -H mfsmaster

mfsmount参数说明

-H master的IP地址

-p master用于与客户端连接的端口

-S 挂载MASTER端根目录下的子目录,前提是必须通过挂载根目录后,创建相应的子目录,才可以挂载

c) 挂载时,默认提示输入密码,没有密码直接回车即可;

d) 验证是否成功

df –h

问题:

将用户切换到mfs用户提示acccount is not avaliable

a)vim /etc/passwd 修改mfs所在用户行的/sbin/nologin 为/bin/bash

b)在client端挂载不成功,安装fuse,重新配置编译client

启动如下:

master:

/opt/mfs/sbin/mfsmaster start

/opt/mfs/sbin/mfscgiserv #这个提供web的方式来查看master的状态, 访问地址为http://ip(master):9425

metalogger:

/opt/mfs/sbin/mfsmetalogger start

chunk server:

/opt/mfs/sbin/mfschunkserver start

客户端的使用方法:

假如我们要挂载到/mnt/mfs目录

mkdir -p /mnt/mfs

/usr/local/bin/mfsmount /mnt/mfs/ -H mfsmaster

挂载后需要改变文件夹属组为使用者:

chown -R user:group /mnt/mfs

df -h就可以查看到mfsmaster已经被挂载了, 还有mfs的使用情况

关闭如下, 客户端首先卸载文件系统:

umount /mnt/mfs

/opt/mfs/sbin/mfschunkserver stop

/opt/mfs/sbin/mfsmetalogger stop

/opt/mfs/sbin/mfsmaster stop

使用MFS文件系统

1、CLIENT端挂载MFS

mfsmount参数说明

-H master的IP地址

-p master用于与客户端连接的端口

-S 挂载MASTER端根目录下的子目录,前提是必须通过挂载根目录后,创建相应的子目录,才可以挂载

-m 用于挂载mfsmeta文件系统,配合垃圾箱功能使用,默认挂载点是/mnt/mfsmeta

-w 用于改变默认挂载点

具体使用:

例1: /usr/local/mfs/bin/mfsmount /mnt/mfs -H 192.168.198.60 -p

例2: /usr/local/mfs/bin/mfsmount /mnt/mfs -H 192.168.198.60 -S /test -p

例3: /usr/local/mfs/bin/mfsmount /mnt/mfsmeta -H 192.168.198.60 / -p –m

例4: /usr/local/mfs/bin/mfsmount –w /mnt/mfsmeta-test -H 192.168.198.60 / -p -m

2、从垃圾箱恢复意外删除的文件

通过-m这个参数挂载mfsmeta文件系统时,必须在MASTER端的mfsexports.cfg里,必须打开如下内容的注释:

* . rw

客户端直接执行

/usr/local/mfs/bin/mfsmount /mnt/mfsmeta -H 192.168.198.60 / -p –m

注:

a)/mnt/mfsmeta这个目录不需要执行chown –R mfs.mfs,直接在ROOT下创建该

目录

b)在这个目录下进行恢复意外删除文件的时候,必须使用ROOT账户进行操作

c)原来的位置下不能有一个已存在的与被删文件同名的文件,否则恢复不会成功。

恢复流程:

a)./reserved ./trash 出现这两个目录

b)./trash下,有一个./undel的目录,还有一些被删除的以8位16进制命名的

目录,并且以"|"作为目录符号,再加上被删除文件名字。(如果文件名字大于

系统支持的255最大长度时,将从左到右进行裁剪,直到满足255)

规则:00000009|1,1代表删除的文件。

0000002E|123|tst 代表123目录下tst文件,如果123目录被一起删除,

恢复的时候123这个目录也会被一同恢复出来。

c)如果想恢复文件,把00000009|1该文件移动到/mnt/mfsmeta/trash/undel下,

文件即可恢复。

d)./reserved这个目录的作用是针对那些已被彻底删除但目前正被打开着的文

件。

3、垃圾箱相关设定

垃圾箱文件保留期默认是1天,86400秒

查看垃圾箱保留期时间

/usr/local/mfs/bin/mfsgettrashtime /mnt/mfs

执行效果:

/mnt/mfs: 86400

/usr/local/mfs/bin/mfssettrashtime

设置垃圾箱保留期

/usr/local/mfs/bin/mfssettrashtime 3600 /mnt/mfs

执行效果:

/mnt/mfs:

inodes with trashtime changed: 3

inodes with trashtime not changed: 0

inodes with permission denied: 0

参数说明:

-r 表示递归修改这个目录下所有文件属性,不带-r表示修改本级目录。

如果将时间设置为0,表示不启用垃圾箱功能。

4、设置文件拷贝份数

查看文件设置拷贝份数

/usr/local/mfs/bin/mfsgetgoal /mnt/mfs/123/123

执行效果

/mnt/mfs/123/123: 2

查看文件拷贝具体信息

/usr/local/mfs/bin/mfscheckfile /mnt/mfs/123/123

执行效果

/mnt/mfs/123/123:

2 copies: 1 chunks

查看文件拷贝具体信息

/usr/local/mfs/bin/mfsfileinfo /mnt/mfs/123/123

执行效果

/mnt/mfs/123/123:

chunk 0: 000000000000001D_00000001 / (id:29 ver:1)

copy 1: 192.168.198.62:9422

copy 2: 192.168.198.64:9422

注:

a)一个文件数据长度为零,并且也没有对此文件设置为0份拷贝的时候,这

个文件查看拷贝信息的时候,会出现如下:/mnt/mfs/123/123:(通俗一点

说,就是空文件无法获取到信息的。

查看目录具体信息,等同于du -s

/usr/local/mfs/bin/mfsdirinfo /mnt/mfs

执行效果

/mnt/mfs:

inodes: 3 文件总数

directories: 2 目录数

files: 1 文件数

chunks: 1 块数

length: 31 文件大小总和

size: 70656 块长度总和

realsize: 141312 磁盘空间的使用包括所有的拷贝

设置文件拷贝份数

/usr/local/mfs/bin/mfssetgoal 2 /mnt/mfs

执行效果

/mnt/mfs:

inodes with goal changed: 3

inodes with goal not changed: 0

inodes with permission denied: 0

参数说明

-r 表示递归修改这个目录下所有文件属性,不带-r表示修改本级目录。

注:

a)拷贝份数尽量和chunkserver这个服务的数量保持一致,比较易于管理,数据

额安全性也得到保障。

b)上面这个命令产生的效果是:改变当前目录的属性,如果当前目录下已经存在

一些文件,这些已存在文件的拷贝属性不会发生变化,只有新建的文件才会按

照新的拷贝属性进行复制。

c)递归修改这个目录下所有文件的拷贝份数属性后,所有文件的拷贝份数的变化

需要一定的时间才会发生变化。

5、修复损坏的块 --(该实验未能模拟出来,从网络上摘抄,以后可能会有用)

Client端大文件传输过程中,强制拔下master主机电源,造成master非法关闭,使用mfsmetarestore -a修复后,master日志报告有坏块:

Jan 19 17:22:17 ngmaster mfsmaster[3250]: chunkserver has nonexistent chunk (000000000002139F_00000001), so create it for future deletion

Jan 19 17:22:18 ngmaster mfsmaster[3250]: (192.168.5.232:9422) chunk: 000000000002139F creation status: 20

Jan 19 17:25:18 ngmaster mfsmaster[3250]: chunk 000000000002139F has only invalid copies (1) - please repair it manually

Jan 19 17:25:18 ngmaster mfsmaster[3250]: chunk 000000000002139F_00000001 - invalid copy on (192.168.5.232 - ver:00000000)

Jan 19 17:26:43 ngmaster mfsmaster[3250]: currently unavailable chunk 000000000002139F (inode: 135845 ; index: 23)

Jan 19 17:26:43 ngmaster mfsmaster[3250]: * currently unavailable file 135845: https://www.doczj.com/doc/ee15896941.html,-access_log200904.tar.gz

Client端使用mfsfilerepair修复

/usr/local/mfs/bin/mfsfilerepair https://www.doczj.com/doc/ee15896941.html,-access_log200904.tar.gz

https://www.doczj.com/doc/ee15896941.html,-access_log200904.tar.gz:

chunks not changed: 23

chunks erased: 1

chunks repaired: 0

查看master日志,发现:

Jan 19 17:30:17 ngmaster mfsmaster[3250]: chunk hasn't been deleted since previous loop - retry

Jan 19 17:30:17 ngmaster mfsmaster[3250]: (192.168.5.232:9422) chunk: 000000000002139F deletion status: 13

Jan 19 17:35:16 ngmaster mfsmaster[3250]: chunk hasn't been deleted since

previous loop - retry

Jan 19 17:35:16 ngmaster mfsmaster[3250]: (192.168.5.232:9422) chunk: 000000000002139F deletion status: 13

Client端执行以下操作后,master不再报告相关信息:

mv https://www.doczj.com/doc/ee15896941.html,-access_log200904.tar.gz https://www.doczj.com/doc/ee15896941.html,-access_log200905.tar.gz

6、快照

mfsmakesnapshot

/usr/local/mfs/bin/mfsmakesnapshot /mnt/mfs/123/tmp2 /mnt/mfs/111/

此命令是一个CP的过程,会自动将tmp2这个文件cp到111目录下。也可以针对一个目录来操作。

mfsappendchunks

/usr/local/mfs/bin/mfsappendchunks/mnt/mfs/111/shot /mnt/mfs/123/123 /mnt/mfs/123/tmp2

将1个以上的源文件做成一个包,这里是将123和tmp2这两个文件的块追加到shot的块文件中。

注:

源和目标必须都属于mfs体系,即不能将mfs体系中的文件快照到其他文件系统。

灾难恢复实验

6.1、master端

6.1.1、服务器损坏或是master无法启动

该实验模拟当MASTER得服务器出现宕机,或是master无法启动时,导致整个MFS存储系统无法正常提供服务,为保证快速恢复,特提出下列解决方案。

a)Metalogger server(搭建这个服务,并保证其数据的完整性。)

这个服务是moosefs 1.6之后推出的一个服务,是为了解决master端单点故障而推

出的一个服务。该进程会同步复制master端的元数据和日志信息,有了这些文件后,可以轻松恢复mfs的master的工作。

b)以下所有实验都基于Metalogger server来实现的。

实验1、

master机器损坏

想法:由于Metalogger server这端拥有master所有变化的信息和元数据,所以在这台服务器上直接启用master进程,看看效果如何?

相关主题
文本预览
相关文档 最新文档