MooseFS 分布式文件系统应用

来源:互联网 发布:java在线api中文文档 编辑:程序博客网 时间:2024/05/16 19:09

MooseFS 分布式文件系统应用 - zhuzhu - 五事九思  (大连Linux主机维护)

一、结构说明
  1. mfs client客户端数据由mount创建或web服务器通过程序调用将要上传的内容至mfs client(相当于原先的nfs图片服务器)。
  2.master元数据服务器负责管理,调度,只保留元数据日志(此日志非日志文件中的日志),将真实数据分发至chunk存储服务器。
  目前不支持多个master存在单点故障,可增设一台metalogger server作为master的备份,定期下载metadata并实时同步changlog日志变化文件(默认24小时同步一次,最小可设为每1小时同步一次)。
  3.master调度将真实数据分发至各chunk server,文件分成块以副本形式在各chunk间复制存储。
  后期可以不停服务增加chunk服务器或磁盘空间进行扩容。

二、安装配置

1.最新MooseFS1.6.20源码包下载:

http://sourceforge.net/projects/moosefs/files/moosefs/1.6.20/mfs-1.6.20-2.tar.gz
http://sourceforge.net/search/?q=fuse
rpm包下载:
http://pkgs.org/centos-5-rhel-5/rpmforge-i386/mfs-1.6.20-1.el5.rf.i386.rpm/download
http://pkgs.org/search/?keyword=fuse 
2.使用分布如下:
主控服务器master server:192.168.40.140
主控备份服务器metalogger server:192.168.40.185
存储块服务器Chunk01 server:192.168.40.183
Chunk02 server:192.168.40.184
Web客户端(client):192.168.40.144
3.安装规范:

< XMLNAMESPACE PREFIX ="O" />

安装路径

mfs用户帐户

数据存储路径

主要配置文件

master

/usr

Mfs:mfs

/etc/mfsmaster.cfg

/etc/mfsexports.cfg

metalogger

/usr

Mfs:mfs

/etc/mfsmetalogger.cfg

Chunk01

/usr

Mfs:mfs

/data

/etc/mfschunkserver.cfg

/etc/mfshdd.cfg

Chunk02

/usr

Mfs:mfs

/data

/etc/mfschunkserver.cfg

/etc/mfshdd.cfg

Mfs-client

/usr

本地挂接点/mnt

4. 主控服务器master server安装

1)#groupadd mfs
#useradd –g mfs mfs   建mfs组、用户
2)源码编译可取消装chunk server及mfs客户端mfsmount模块
#./configure --prefix=/usr –sysconfdir=/etc –localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs –disable-mfschunkserver –disable-mfsmount
# make && make install
注:--localstatedir=/var/lib 二进制文件metadata 和文本文件changelog 将被保存的目录。
3) 成功安装后/etc 下会自动生成.dist的样例配置文件:
 #cp mfsmaster.cfg.dist mfsmaster.cfg
#cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
#cp mfsexports.cfg.dist mfsexports.cfg
注:配置文件里被注释掉的行,即是MooseFS 内置的缺省值
4)主要配置更改:
  Mfsmaster.cfg包含主控服务器master的相关参数设置
  Mfsexports.cfg 指定哪些客户端主机可以远程挂接及访问权限

#vi mfsmaster.cfg

  1. # WORKING_USER = mfs
  2. # WORKING_GROUP = mfs
  3. # SYSLOG_IDENT = mfsmaster
  4. # LOCK_MEMORY = 0
  5. # NICE_LEVEL = -19
  6. # EXPORTS_FILENAME = /etc/mfsexports.cfg
  7. # DATA_PATH = /var/lib/mfs 元数据存放路径编译时已指定, 用于备份元数据服务器的变化日志
  8. BACK_LOGS = 24 需和metalogger server上配置一致,,存储了过去的24小时的元数据改变日志changelog.*.mfs.
  9. # REPLICATIONS_DELAY_INIT = 300
  10. # REPLICATIONS_DELAY_DISCONNECT = 3600
  11. # MATOML_LISTEN_HOST = *
  12. # MATOML_LISTEN_PORT = 9419
  13. # MATOCS_LISTEN_HOST = *
  14. #MATOCS_LISTEN_PORT = 9420 元数据服务器使用9420监听端口来接受数据存储服务器chunkserver端的连接
  15. # MATOCU_LISTEN_HOST = *
  16. # MATOCU_LISTEN_PORT = 9421 元数据服务器在9421端口监听,用以接受客户端对MFS进行远程挂接(客户端以mfsmount挂接MFS)
  17. # CHUNKS_LOOP_TIME = 300
  18. # CHUNKS_DEL_LIMIT = 100
  19. # CHUNKS_WRITE_REP_LIMIT = 1
  20. # CHUNKS_READ_REP_LIMIT = 5
  21. # REJECT_OLD_CLIENTS = 0
  22. # deprecated, to be removed in MooseFS 1.7
  23. # LOCK_FILE = /var/run/mfs/mfsmaster.lock 文件锁所在的位置,避免启动多次启动同一个守护进程

#vi mfsexports.cfg

192.168.40.144 / rw,alldirs,maproot=0
赋予mfs-client:192.168.40.144客户端可以挂载并具有读写权限。
5)首次安装master 时,会自动生成一个名为metadata.mfs.empty 的元数据文件 metadata,该文件是空的,master 运必须有文件metadata.mfs
  #cp /var/lib/mfs/metadata.mfs.empty /var/lib/mfs/metadata.mfs
6)修改/etc/hosts 绑定主机名mfsmaster与ip:192.168.40.140绑定
#vi /etc/hosts
192.168.40.140 mfsmaster
7)启动服务并设为开机启动
/usr/sbin/mfsmaster start
/usr/sbin/mfscgiserv start  mfs自带的CGI监控服务便用监控moosefs运行状态,使用9425端口。可通过web界面访问http://192.168.40.140:9425
#vi /etc/rc.local 添加设为开机启动
/usr/local/mfs/sbin/mfsmaster start
/usr/local/mfs/sbin/mfscgiserv
8)查看启动进程
#ps aux |grep mfs
#netstat natlp
5. master备份服务器metalogger安装配置
1)安装同主master,先创建用户和组mfs,再编译安装。
2)产生配置文件
#cp /etc/mfsmetalogger.cfg.dist /etc/mfsmetalogger.cfg
#vi /etc/mfsmetalogger.cfg
  1. # WORKING_USER = daemon
  2. # WORKING_GROUP = daemon
  3. # SYSLOG_IDENT = mfsmetalogger
  4. # LOCK_MEMORY = 0
  5. # NICE_LEVEL = -19
  6. # DATA_PATH = /var/mfs
  7. BACK_LOGS = 24 存放备份日志的总个数24,超出24则轮转
  8. META_DOWNLOAD_FREQ = 1  每小时从master同步一次
  9. # MASTER_RECONNECTION_DELAY = 5
  10. MASTER_HOST = 192.168.40.140 指定master主机IP
  11. # MASTER_PORT = 9419 准备连接元数据服务器端口
  12. # MASTER_TIMEOUT = 60
  13. # deprecated, to be removed in MooseFS 1.7
  14. # LOCK_FILE = /var/run/mfs/mfsmetalogger.lock
3)修改/etc/hosts 绑定主机名mfsmaster与ip:192.168.40.140绑定
#vi /etc/hosts
192.168.40.140 mfsmaster
4)启动服务并设为开机启动
#vi /etc/rc.local 设为开机启动
/usr/sbin/mfsmetalogger start

6. 存储块服务器chunk servers安装配置(两台chunk一样)

1) #groupadd mfs
#useradd –g mfs mfs创建用户和组mfs
2) 编译安装:
#./configure --prefix=/usr –sysconfdir=/etc –localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs –disable-mfsmaster
可以取消安装master模块.
# make && make install
3) Chunk server所需配置文件
#cp /etc/mfschunkserver.cfg.dist /etc/mfschunkserver.cfg
#cp /etc/mfshdd.cfg.dist /etc/mfshdd.cfg.dist 配置客户端挂接根分区所使用的共享空间位置。

#vi /etc/mfschunkserver.cfg

  1. # WORKING_USER = mfs
  2. # WORKING_GROUP = mfs
  3. # SYSLOG_IDENT = mfschunkserver
  4. # LOCK_MEMORY = 0
  5. # NICE_LEVEL = -19
  6. # DATA_PATH = /var/lib/mfs
  7. # MASTER_RECONNECTION_DELAY = 5
  8. # BIND_HOST = *
  9. MASTER_HOST = 192.168.40.140   指定连接的master元数据服务器 ip地址
  10. # MASTER_PORT = 9420
  11. # MASTER_TIMEOUT = 60
  12. # CSSERV_LISTEN_HOST = *
  13. # CSSERV_LISTEN_PORT = 9422   用于监听与其它数据存储服务器的连接(数据复制),如有多个chunkserver存储的话
  14. # HDD_CONF_FILENAME = /etc/mfshdd.cfg 分配给MFS使用的磁盘空间配置文件路径
  15. # HDD_TEST_FREQ = 10
  16. # deprecated, to be removed in MooseFS 1.7
  17. # LOCK_FILE = /var/run/mfs/mfschunkserver.lock
  18. BACK_LOGS = 24
  19. # CSSERV_TIMEOUT = 5

BACK_LOGS说明:

通常元数据有两部分的数据:
3.1)主要元数据文件metadata.mfs,当mfsmaster运行的时候会被命名为 metadata.mfs.back
3.2)元数据改变日志changelog.*.mfs,存储了过去的N小时的文件改变(N的数值是由BACK_LOGS参数设置的)。
主要的元数据文件需要定期备份,备份的频率取决于取决于多少小时changelogs储存。元数据changelogs应该实时的自动复制。自从MooseFS 1.6.5,这两项任务是由mfsmetalogger守护进程做的。
#vi /etc/mfshdd.cfg
/data 指定客户端挂载所使用的共享空间为/data
注:建议在chunk server 上划分单独的空间,最好是一个单独的硬盘或者一个raid卷,且单个存储不小于2G(因为chunk初始化磁盘时需占用一定空间)。

4) 修改/etc/hosts 绑定主机名mfsmaster与ip:192.168.40.140

#vi /etc/hosts
192.168.40.140 fsmaster
5) 启动服务并设开机启动
#vi /etc/rc.local
/usr/sbin/mfschunkserver start 启动chunkserver
working directory: /data
lockfile created and locked
initializing mfschunkserver modules ...
scanning folder /data/ ...
/data/: 0 chunks found
scanning complete
main server module: listen on *:9422
no charts data file - initializing empty charts
mfschunkserver daemon initialized properly
7. Mfs-client客户端安装配置
1) #useradd –s /sbin/nologin mfs 创建用户mfs
2) Fuse的安装: mfs-client是通过fuse内核接口挂载到master-server上的。
#./configure –prefix=/usr &&make&&make install
3) 编译安装客户端mfs
#./configure --prefix=/usr –sysconfdir=/etc –localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs –disable-mfsmaster –disable-mfschunkserver –enable-mfsmount
# make && make install
取消安装master和chunk模块,加载mount动态模块并保证fuse模块的安装并被加入到内核:
#modprobe fuse
4) 修改绑定主机名mfsmaster与ip:192.168.40.140
#vi /etc/hosts
192.168.40.140 mfsmaster
5) 创建本地挂载点/mnt 并属主组mfs读写权限 并将其挂载到master上(有更改)
#mkdir /mnt/mfs
#mkdir /mnt/mfsmeta
#/usr/bin/mfsmount /mnt –H 192.168.40.140
#/usr/bin /mfsmount /mfsmeta –H 192.168.40.140 –o mfsmeta 挂接垃圾文件目录
#ls /mnt/mfsmeta
Reserved trash
#mount 查看
mfs#192.168.40.140:9421 on /mnt type fuse (rw,nosuid,nodev,allow_other,default_permissions)
mfsmeta#192.168.40.140:9421 on /mfsmeta type fuse (rw,nosuid,nodev,allow_other,default_permissions)
加入到/etc/rc.local 下开机自动挂接MFS
#/usr/bin/mfsmount /mnt –H 192.168.40.140
#/usr/bin /mfsmount /mfsmeta –H 192.168.40.140 –o mfsmeta
6) # df –h检查分区情况
mfs#192.168.40.185:9421 101G 1.9G 99G 2% /mnt
7) 副本设置及mfsmount工具使用:
Mfssetgoal 2 /mnt 设置副本数为2
三、后期维护
  1.可以不停服务进行在线扩容,在原来基础上增加一个chunk时,数据会自动同步到新增的chunk server上以达到数据均衡。master会自动调度,数据会在chunk间重新分配。
  2.master的主备切换
  master的主备切换分为两个步骤:一是由metalogger恢复master;二是chunk和client端进行响应的处理。
  2.1 metalogger恢复master
  1)metalogger定期从master下载metadata文件,并实时记录changelog,但是这个“实时”究竟有多么的实时,还得再看看。这个下载metadata和记录changelog的工作有点类似sfrd客户端每天下载基准和导入增量。
  2)master挂掉之后,使用metarestore命令将metalogger中的基准和增量变成master需要的metadata,然后启动mfsmaster。master和metalogger可以部署在同一台机器,也可以部署在不同机器。
  3)metalogger恢复master时使用的命令:
    cd /home/XXXX/local/mfs/sbin
    ./metarestore –a
    ./mfsmaster
  4)说明:
metalogger服务器中需要备份master的两个配置文件,由于配置文件不是经常变化,因此通过定时脚本进行文件同步即可。
当metalogger没有下载metadata之前,不能使用期接管master。此时metarestore程序会运行失败。
metarestore程序是根据metalogger中定期下载的metadata和changelog来恢复master挂掉时刻master所记录的整个mfs的信息。

2.2 chunk和client相应的修改
1)对于client,需要umount掉mfs分区后,重启mfsmount新的master的IP地址。如果master挂掉之后,经过(1)重启服务器(2)使用同一台机器中metalogger恢复master数据(3)启动master;则client端不需要重新手动进行mfsmount,因为mfsmount会自动重试。
2)对于chunk,可以逐个chunk修改配置文件中master的IP地址,然后进行重启。如果master挂掉之后,经过(1)重启服务器(2)使用同一台机器中metalogger恢复master数据(3)启动master;则chunk不需要重启,master会在自动检测chunk的时候检测到它.

2.3 metalogger的注意事项
1)部署metalogger的服务器的open files数目必须大于或者等于5000,
2)metalogger在启动时不会下载metadata,而是等到第一个下载周期的下载时间点时再去下载,metalogger下载metadata的时间点是每小时的10分30秒,时间间隔是1小时的整数倍。
3) metalogger不是在启动的时候就取下载metadata,而是必须等到下载时间点(2中所述)才会去下载。也就是说,metalogger为确保正确性,要在启动后最少一个小时以内master和metalogger都要保持良好的状态。

四、测试分析

1. Chunk server的测试
测试环境:
Chunk01 192.168.40.183
Chunk02 192.168.40.184
Mfsmaster 192.168.40.140
Mfsclient 192.168.40.144
Chunk01分区:
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 13G 1.9G 9.7G 17% /
/dev/xvdb1 59G 206M 55G 1% /data
tmpfs 129M 0 129M 0% /dev/shm
/dev/xvdc1 122M 5.8M 110M 6% /mnt/chunk1
/dev/xvdd1 122M 5.8M 110M 6% /mnt/chunk2
/dev/xvde1 122M 5.8M 110M 6% /mnt/chunk3
Chunk02分区:
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 8.7G 1.9G 6.5G 23% /
/dev/xvdb1 49G 859M 46G 2% /data
tmpfs 129M 0 129M 0% /dev/shm
/dev/xvdc1 494M 11M 458M 3% /mnt/chunks1
/dev/xvdd1 494M 11M 458M 3% /mnt/chunks2
Mfsclient:
文件系统 容量 已用可用已用% 挂载点
/dev/mapper/VolGroup00-LogVol00
    19G 8.0G 9.4G 46% /
/dev/sda1 99M 14M 81M 15% /boot
mfs#192.168.40.140:9421
    47G 1.5G 45G 4% /mnt
注:副本数为mfsrsetgoal 2 /mnt
1)上传数据至mfs-client端,chunk01,02分别占用空间6%,3%。
2)取消chunk02上的两挂载chunks1,2。 前台分别重新设置两台chunk的mfshdd空间挂载到/data(需mfs用户可读写权限)上。
注:重新挂载存储分区后,需重启chunk服务,重新初始化。
结果:数据重新分配,chunk01 ,02各使用率7.7%,6%
现数据挂载及使用情况:
Chunk01
Filesystem Size Used Avail Use% Mounted on
/dev/xvdb1 49G 1008M 45G 3% /data
Chunk02
Filesystem Size Used Avail Use% Mounted on
/dev/xvdb1 59G 995M 55G 2% /data
3)关闭mfs服务器,使用 /usr/local /sbin/mfsmaster –s 这种方式,如果直接使用kill杀死进程,将导致下次启动时出现找不到相关文件,而不能正常启动服务器。可以通过 mfsmetastore -a 来恢复(进程启不来,其实是配置文件放PID的目录会被删掉,重建这个目录,然后赋予权限就可以了)。
4)删除mfs-client所有数据,默认删除文件后的空间回收时间为1天(86400秒),可能存在一种可能性是垃圾还没回收完,存储容量已占用很大比例。
方案一:建议设置文件删除回收空间时间为600s,监控存储容量。经其他mfs测试人员测试,把空间回收时间设置300s,完全可以回收容量。
方案二:手动周期性删除metamfs里的trash目录下的文件。这个需要单独安装一个MFSMETA文件系统。特别是它包含目录 / trash (包含任然可以被还原的被删除文件的信息)和 / trash/undel (用于获取文件)。只有管理员有权限访问MFSMETA(用户的uid 0,通常是root)。

mfsrsettrashtime –r 600 /mnt -r对整个目录树进行操作
现测试暂改120秒。
删除后数据挂载及使用情况:
Chunk01
Filesystem Size Used Avail Use% Mounted on
/dev/xvdb1 49G 220M 46G 1% /data
Chunk02
Filesystem Size Used Avail Use% Mounted on
/dev/xvdb1 59G 207M 55G 1% /data
mfsclient
mfs#192.168.40.140:9421 101G 0 101G 0% /mnt
注:/data 中所占用的数据是本地原有数据。
5)重新上传数据至client
787M /mnt/ 
查看chunk服务器:
Chunk01
Filesystem   Size Used  Avail  Use%  Mounted on
/dev/xvdb1 49G  1008M 45G 3%  /data
  Chunk02
Filesystem Size Used  Avail  Use%  Mounted on
/dev/xvdb1 59G 995M 55G 2%   /data
 mfsclient
mfs#192.168.40.140:9421 101G 1.6G 99G 2% /mnt
根据以上数据存储分析正确.
Chunk01,02上传数据后总共2003M -原先总共占用427M=数据占用1576M。
上传的数据大小787M*副本数为2=总存储容量应是1574M。
6)停止chunk02-server,向client端上传数据1.8M  www_error_log
   Master查看系统日志/var/log/message:只有chunk01日志存储记录,查看空间,均存储到chunk01上。重复上传,删除,下载操作,观察chunk01存储变化,查看master机上/var/lib/mfs/changlog记录存储变化日志。
注:由于测试时单个文件上传,读取不会超过10M,速度很快。Down掉一台chunk02,另外一台正常提供存储和读取操作。
7)恢复chunk02-server上服务,重新扫描加载磁盘hdd space manager: scanning complete
再上传数据至client端,查看日志和chunk空间大小,chunk02已启用存储。
2. Master的主备切换
mfsmaster的故障恢复在1.6版本后可以由mfsmetalogger产生的日志文件 changelog_ml.*.mfs和metadata.mfs.back由命令mfsmetarestore恢复,恢复后MFS文件系统信息内容是完全一样的。
2.1 由metalogger恢复master
1)启动metalogger服务后,metalogger定期从master下载metadata文件,并实时记录changlog,可在配置文件参数中设置每小时同步一次。
META_DOWNLOAD_FREQ = 1
2)备份master的两个配置文件mfsmaster.cfg,mfsexports.cfg至metalogger, 因配置文件基本属于一次性更改,暂测试先scp 192.168.40.140:/etc/mfsmaster.cfg /etc/mfs/过来,后期rsync通过定时脚本进行配置文件的同步。
3) 将master:192.168.40.140 down掉,使用metalogger server:192.168.40.185 #mfsmetarestore –a 或
#mfsmetarestore –a -d /var/lib/mfs 指定master数据存储的路径
将metalogger中的基准和增量变成master需要的metadata
metarestore程序是根据metalogger中定期下载的metadata和changelog来恢复master挂掉时刻master所记录的整个mfs的信息。
#/usr/sbin/mfsmaster start 启动master服务。
2.2 chunk和client端进行响应的处理。
1)对于client,需要umount掉mfs分区后,重启mfsmount新的master的IP地址。
2) 修改两chunk server配置文件中指定的master ip,重启chunk服务.
3. 测试问题小记
1)磁盘规划问题:最好一个盘作一个挂载点,这样坏一个盘,只用转移那一个盘的数据。分布存储在多个盘上,可以提高读写速度。
2)暂不支持master主备的热切换问题,后期测试成熟打算改用corosync+pacemaker+mfsmaster+metalog方案实现。
3)如果文件数量和chunk块较多的话,建议增大chunk_loop_time的时间,可以减少master的负载。
4)Currently MooseFS imposes a maximum file size limit of 2 TiB, However we are considering removing this limitation in the near future, which is currently 16EiB
单个存储空间最好大于2G,我试验的512M,两chunk,怎么着环境测试都不对,后来在官网上的这句话彻底醒悟。
5)我chunk上挂的/data本来就有数据,之前做SVN试验留下来的,忘删了,我核对client端和两chunk上的数据大小怎么就不对,无论是一副本还是两副本。后来查块文件从00-FF,看到后面的多出了几个SVN的目录,浪费时间折腾。
6)Every chunkserver sends its own disk usage increased by 256MB for each used partition/hdd, and a sum of these master sends to the client as total disk usage. If you have 3 chunkservers with 7 hdd each, your disk usage will be increased by 3*7*256MB (about 5GB). In practice, this is not usually a concern for example when you have 150TB of HDD space. ?
There is one other thing. If you use disks exclusively for MooseFS on chunkservers df will show correct disk usage, but if you have other data on your MooseFS disks df will count your own files too. ?
If you want to see usage of your MooseFS files use 'mfsdirinfo' command.chunk
初始化磁盘要占用2*2*256M的空间,这就是为什么监控上看到的数据会要多2G多原因。一直以为chunk或master调度出了问题,找不出原因。
1) mfs把文件系统的结构缓存到master的内存中,文件越多,master的内存消耗越大,8g对应2500kw的文件数,2亿文件就得64GB内存.
2) Chunk上的每个挂载点存储目录00-FF,共256个。每单个文件最大上限64M,超过64M目录下会循环生成下一个文件。
五、 常用维护
1. 挂载文件系统
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卷的剩余空间检查df:
# df -h | grep mfs

重要的是每一个文件可以被储存多个副本,在这种情况下,每一个文件所占用的空间要比其文件本身大多了。此外,被删除且在有效期内(trashtime)的文件都放在一个“垃圾箱”,所以他们也占用的空间,其大小也依赖文件的份数。
2. 查看文件保存状态.
goal指文件被拷贝的份数,可以通过mfsgetgoal命令查看,也可以通过mfssetgoal来改变设置。
# /usr/bin/mfsgetgoal /mnt
/mnt: 2
#/usr/bin/mfssetgoal 3 /mnt
/mnt: 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
实际的拷贝份数可以通过mfscheckfile 和 mfsfileinfo 命令查看:
#mfscheckfile /mnt/mfs-test/test1
/mnt/mfs-test/test1:
3 copies: 1 chunks
3. 设置删除文件回收时间
#/usr/bin/mfsgettrashtime –r 600 /mnt 600s回收时间,也可针对单个文件设置,递归选项-r目录树,默认一天86400s。
4. 备份meta状态:
master: /var/lib/mfs下的metadata.mfs文件是当前的metadata,默认每小时都会更新,旧文件将会添加.back后缀备份即可,并同时增加changelog.*.log。当然,推荐使用moosefs metalogger来作备份恢复。
5. 安全的停止MooseFS集群:
在所有的客户端卸载MooseFS 文件系统(用umount命令或者是其它等效的命令)
用mfschunkserver –s命令停止chunkserver进程
用mfsmetalogger –s命令停止metalogger进程
用mfsmaster –s命令停止master进程
数据恢复:
master: mfsmetarestore –a 自动恢复模式
master: mfsmetarestore -m metadata.mfs.back -o metadata.mfs changelog.*.mfs 非自动指定文件恢复。拷贝最后的metadata文件,合并changlog日志。
6. 文件信息查看
# /usr/bin/mfsfileinfo /mnt/pscs2.rar
/mnt/pscs2.rar:
chunk 0: 0000000000000027_00000002 / (id:39 ver:2)
copy 1: 192.168.40.183:9422
copy 2: 192.168.40.184:9422
7. 查看目录信息
#/usr/bin/mfsdirinfo /mnt
/mnt:
inodes: 12
directories: 1
files: 11
chunks: 24
length: 1019325511
size: 1019863040
realsize: 2039726080
8. 维护工具列表:
mfsappendchunks mfsfileinfo mfsgettrashtime mfsrgettrashtime
mfssetgoal mfscheckfile mfsfilerepair mfsmakesnapshot
mfsrsetgoal mfssettrashtime mfsdeleattr mfsgeteattr
mfsmount mfsrsettrashtime mfssnapshot mfsdirinfo
mfsgetgoal mfsrgetgoal mfsseteattr mfstools
原创粉丝点击