防伪码:它强任它强,轻风拂山冈;它横任它横,月光照大江。

1.MooseFS文件系统介绍

1.1.Moosefs组件介绍
MooseFS是一种分布式文件系统,MooseFS文件系统结构包括以下四种角色:
1 管理服务器managing server (master)
2 元数据日志服务器Metalogger server(Metalogger)
3 数据存储服务器data servers (chunkservers)
4 客户机挂载使用client computers

各种角色作用:
管理服务器:负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷贝
元数据日志服务器: 负责备份master服务器的变化日志文件,文件类型为changelog_ml.*.mfs,以便于在master server出问题的时候接替其进行工作
数据存储服务器:负责连接管理服务器,听从管理服务器调度,提供存储空间,并为客户提供数据传输.
客户端: 通过fuse内核接口挂接远程管理服务器上所管理的数据存储服务器,.看起来共享的文件系统和本地unix文件系统使用一样的效果.
1.2.MooseFS优点
开源
通用文件系统,不需要要修改上层应用就可以使用
可以在线扩容,体系架构可伸缩性极强
部署简单
体系架构高可用,所有组件无单点故障
文件对象高可用,可设置任意的文件冗余程度,而绝对不会影响读写的性能,只会加速
提供如windows回收站的功能,
提供类似java语言GC(垃圾回收)
提供netapp,emc,ibm等商业存储的snapshot特性
google filesystem 的一个c实现
提供web gui监控接口
提高随机读写的效率
提高海量小文件的读写效率
1.3.MooseFS 1.6.X
  修改1.5中的大批量操作时打开文件过多的bug
新增加了masterlogger服务器,在1.5中没有的,就是做了master服务器的冗余,进一步的加强master服务器的稳定性,在mfs体系中master是要求最稳定以及性能要求最高的,因此务必保证master的稳定
修改1.5中存在的对于坏块的修复功能,在mfs1.5中遇到chunker坏块校验,错误比较多的是往往导致master将出现坏块的chunker自动剔除出去的情况,此次增加了对坏块的修复功能,很方便的进行修复,简化对坏块的处理功能。
对metadata和changelog的新认识,之前认为changelog记录的是文件的操作,定期的像数据库的日志一样归档到metadata中,发现上面的理解存在误区,真正的是changelog中记录了对文件的操作,metadata记录文件的大小和位置,因此metadata是比较重要的,在进行修复的过程中是采用metadata和最后一次changelog进行修复。
MFS 文档中明确指出对于内存和磁盘大小的要求
指出了在测试的过程中多个chunker并不影响写的速度,但是能加快读的速度,在原来的基础上增加一个chunker时,数据会自动同步到新增的chunker上以达到数据的平衡和均衡。

1.4.Key differences between versions 1.6.2x and 2.0.x
1. Master host(s) configuration is done solely via DNS – it is no longer possible to list master(s) IP address(es) in clients’ and Chunkservers’ configuration; default name for master domain is mfsmaster, it can be changed in configuration files;
2. In Pro version Metaloggers become optional, they can be replaced by additional Master Servers; in Community Edition it is still strongly recommended to set up Metaloggers.
3. Mfsmetarestore tool is no longer present in the system; instead, it is enough to start the master process with -a switch; 4. Configuration files now sit in mfs subdirectory inside the /etc directory (this change was introduced in 1.6.27).
1.5.常见问题
master性能瓶颈,主要是可扩展性不强
体系架构存储文件总数的瓶颈,mfs把文件系统的结构缓存到master内存中,这样文件越多,master的内存消耗越大,8G对应2500kw文件数,2亿就的64G内存
单点故障解决方案的健壮性
垃圾回收   把默认的86400改为300秒,这样可以免的垃圾还没回收完,你的存储容量就暴掉了。
1.6.mfs的原理
就是客户端请求master,master分派他去哪里读数据,

1.1.1.MFS
MFS系统由4个部分构成,master、metalogger、chunkserver、client。
Master —— mfs的大脑,记录着管理信息,比如:文件大小,存储的位置,份数等,和innodb中共享空间(ibdata)中存储的信息类似,这些信息被记录到metadata.mfs中,当该文件被载入内存后,改文件会重命名为metadata.mfs.back,当chunkserver上有更新时,master会定期将获得的新的信息回写到metadata.mfs.back中,保重元数据的可靠。 
硬件推荐:大内存,因为内存中需要将metadata.mfs加载进来,这个文件的大小取决于你chunkserver上存储的数据量,内存的大小会成为之后的问题,要ECC的可以进行错误校验,当内存中数据量达到一定程度,如果没有个容错的机制,会很可怕;冗余电池,和磁盘配置RAID1/RAID5/RAID10,都是为了保证高可靠。
1.1.2. Metalogger
Metalogger —— mfs的备份,好比mysql中的m-s结构,metalogger会定期重master上将的metadata、changelog、session类型的文件下载同步到本地目录下,并加后缀”_ml”将其重命名。
 
硬件推荐:与master机器配置一致,metalogger本身就是master的一个备机,当master宕机后,可以直接将metalogger提升为master。
1.1.3. Chunkserver
Chunkserver —— 数据存储地,文件以chunk大小存储,每chunk最大为64M,小于64M的,该chunk的大小即为该文件大小,超过64M的文件将被均分,每一份(chunk)的大小以不超过64M为原则;文件可以有多份copy,即除了原始文件以外,该文件还存储的份数,当goal为1时,表示只有一份copy,这份copy会被随机存到一台chunkserver上,当goal的数大于1时,每一份copy会被分别保存到每一个chunkserver上,goal的大小不要超过chunkserver的数量,否则多出的copy,不会有chunkserver去存,goal设置再多实际上也就没有意义的。Copy的份数,一般设为大于1份,这样如果有一台chukserver坏掉后,至少还有一份copy,当这台又被加进来后,会将失去的那份copy补回来,始终保持原有的copy数,而如果goal设为1copy,那么当存储该copy的chunkserver坏掉,之后又重新加入回来,copy数将始终是0,不会恢复到之前的1个copy。
Chunkserver上的剩余存储空间要大于1GB(Reference Guide有提到),新的数据才会被允许写入,否则,你会看到No space left on device的提示,实际中,测试发现当磁盘使用率达到95%左右的时候,就已经不行写入了,当时可用空间为1.9GB。
硬件建议:普通的机器就行,就是要来存几份数据,只要磁盘够大就好。
1.1.4. Client
Client —— 客户端通过内核加载的FUSE模块,再通过和master的共同,将chunkserver共享的分区挂载到本地,然后进行读写操作。由于FUSE模块是外加的模块,当系统重启后,需要执行modprobe fuse,将其加载到内核中

matedata.mfs.back文件将消失,那么要恢复整个mfs,则需从metalogger服务器取得该文件。请特别注意这个文件,它与日志文件一起,才能够恢复整个被损坏的分布式文件系统。
2.环境准备

角色
主机名 IP OS
配置
Master mfsmaster1 10.162.23.51 Redhat7.2 8C16G300G
Metalogger mfsmetalogger 10.162.23.52 Redhat7.2 8C16G300G
Chunkserver mfschunkserver1 10.162.23.53 Redhat7.2 8C16G300G
Chunkserver mfschunkserver2 10.162.23.54 Redhat7.2 8C16G300G
Chunkserver mfschunkserver3 10.162.23.55 Redhat7.2 8C16G300G
Chunkserver Mfschunkserver4 10.162.23.56 Redhat7.2 8C16G300G
Chunkserver Mfschunkserver5 10.162.23.57 Redhat7.2 8C16G300G
Chunkserver Mfschunkserver6 10.162.23.58 Redhat7.2 8C16G300G
Chunkserver Mfschunkserver7 10.162.23.59 Redhat7.2 8C16G300G
Chunkserver Mfschunkserver8 10.162.23.60 Redhat7.2 8C16G300G

moosefs安装前准备:
# mooseFS软件包:moosefs-2.0.88-1.tar.gz
# client端 :fuse-2.9.6.tar.gz
# IPTABLES :OFF
# SELINUX :disable

# 所有主机解决GCC等依赖问题
# yum install gcc zlib-devel

# cat /etc/hosts
10.162.23.51 mfsmaster
# 此处所有角色中master-host配置默认都是mfsmaster。如果DNS配置了解析这里就不需要配置了。

3.MooseFS编译安装
3.1.Master server 安装
当我们安装主控服务器时,在配置过程中(./configure),可以取消安装 chunk server (--disable-mfschunkserver)以及 MooseFS 客户端(--disable-mfsmount). 安装 主控服务器 master 的具体步骤为:
# 添加 mfs 组
# groupadd mfs
# 新增系统用户 mfs
# useradd -g mfs mfs
# passwd mfs
# 解包归档文件
# tar -zxvf moosefs-2.0.88-1.tar.gz
# 进入安装目录
# cd moosefs-2.0.88
# mkdir /opt/server/mfs -p
# chmod 755 -R /opt/server
# 配置
# ./configure --prefix=/opt/server/mfs --with-default-user=mfs --with-default-group=mfs --localstatedir=/opt/server/mfs/data --disable-mfschunkserver --disable-mfsmount
# 编译并安装
# make && make install
成功安装 master 以后,系统会在/opt/server/mfs/etc/mfs目录自动生成样例配置文件,这些样例文件是以.dist 后缀命名。这里我们将借用这些样例文件作为 MooseFS 主控服务器的目标配置文件:

# 切换目录
# cd /opt/server/mfs/etc/mfs
# 复制样例文件,以得到 master 所需的配置文件
# cp mfsmaster.cfg.dist mfsmaster.cfg
# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
# cp mfsexports.cfg.dist mfsexports.cfg

Mfsmaster.cfg 配置文件包含主控服务器 master 相关的设置,在这里我们暂时不打算对其 进行修改。如果你想知道关于该配置文件更多的信息,请查看它的手册页(使用命令 man mfsmaster.cfg)。
配置文件 mfsexports.cfg 指定那些客户端主机可以远程挂接 MooseFS 文件系统,以及授予 挂接客户端什么样的访问权限。例如,我们指定只有 172.25.0.x 网段的主机可以以读写模式 访问 MooseFS 的整个共享结构资源(/)。在配置文件 mfsexports.cfg 文件的第一行,先 取消注释,然后把星号(*)改成 172.25.0.0/24,以便我们可以得到下面的文本行:
# cat /opt/server/mfs/etc/mfs/mfsexports.cfg
10.162.23.0/24  / rw,alldirs,maproot=0

二进制文件 metadata 和文本文件 changelog 将被保存在目录/opt/server/mfs/data,这是因为我们安 装过程的 configure 步骤使用了选项 --localstatedir=/opt/server/mfs/data 。首次安装 master 时,会自 动生成一个名为 metadata.mfs.empty 的元数据文件 metadata,该文件是空的。MooseFS master 运必须有文件 metadata.mfs,这个文件是从 metadata.mfs.empty 改名而来:
# 切换目录
# cd /opt/server/mfs/data/mfs
# 重命名文件
# cp metadata.mfs.empty metadata.mfs
MooseFS master 运行以后,metadata.mfs 文件大小将发生变化,肯定不会是 空文件了。

# 运行master服务
# /opt/server/mfs/sbin/mfsmaster start

在一个生产环境里,我们应当设置自动启动脚本,以便操作系统重新启动时,MooseFS master 也能自动运行。
为了监控 MooseFS 当前运行状态,我们可以运行 CGI 监控服务,这样就可以用浏览器查看整个 MooseFS 的运行情况:
# /opt/server/mfs/sbin//mfscgiserv

# 开机启动
# cat /etc/rc.local

FU8`]$0W6OSR93AWSAOVO6Y.png

现在,我们在浏览器地址栏输入 http://10.162.23.51:9425 即可查看 master 的运行情况(这个时 候,是不能看见 chunk server 的数据)。

mooseFS 2.0.x 编译安装_第1张图片

3.2.Backup server (metalogger) 安装
用来安装 metalogger 的主机,在性能上应该比 master 强大(至少有更多的内存)。一旦主控 服务器 master 失效,只要导入 changelogs 到元数据文件,备份服务器 metalogger 将能接替发生 故障的 master,行使管理服务器的职能(更多细节请参看 http://www.moosefs.org/minihowtos.html#redundant-master)。
备份服务器 Metalogger 安装跟主控服务器 master 安装非常类似。其安装命令如下:
# 添加 mfs 组
# groupadd mfs
# 新增系统用户 mfs
# useradd -g mfs mfs
# passwd mfs
# 解包归档文件
# tar -zxvf moosefs-2.0.88-1.tar.gz
# 进入安装目录
# cd moosefs-2.0.88
# mkdir /opt/server/mfs -p
# chmod 755 -R /opt/server

# 配置
# ./configure --prefix=/opt/server/mfs --with-default-user=mfs --with-default-group=mfs --localstatedir=/opt/server/mfs/data --disable-mfschunkserver --disable-mfsmount
# 编译并安装
# make && make install
# 产生配置文件
# cd /opt/server/mfs/etc/mfs
# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

# 修改文件/etc/hosts ,增加如下的文本行:
# 生产已经做了DNS域名解析,不需要配置
10.162.23.51 mfsmaster
#没有对mfsmaster解析的话,需要手动配置master_host
# cat mfsmetalogger.cfg|grep -i master_host
# MASTER_HOST = mfsmaster

# 运行备份服务 mfsmetaloger:
# /opt/server/mfs/sbin/mfsmetalogger start
# 开机启动
# vim /etc/rc.local
/opt/server/mfs/sbin/mfsmetalogger start
# 在一个生产环境里,我们应当设置自动启动脚本,以便操作系统重新启动时,MooseFS mfsmetalogger 服务也能自动运行。

}C@8[$JO]@_I7N8%R2Q{EOX.png

3.3.存储块服务器 Chunkservers 安装
在每个 chunk server 主机上执行下面的命令:
# 添加 mfs 组
# groupadd mfs
# 新增系统用户 mfs
# useradd -g mfs mfs
# passwd mfs
# 解包归档文件
# tar -zxvf moosefs-2.0.88-1.tar.gz
# 进入安装目录
# cd moosefs-2.0.88
# mkdir /opt/server/mfs -p
# chmod 755 -R /opt/server
# 配置
# ./configure --prefix=/opt/server/mfs --with-default-user=mfs --with-default-group=mfs --localstatedir=/opt/server/mfs/data --disable-mfsmaster
# 编译并安装
# make && make install

# 准备 chunk server 服务所需的配置文件:
# cd /opt/server/mfs/etc/mfs
# cp mfschunkserver.cfg.dist mfschunkserver.cfg
# cp mfshdd.cfg.dist mfshdd.cfg
# 为了测试这个安装,我们保留 mfschunkserver.cfg 文件不做任何改动;如果读者想了解 配置文件 mfschunkserver.cfg 更详细的信息,请查看手册页 (man mfschunkserver.cfg)。

# 存储配置
# fdisk -l
/dev/sdb 300G

#Creating a partition on /dev/sdb
# parted --align optimal /dev/sdb
GNU Parted 2.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
(parted) mkpart mfschunks1 0% 100%
(parted) q

# Installing xfsprogs
# yum install xfsprogs

# Formatting partitions
# mkfs.xfs /dev/sdb1

# Formatting partitions with 4k block size
# mkfs.xfs -s size=4k /dev/sdb1 -f

# 配置挂载开机启动
# mkdir /mnt/mfschunks1

# cat /etc/fstab
/dev/sdb1 /mnt/mfschunks1 xfs defaults 0 0

# mount /mnt/mfschunks1

# df -Th
/dev/sdb1                       xfs       300G   33M  300G   1% /mnt/mfschunks1

# 权限配置
# chown mfs:mfs /mnt/mfschunks1
# chmod 770 /mnt/mfschunks1

# mfs Chunkserver 存储块配置
# cat /opt/server/mfs/etc/mfs/mfshdd.cfg
/mnt/mfschunks1

# 修改文件/etc/hosts ,增加如下的文本行:
# 生产已经做了DNS域名解析,不需要配置
10.162.23.51 mfsmaster
# hosts配置中没有对mfsmaster解析的话,需要手动配置master_host
# cat /opt/server/mfs/etc/mfs/mfschunkserver.cfg|grep -i master_host
# MASTER_HOST = mfsmaster

# Starting MooseFS Chunkserver
# /opt/server/mfs/sbin/mfschunkserver start
# 开机启动
# cat /etc/rc.local
/opt/server/mfs/sbin/mfschunkserver start
现在再通过浏览器访问 http://10.162.23.51:9425/ 应该可以看见这个 MooseFS 系统的全部信息, 包括主控 master 和存储服务 chunkserver 。

mooseFS 2.0.x 编译安装_第2张图片

3.4.客户端 Users’computers 安装
为了挂接基于 MooseFS 分布式文件,客户端主机必须安装 FUSE 软件包( fuse 版本号至少 2.8,推荐使用版本号大于 2.9.x 的 fuse)。如果系统没有安装 fuse,你必须手动对其进行安装。 一种常见的安装方式是从源码进行编译安装-我们可以从 http://sourceforge.net/projects/fuse/取 得安装源码:
# 删除旧版本fuse
# rpm -qa|grep fuse
fuse-libs-2.9.2-6.el7.x86_64
# rpm -e fuse-libs-2.9.2-6.el7.x86_64 --nodeps
# tar -zxvf fuse-2.9.6.tar.gz
# cd fuse-2.9.6
# ./configure
# make
# make install

# yum -y install fuse-devel

# 安装客户端软件 mfsmount 的步骤:
# export PKG_CONFIG_PATH=/opt/server/lib/pkgconfig:$PKG_CONFIG_PATH
# 解包归档文件
# tar -zxvf moosefs-2.0.88-1.tar.gz
# 进入安装目录
# cd moosefs-2.0.88
# 配置
# ./configure --prefix=/opt/server/mfs --with-default-user=mfs --with-default-group=mfs --localstatedir=/opt/server/mfs/data --disable-mfsmaster --enable-mfsmount
# make && make install

# 修改文件/etc/hosts ,增加如下的文本行:
# 生产已经做了DNS域名解析,不需要配置
10.162.23.51 mfsmaster

假定客户端的挂接点是/mnt/mfs,我们将以下面的指令来使用 MooseFS 分布式共享文件系统:
# 创建挂接点
# mkdir -p /opt/data/z-cmp/shareddata
# chmod 755 -R /opt/data
# useradd mfs
# passwd mfs
# chown mfs.mfs -R /opt/server/mfs/

# 开始挂接操作
# /opt/server/mfs/bin/mfsmount /opt/data/z-cmp/shareddata -H mfsmaster
# 查看挂载
# df -Th
mfsmaster:9421                  fuse.mfs  2.1T  2.0G  2.1T   1% /opt/data/z-cmp/shareddata

mooseFS 2.0.x 编译安装_第3张图片

3.5.配置文件解释
3.5.1.mfsmaster.cfg
需要注意的是,凡是用#注释掉的变量均使用其默认值,这里我解释一下这些变量:
#  WORKING_USER = mfs  运行master server的用户
#  WORKING_GROUP = mfs  运行master server的用户组
#  SYSLOG_IDENT = mfsmaster master在syslog中的标识,也就是说明这是由master serve产生的
#  LOCK_MEMORY = 0 是否执行mlockall()以避免mfsmaster 进程溢出
#  NICE_LEVEL = -19 运行的优先级(如果可以默认是 -19; 注意: 进程必须是用root启动)
#  FILE_UMASK = 027 设置目录和文件被创建时得到的权限
#  DATA_PATH = /opt/server/mfs/data/mfs 数据存放路径,此目录下大致有三类文件,changelog,sessions和stats
#  EXPORTS_FILENAME = /opt/server/mfs/etc/mfs/mfsexports.cfg 被挂接目录及其权限控制文件的存放位置
#  TOPOLOGY_FILENAME = /opt/server/mfs/etc/mfs/mfstopology.cfg 
#  BACK_LOGS = 50 metadata的改变log文件数目(默认是 50)
#  BACK_META_KEEP_PREVIOUS = 1 保存以前mfs元数据的文件数,默认值是1 
#  CHANGELOG_PRESERVE_SECONDS = 1800 CHANGELOG保存时间设置
#  MATOML_LISTEN_HOST = *     metalogger监听的IP地址(默认是*,代表任何IP)
#  MATOML_LISTEN_PORT = 9419  metalogger监听的端口地址(默认是9419)
#  MATOCS_LISTEN_HOST = *     用于chunkserver连接的IP地址(默认是*,代表任何IP)
#  MATOCS_LISTEN_PORT = 9420  用于chunkserver连接的端口地址(默认是9420)
#  MATOCS_TIMEOUT = 10   chunkserver连接超时设置,默认10s
#  REPLICATIONS_DELAY_INIT = 300 延迟复制的时间(默认是300s)
#  CHUNKS_LOOP_MAX_CPS = 100000 chunks的回环执行,最大值100000
#  CHUNKS_LOOP_MIN_TIME = 300 chunks的回环执行,最小值300
#  CHUNKS_SOFT_DEL_LIMIT = 10 一个chunkserver中可以删除chunks的最大数,软限 (默认:10)
#  CHUNKS_HARD_DEL_LIMIT = 25 一个chunkserver中可以删除chunks的最大数,硬限 (默认:25)
#  CHUNKS_WRITE_REP_LIMIT = 2,1,1,4 在一个循环里复制到一个chunkserver的最大chunk数目(四字数字表示:损坏的块,设定的块,服务器之间需要平衡的,其他服务器平衡的数目)
#  CHUNKS_READ_REP_LIMIT = 10,5,2,5 在一个循环里从一个chunkserver复制的最大chunk数目(四字数字表示:损坏的块,设定的块,服务器之间需要平衡的,其他服务器平衡的数目)
#  CS_HEAVY_LOAD_THRESHOLD = 100 设置chunkserver负载阀值100
#  CS_HEAVY_LOAD_RATIO_THRESHOLD = 5.0  设置chunkserver负载阀值比
#  CS_HEAVY_LOAD_GRACE_PERIOD = 900 设置chunkserver超时时间则进入Grace模式
#  ACCEPTABLE_PERCENTAGE_DIFFERENCE = 1.0 设置可接受的差异百分比
#  PRIORITY_QUEUES_LENGTH = 1000000 设置优先级队列长度
#  MATOCL_LISTEN_HOST = *    用于客户端挂接连接的IP地址(默认是*,代表任何IP
#  MATOCL_LISTEN_PORT = 9421 用于客户端挂接连接的端口地址(默认是9421)
#  SESSION_SUSTAIN_TIME = 86400 client断开连接超时时间,默认1天
#  QUOTA_TIME_LIMIT = 604800 client软限制,时间默认为7天
3.5.2.mfsmetalogger.cfg
# META_DOWNLOAD_FREQ = 24  元数据备份文件下载请求频率,默认24小时
3.5.3.mfschunkserver.cfg 
#  HDD_TEST_FREQ = 10 定期chunk测试
#  HDD_LEAVE_SPACE_DEFAULT = 256MiB  设置预留磁盘空间
#  HDD_REBALANCE_UTILIZATION = 20    设置均衡数据的时间比例
#  HDD_ERROR_TOLERANCE_COUNT = 2     设置磁盘错误的数量
#  HDD_ERROR_TOLERANCE_PERIOD = 600  设置超过错误数量,则标记为磁盘损坏
#  HDD_FSYNC_BEFORE_CLOSE = 0        禁用fsync
#  WORKERS_MAX = 150 
#  WORKERS_MAX_IDLE = 40
#  BIND_HOST = *
#  MASTER_HOST = mfsmaster
#  MASTER_PORT = 9420
#  MASTER_TIMEOUT = 10
#  MASTER_RECONNECTION_DELAY = 5   设置连接master重试超时时间
#  CSSERV_LISTEN_HOST = *
#  CSSERV_LISTEN_PORT = 9422   同其他数据块服务器进行连接,用于几个副本复制
3.6.MooseFS 基础用法
在 MooseFS 挂接点下创建目录 folder1, 在该目录,我们将以一个副本的方式存放文件 (设置 goal=1):
# mkdir -p /mnt/mfs/folder1
再在挂接点创建第 2 个目录 folder2, 在该目录,我们将以两个个副本的方式存放文件(设置 goal=2):
# mkdir -p /mnt/mfs/folder2

# 使用命令 mfssetgoal -r 设定目录里文件的副本数:
# 副本数为 1
# mfssetgoal -r 1 /mnt/mfs/folder1
/mnt/mfs/folder1:
inodes with goal changed: 0
inodes with goal not changed: 1
inodes with permission denied: 0

# 副本数为 2
# mfssetgoal -r 2 /mnt/mfs/folder2
/mnt/mfs/folder2:
inodes with goal changed: 0
inodes with goal not changed: 1
inodes with permission denied: 0

# 拷贝同一个文件到两个目录:
# cp /usr/src/mfs-1.6.15.tar.gz /mnt/mfs/folder1
# cp /usr/src/mfs-1.6.15.tar.gz /mnt/mfs/folder2

命令 mfschunkfile 用来检查给定的文件以多少副本数来存储。对应目录 folder1 来说, 有一个副本存储在一个 chunk 里:
# mfscheckfile /mnt/mfs/folder1/mfs-1.6.15.tar.gz
/mnt/mfs/folder1/mfs-1.6.15.tar.gz:
1 copies: 1 chunks

# 而在目录 folder2 中,文件 mfs-1.6.15.tar.gz 是以两个副本保存的:
#mfscheckfile /mnt/mfs/folder2/mfs-1.6.15.tar.gz
/mnt/mfs/folder2/mfs-1.6.15.tar.gz: 2 copies: 1 chunks

附加信息。当所有的组件被安装到同一个物理主机的时候,即便设定了 goal=2 来到达保存两个 副本的目的,但你可能看到的只是一个副本而已—这是合理的,尽管有两个磁盘,但它只是一 个 chunk server 啊!

更多关于 MooseFS 命令的使用方法,可以在这里找到:
http://www.moosefs.org/reference-guide.html#using-moosefs
我们推荐你阅读 FAQ 页面内容: http://www.moosefs.org/moosefs-faq.html
3.7.停止/启动  MooseFS
为了安全停止/启动 MooseFS 集群,建议执行如下的步骤:
停止:
在所有客户端用 Unmount 命令先卸载文件系统(本例将是: umount /mnt/mfs)
停止 chunk server 进程: /opt/server/mfs/sbin/mfschunkserver stop
停止 metalogger 进程: /opt/server/mfs/sbin/mfsmetalogger stop
停止主控 master server 进程: /opt/server/mfs/sbin/mfsmaster stop
启动:
启动主控 master server 进程: /opt/server/mfs/sbin/mfsmaster start
启动 metalogger 进程: /opt/server/mfs/sbin/mfsmetalogger start
启动 chunk server 进程: /opt/server/mfs/sbin/mfschunkserver start