MFS常用操作


MFS客户端安装完毕后,会在mfs/bin 下生成很多命令时用户需要的,如核心命令
mfstools


/usr/local/mfs/bin/:
mfsappendchunks  mfsfileinfo    mfsgettrashtime  mfsrgettrashtime  mfssetgoal
mfscheckfile     mfsfilerepair  mfsmakesnapshot  mfsrsetgoal       mfssettrashtime
mfsdeleattr      mfsgeteattr    mfsmount         mfsrsettrashtime  mfssnapshot
mfsdirinfo       mfsgetgoal     mfsrgetgoal      mfsseteattr       mfstools


可以把以上命令cp 到/bin下,或者 将/usr/local/mfs/bin/ 添加到用户的环境变量中去!
[root@12 ~]# tail -6 .bash_profile

PATH=$PATH:$HOME/bin
export PATH
unset USERNAME
MFS_COMM=/usr/local/mfs/bin
PATH=$MFS_COMM:$PATH
----------------------------------------------------------------------
mfsgetgoal mfssetgoal 命令
目标(goal)是指文件被复制的份数,设定了复制的份数就可以通过mfsgetgoal来查看
也可以通过mfssetgoal来改变设定
例子:
[root@12 /]# mfsgetgoal /mnt/mfs/file1
/mnt/mfs/file1: 1
[root@12 /]# mfssetgoal 3 /mnt/mfs/file1
/mnt/mfs/file1: 3
[root@12 /]# mfsgetgoal /mnt/mfs/file1
/mnt/mfs/file1: 3
------------------------------
利用mfsgetgoal mfssetgoal -r可以对整个树形目录进行递归操作
例子:
[root@12 mfs]# mfsgetgoal -r /mnt/mfs/
/mnt/mfs/:
 files with goal        3 :                    1
 directories with goal  3 :                    2
[root@12 mfs]# mfssetgoal -r 6 /mnt/mfs
/mnt/mfs:
 inodes with goal changed:                         3
 inodes with goal not changed:                     0
 inodes with permission denied:                    0
[root@12 mfs]# mfsgetgoal -r /mnt/mfs/
/mnt/mfs/:
 files with goal        6 :                    1
 directories with goal  6 :                    2
[root@12 mfs]# mfsgetgoal mfssetgoal

-------------------------------------------------------------------------

mfscheckfile mfsfileinfo 命令
实际的副本份数可以通过mfscheckfile和mfsfileinfo命令来证实
如:
为了演示效果,在加一台chunkserver
命令如下,再次就比细说了,
 tar -xf mfs-1.6.11.tar.gz
  cd mfs-1.6.11
useradd mfs -s /sbin/nologin
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs
make ; make install
 fdisk /dev/sdb
mkfs.ext3 /dev/sdb1
partprobe
mkdir /data
mount /dev/sdb1 /data/
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg
vim mfschunkserver.cfg
 vim mfshdd.cfg
service iptables stop
/usr/local/mfs/sbin/mfschunkserver start
/usr/local/mfs/sbin/mfschunkserver start
chown  mfs:mfs /data/
/usr/local/mfs/sbin/mfschunkserver start


[root@12 mfs]# mfscheckfile /mnt/mfs/file1
/mnt/mfs/file1:
2 copies: 1 chunks
[root@12 mfs]# mfsfileinfo /mnt/mfs/file1
/mnt/mfs/file1:
    chunk 0: 000000000000010B_00000001 / (id:267 ver:1)
        copy 1: 192.168.3.11:9422
        copy 2: 192.168.3.13:9422


注意如果是一个零长度或者说不包含数据的文件,虽然没有被设置成非零目标,但是查询后返回的是一个空结果
例如:
[root@12 mfs]# mfsfileinfo emputy_file
emputy_file:
[root@12 mfs]# echo testfile > emputy_file
[root@12 mfs]# mfsfileinfo emputy_file
emputy_file:
    chunk 0: 000000000000010C_00000001 / (id:268 ver:1)
        copy 1: 192.168.3.11:9422
        copy 2: 192.168.3.13:9422
文件清空后副本依然存在



对于一个目录设定“目标”,此目录下新创建的文件盒子目录均会继承此目录的设定,但不会改变已经存在的文件及目录的副本份数
如:
[root@12 mfs]# mkdir zhoutao
[root@12 mfs]# cd zhoutao
[root@12 zhoutao]# touch 1
[root@12 zhoutao]# echo zhoutao1 > 1
[root@12 zhoutao]# mfsfileinfo 1
1:
    chunk 0: 0000000000000112_00000001 / (id:274 ver:1)
        copy 1: 192.168.3.11:9422
[root@12 zhoutao]# cd ..
[root@12 mfs]# mfssetgoal 2 zhoutao/
zhoutao/: 2
[root@12 mfs]# cd zhoutao/
[root@12 zhoutao]# touch 2
[root@12 zhoutao]# echo zhoutao2 > 2
[root@12 zhoutao]# mfsfileinfo 2
2:
    chunk 0: 0000000000000113_00000001 / (id:275 ver:1)
        copy 1: 192.168.3.11:9422
        copy 2: 192.168.3.13:9422


mfsdirinfo可以显示整个目录树的内容摘要,
如:
[root@12 mfs]# mfsdirinfo zhoutao/
zhoutao/:
 inodes:                          3
  directories:                    1
  files:                          2
 chunks:                          2
 length:                         18 #表示文件大小的综合
 size:                       141312 #表示快长度综合
 realsize:                   211968 #表示磁盘空间的使用,包括所有副本


 为垃圾箱设定隔离时间


 删除文件存放在垃圾箱 (trash bin )的时间就是隔离时间(quarantine time ) ,这个时间可以用mfsgettrashtime命令来验证
 用mfsettrashtime命令来设置
 如:
[root@12 mfs]# mfsgettrashtime zhoutao/
zhoutao/: 86400
[root@12 mfs]# mfssettrashtime 0 zhoutao/1  #数字0意味着一个文件被删除后,就是被彻底删除的
zhoutao/1: 0
[root@12 mfs]# mfssettrashtime 60 zhoutao/1
zhoutao/1: 60
[root@12 mfs]# mfssettrashtime 0 zhoutao/2
zhoutao/2: 0
[root@12 mfs]#
[root@12 mfs]# mfssettrashtime -r 1209600 zhoutao/ (-r 可以对整个目录递归处理)
zhoutao/:
 inodes with trashtime changed:                        3
 inodes with trashtime not changed:                    0
 inodes with permission denied:                        0
[root@12 mfs]# mfsgettrashtime zhoutao/2
zhoutao/2: 1209600 #之前做的设置被覆盖了
[root@12 mfs]# mfsgettrashtime zhoutao/1
zhoutao/1: 1209600 #同理如上,设置被zhoutao这个目录覆盖了
[root@12 mfs]#

被删除的文件可以再垃圾箱中找到
例子:
[root@12 mfs]# mfssettrashtime 999999 zhoutao/1
zhoutao/1: 999999
[root@12 mfs]# mfsgettrashtime  zhoutao/1
zhoutao/1: 999999
[root@12 mfs]# rm -rf zhoutao/1
[root@12 mfs]# ls zhoutao/1
ls: zhoutao/1: No such file or directory
[root@12 mfs]# ls -l /mnt/mfsmeta/trash/
00000009|test|1     0000000C|dir|1      undel/             
0000000A|test|2     0000000E|zhoutao|1


被删除的文件在使用全路径文件名,一定要单引号引起来,例如:
[root@12 mfs]# cat '/mnt/mfsmeta/trash/0000000E|zhoutao|1'
zhoutao/1

文件的恢复
[root@12 mfs]# mv  '/mnt/mfsmeta/trash/0000000E|zhoutao|1' /mnt/mfsmeta/trash/undel/
[root@12 mfs]# ls zhoutao/
1  2



快照
MFS系统的另外一个特征是利用命令mfsmakesnapshot给文件或者目录树做快照
如:
[root@12 mfs]# mfsmakesnapshot zhoutao/1 /mnt/mfs/snapzhoutao1
[root@12 mfs]# mfsmakesnapshot zhoutao /mnt/mfs/snapzhoutao
[root@12 mfs]# ls
1  emputy_file  file1  snapzhoutao  snapzhoutao1  zhoutao

注意:
1:对于一个MFS系统下的文件做快照,查看两个文件的快信息,他们是同一块,如果把源文件删除,删除后的原文件,快照文件依然存在,并且可以访问,
使用mfsfileinfo 查看,发现任然是原来的快,
2:对于一个文件做快照后,查看两个文件的快信息,发现时用一个快,原文件修改后,发现原文件使用的快信息变了,而快照文件仍然使用原来的快,且保持文件内容不变