Web界面监控MFS状态

mfscgiserv 是用python写的一个web服务器,监听端口是9425,必须在master(管理服务器上)上启动

常用的参数如下:

参数 作用
-h help
-H 绑定的IP,默认为0.0.0.0
-P 绑定端口号,默认是9425
-R mfscgi的root路径,默认是/usr/local/mfs/share/mfscgi
-f 运行HTTP服务器,-f 表示在前台运行,-v表示请求的日志发往标准的错误设备

一般情况下不需要带任何参数启动即可。

[root@localhost seim]# mfscgiserv
lockfile created and locked
starting simple cgi server (host: any , port: 9425 , rootpath: /usr/local/mfs/share/mfscgi)

然后在浏览器输入:http://masfterserver ip:9425就可以看到监控图了。

监控图有8个部分组成:

  1. info

    这个部分显示了MFS的基本信息。
  2. Servers

    列出现有的ChunkServer。
  3. Disks

    列出每一台ChunkServer的磁盘目录以及使用量
  4. Exports

    列出共享的目录,既可以被挂载的目录
  5. mounts

    显示被挂载的情况。
  6. Openrations

    显示正在执行的操作。
  7. Master Charts

    显示Master server的操作情况,包括读取,写入,创建目录,删除目录等消息。
  8. Server Charts

    显示ChunkServer的操作情况,数据传输率以及系统状态等信息。

客户端挂载文件系统

主要命令如下:

mfsmount -H [master] [-p port] [-S path] mountpoint

参数 作用
-H 管理服务器的IP地址
-P port 管理服务器端口,按照mfsmaster.cfg配置文件中的变量MATOCU_LISTEN_PORT的值填写,如果是默认端口则不需要指出。
-S path 指出挂载MFS目录的子目录,默认是/,即挂载整个MFS目录
mountpoint 指挂载到本地的哪个目录下

在启动管理服务器进程时,用了一个“-m” 或“-o mfsmaster”的选项,这样可以挂载一个辅助的文件系统mfsmeta,辅助文件系统可以在如下两个方面恢复丢失的数据:

  1. MFS卷上误删除了文件,而此文件又没有过垃圾文件存放期。
  2. 为了释放磁盘空间而删除或者移动的文件,当需要恢复这些文件时,文件又没有过垃圾文件的存放期。

要使用MFS辅助文件系统,可以执行如下指令:

mfsmount -m /mnt/mfsclient  -H mfsmaster

需要注意的是,如果决定了挂载mfsmeta,那么一定要在mfsmaster的mfsexport.cfg文件中添加下面这条记录:

*           .                   rw

原文件有此条目,只要将其前面的#去掉即可。

挂载文件系统就可以执行所所有标准的文件操作了。如创建,删除,复制,重命名文件等。MFS由于是一个网络文件系统,所以操作进度比本地的偏慢。

需要注意的是,每个文件都可以存储为多个副本,在这种情况下,每一个文件所占用的空间要比其他文件本身大的多,此外,被删除且在有效期内的文件都放在一个“垃圾箱”中,所以他们也占用的空间,其大小也依赖文件的分钟。。为防止删除被其他进程打开的文件,数据将一直被存储,直到文件被关闭。

MFS日常操作(都在client端下操作)

1. mfsgetgoal和mfssetgoal命令

目标(goal)是指文件被复制的份数,设定了复制的份数就可以通过mfsgetgoal命令来证实

[root@localhost mfs]# /usr/local/mfs/bin/mfsgetgoal /mnt/mfsclient/    # 这里是get
/mnt/mfsclient/: 2
[root@localhost mfs]# /usr/local/mfs/bin/mfssetgoal 3 /mnt/mfsclient/ # 这里是set
/mnt/mfsclient/: goal: 3
[root@localhost mfs]# /usr/local/mfs/bin/mfssetgoal -r 3 /mnt/mfsclient/ # -r 是递归,对整个树形目录进行递归操作
/mnt/mfsclient/:
inodes with goal changed: 0
inodes with goal not changed: 1
inodes with permission denied: 0
[root@localhost mfs]# /usr/local/mfs/bin/mfsgetgoal -r /mnt/mfsclient/
/mnt/mfsclient/:
directories with goal 3 : 1

需要注意的是,如果你的Chunkserver只有一台服务器,那么就设置为1即可,别设置为3,4或者其他超过1的,不然你写如一个东西,会卡死的。。。。。。。

2. mfscheckfile与mfsfileinfo命令

实际副本数量可以通过mfscheckfile和mfsfileinfo命令证实,如下:

[root@localhost mfs]# touch /mnt/mfsclient/test1          # 新添一个空文件
[root@localhost mfs]# bin/mfscheckfile /mnt/mfsclient/test1 # 虽然有文件(虽然没有设置为非零目标,the noo-zero goal),但是是一个空文件,所以mfscheckfile是为空的结果
/mnt/mfsclient/test1:
[root@localhost mfs]# bin/mfsfileinfo /mnt/mfsclient/test1
/mnt/mfsclient/test1:
no chunks - empty file
[root@localhost mfs]# echo "asdsasfasdfasdfasdf" >/mnt/mfsclient/test1
[root@localhost mfs]# bin/mfscheckfile /mnt/mfsclient/test1
/mnt/mfsclient/test1:
chunks with 1 copy: 1
[root@localhost mfs]# bin/mfsfileinfo /mnt/mfsclient/test1
/mnt/mfsclient/test1:
chunk 0: 0000000000000029_00000001 / (id:41 ver:1)
copy 1: 172.16.22.142:9422 (status:VALID) # 设置上我们刚才通过mfssetgoal为3,理论上是复制3份副本,但是这里的chunkserver只有1台,所以copy也就为1了。

这里说说目录继承副本数量的问题:

  1. 如果改变一个已经存在的文件副本份数,那么文件的副本份数就会扩大或删除,这个过程会有延迟的。
  2. 对于一个目录设定“目标”,此目录下新创建的文件或子目录均会继承此目录的设定,但不会改变已经存在的文件以及目录副本数量。

3. mfsdirinfo

整个目录树的内容需要通过一个功能增强、等同于“du -s”的命令mfsdirinfo来显示。mfsdirinfo可以显示MFS的具体信息。

[root@localhost mfs]# bin/mfsdirinfo /mnt/mfsclient/
/mnt/mfsclient/:
inodes: 2
directories: 1
files: 1
chunks: 1
length: 20
size: 73728
realsize: 221184
[root@localhost mfs]# bin/mfsdirinfo /mnt/mfsclient/test1
/mnt/mfsclient/test1:
inodes: 1
directories: 0
files: 1
chunks: 1
length: 20
size: 73728
realsize: 221184
  • length 表示文件大小的总和
  • size 表示块长度总和
  • realsize 表示磁盘空间的使用,包括所有的副本

4. 为垃圾箱设定隔离时间

删除的文件存放在“垃圾箱(trash bin)”的时间就是隔离时间(quarantine time),这个时间可以用mfsgettrashtime 来验证,也可以用mfssettrashtime来设置。设置的时间是按照小时计算,设置的单位是秒,不满一小时就按一小时计算,如下所示:

[root@localhost mfs]# bin/mfssettrashtime   5000 /mnt/mfsclient/test1    #5000秒大于1小时,不满2小时,按照2小时计算
/mnt/mfsclient/test1: 5000
[root@localhost mfs]# bin/mfsgettrashtime /mnt/mfsclient/test1
/mnt/mfsclient/test1: 7200
[root@localhost mfs]# bin/mfssettrashtime 8000 /mnt/mfsclient/test1 #8000秒大于2小时,不满3小时,按照3小时计算
/mnt/mfsclient/test1: 8000
[root@localhost mfs]# bin/mfsgettrashtime /mnt/mfsclient/test1
/mnt/mfsclient/test1: 10800

mfssettrashtime -r是对目录进行递归赋值的。为一个目录设定存放时间后,在此目录下新创建的文件和目录就可以继承这个设置了。数字0意味着一个文件被删除后,会立即删除,不可能再恢复。

删除的文件通过一个单独安装的mfsmeta辅助文件系统来恢复。这个文件系统包含了目录trash(含有仍然可以被还原的删除文件的信息)和目录trash/undel(用于获取文件)。只有管理员权限访问mfsmeta辅助文件系统(通常是root)。

下面来模拟下文件被删除后,如何恢复的:

Notice

在做这一步的时候,请先确认使用mfsmount -m参数挂载了mfsmeta。如

mfsmount -m /mnt/mfsmeta/ -H mfsmaster
  1. 先找到被删除的文件
[root@localhost mfs]# echo "asdfasdfnoijoiujro2er0" >/mnt/mfsclient/haha1    # 创建一个文件
[root@localhost mfs]# bin/mfsgettrashtime /mnt/mfsclient/haha1 # 确认回收站存放的时间为2小时
/mnt/mfsclient/haha1: 7200
[root@localhost mfs]# rm /mnt/mfsclient/haha1 #删除文件
rm: remove regular file `/mnt/mfsclient/haha1'? y
[root@localhost mfs]# find /mnt/mfsmeta/trash/ -name "*haha*"     #在回收站里面找到被删除的文件
/mnt/mfsmeta/trash/006/00000006|haha1

被删除的文件名在垃圾箱里面其实还是可以找到的,文件名是由一个8位16进制数的i-node和被删的文件名组成。在文件名和i-node之间不可以用"/",而是以“|” 替代。如果一个文件名的长度超过操作系统的限制(通常是255字符),那么超出部分将被删除。从挂载点起全部路径的文件名被删除的文件仍然可以被读写。

需要注意的是,被删除的文件在使用文件名(注意文件名是两部分),一定要用单引号引起来。如下所示:

[root@localhost mfs]# cat '/mnt/mfsmeta/trash/006/00000006|haha1'
haha1
  1. 恢复文件

    移动这个文件到文件所在目录下的undel下面,将会使原始的文件恢复到正确的MFS文件系统原来的路径下。如下所示:
[root@localhost mfs]# cd /mnt/mfsmeta/trash/006/        # 切换到被删文件下面
[root@localhost 006]# ls
00000006|haha1 undel
[root@localhost 006]# pwd
/mnt/mfsmeta/trash/006
[root@localhost 006]# mv 00000006\|haha1 ./undel/
[root@localhost 006]# ls /mnt/mfsclient/
haha1 test3
[root@localhost 006]# cat /mnt/mfsclient/haha1
asdfasdfnoijoiujro2er0

在恢复文件的时候,原来被删文件下面的目录下,不能有同名文件,不然恢复不成功。

从垃圾箱中删除文件的结构是释放之前它占用的空间(删除有延迟,因为数据是异步删除的)。在垃圾箱中删除文件后,就不能够再恢复了。

可以通过mfssetgoal命令来修改文件的副本数,也可以通过mfssettrashtime工具来改变文件存储在垃圾箱中的时间。

5. 快照功能

MFS系统可以利用mfsmakesnapshot工具给文件或者目录做快照(snapshot),如下所示:

[root@localhost ~]# /usr/local/mfs/bin/mfsmakesnapshot destination-file source-file

其中source是源文件路径或者目录,destination是快照文件路径或者目录,需要注意的是,destination 路径必须在MFS文件系统下面,即source与destination路径都必须在MFS体系下,不能将快照放到MFS文件系统之外的其他文件系统下。

mfsmakesnapshot是一次执行中整合了一个或者一组文件的副本,而且对这些文件的源文件进行任何修改都不会影响源文件的快照,就是说任何对源文件的操作,如写入操作,将会不修改副本。

mfsmakesnapshot可以实现这个快照功能,当有多个源文件时,他们的快照会被加入到同一个目标文件中,通过对比快照的测试,可以发现快照的本质:

  1. 一个MFS系统下的文件做快照后,查看两个文件的块信息,他们是同一个块。接着,把原文件删除,删除源文件后(最初会留在回收站上,但过一段时间后回收站的文件也删除了),快照文件仍然存储,并且可以访问。使用mfsfileinfo查看,发现还是原来的块。
  2. 对一个文件做快照后,查看两个文件的块信息,发现是同一个块。把原文件修改后,发现原文件的使用块信息变了,即使用了一个新块。而快照文件仍然使用原来的块,保持文件内容不变。

MooseFs-分布式文件系统系列(三)之MFSclient端的使用的更多相关文章

  1. Hadoop概念学习系列之分布式文件系统(三十)

    ===============> 数据量越来越多,在一个操作系统管辖的范围存下不了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就 ...

  2. 在CentOS上安装部署MooseFS分布式文件系统

    参考资料: http://www.moosefs.org/tl_files/manpageszip/moosefs-step-by-step-tutorial-cn-v.1.1.pdf 环境介绍:OS ...

  3. CentOS7搭建FastDFS V5.11分布式文件系统-第三篇

    1.测试 前面两篇博文已对FastDFS的安装和配置,做了比较详细的讲解.FastDFS的基础模块都搭好了,现在开始测试下载. 1.1 配置客户端 同样的,需要修改客户端的配置文件: /etc/fdf ...

  4. CentOS7搭建FastDFS V5.11分布式文件系统(三)

    1.测试 前面两篇博文已对FastDFS的安装和配置,做了比较详细的讲解.FastDFS的基础模块都搭好了,现在开始测试下载. 1.1 配置客户端 同样的,需要修改客户端的配置文件: /etc/fdf ...

  5. MooseFS分布式文件系统介绍及安装教程详解

    MFS系统由4个部分构成:master.metalogger.chunkserver.client. 1.Master —— mfs的大脑,记录着管理信息,比如:文件大小,存储的位置,份数等,和inn ...

  6. 分布式文件系统MFS(moosefs)实现存储共享(第二版)

    分布式文件系统MFS(moosefs)实现存储共享(第二版) 作者:田逸(sery@163.com) 由于用户数量的不断攀升,我对访问量大的应用实现了可扩展.高可靠的集群部署(即lvs+keepali ...

  7. 分布式文件系统MFS(moosefs)实现存储共享(一)

    分布式文件系统MFS(moosefs)实现存储共享 作者:田逸(sery@163.com) from:[url]http://net.it168.com/a2009/0403/270/00000027 ...

  8. 分布式文件系统MFS(moosefs)实现存储共享

    分布式文件系统MFS(moosefs)实现存储共享(第二版) 作者:田逸(sery@163.com) 由于用户数量的不断攀升,我对访问量大的应用实现了可扩展.高可靠的集群部署(即lvs+keepali ...

  9. Hadoop概念学习系列之常见的分布式文件系统(二十六)

    常见的分布式文件系统有,GFS.HDFS.Lustre .Ceph .GridFS .mogileFS.TFS.FastDFS等.各自适用于不同的领域.它们都不是系统级的分布式文件系统,而是应用级的分 ...

  10. (转)淘淘商城系列——分布式文件系统FastDFS

    http://blog.csdn.net/yerenyuan_pku/article/details/72801777 商品添加的实现,包括商品的类目选择,即商品属于哪个分类?还包括图片上传,对于图片 ...

随机推荐

  1. variable-precision SWAR算法介绍

    BITCOUNT命令是统计一个位数组中非0进制位的数量,数学上称作:”Hanmming Weight“ 目前效率最好的为variable-precision SWAR算法,可以常数时间内计算出多个字节 ...

  2. 我做PHP,但是我要批判下整天唱衰.NET的淫

    笔者每天都能看到月经贴-".NET已死"!!! 笔者之前一直在CSDN上面写博客,泡论坛,但是有约莫一年来着了发现CSDN上面的博客都没啥更新,CSDN首页推荐的一些文章也没啥新意 ...

  3. java机器学习工具包

    下面是25个Java机器学习的工具&&库列表: 1. Weka 是一个数据挖掘任务机器学习算法的集合.这些算法可以直接应用于数据集或者在你自己的Java代码中调用.Weka 包含 数据 ...

  4. Java Little Knowledge

    1.Constructor running order of Base class and Derived class This is Alibaba's audition problem. clas ...

  5. MVC 中的 ispostback

    总之呢就是在MVC中试下 ispostback那种效果, 环境就是:登录验证loinger, if (Request.HttpMethod == "POST"){} 没理解透彻 源 ...

  6. android开发------编写用户界面之线性布局(补充知识)

    在前面的文章中 http://www.cnblogs.com/ai-developers/p/android_linearlayout.html 我们看到了布局中有这样一个属性: layout_wei ...

  7. Java 构建器

    假如我们的一个实体类有很多的属性值,但是这些属性值又是可选的.如果我们遇到这样的是类,如何设计出方便的实体类呢? 通常解决办法一: 重叠构造器 public class User { private ...

  8. Easyui数据表格-地区列表及工具栏增删改

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  9. DEDE列表页直接获取下载链接

    我们得去设置软件频道的东西,先点击“核心”->"内容管理模型"中的软件模型进行编辑,将softlinks加入列表字段. 然后进入“系统”->"软件频道设置&q ...

  10. bzoj3224

    学习了下treap #include<iostream> #include<cstdio> #include<cstdlib> using namespace st ...