MooseFs-分布式文件系统系列(三)之MFSclient端的使用
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个部分组成:
- info
这个部分显示了MFS的基本信息。 - Servers
列出现有的ChunkServer。 - Disks
列出每一台ChunkServer的磁盘目录以及使用量 - Exports
列出共享的目录,既可以被挂载的目录 - mounts
显示被挂载的情况。 - Openrations
显示正在执行的操作。 - Master Charts
显示Master server的操作情况,包括读取,写入,创建目录,删除目录等消息。 - 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,辅助文件系统可以在如下两个方面恢复丢失的数据:
- MFS卷上误删除了文件,而此文件又没有过垃圾文件存放期。
- 为了释放磁盘空间而删除或者移动的文件,当需要恢复这些文件时,文件又没有过垃圾文件的存放期。
要使用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了。
这里说说目录继承副本数量的问题:
- 如果改变一个已经存在的文件副本份数,那么文件的副本份数就会扩大或删除,这个过程会有延迟的。
- 对于一个目录设定“目标”,此目录下新创建的文件或子目录均会继承此目录的设定,但不会改变已经存在的文件以及目录副本数量。
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
- 先找到被删除的文件
[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
- 恢复文件
移动这个文件到文件所在目录下的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可以实现这个快照功能,当有多个源文件时,他们的快照会被加入到同一个目标文件中,通过对比快照的测试,可以发现快照的本质:
- 一个MFS系统下的文件做快照后,查看两个文件的块信息,他们是同一个块。接着,把原文件删除,删除源文件后(最初会留在回收站上,但过一段时间后回收站的文件也删除了),快照文件仍然存储,并且可以访问。使用mfsfileinfo查看,发现还是原来的块。
- 对一个文件做快照后,查看两个文件的块信息,发现是同一个块。把原文件修改后,发现原文件的使用块信息变了,即使用了一个新块。而快照文件仍然使用原来的块,保持文件内容不变。
MooseFs-分布式文件系统系列(三)之MFSclient端的使用的更多相关文章
- Hadoop概念学习系列之分布式文件系统(三十)
===============> 数据量越来越多,在一个操作系统管辖的范围存下不了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就 ...
- 在CentOS上安装部署MooseFS分布式文件系统
参考资料: http://www.moosefs.org/tl_files/manpageszip/moosefs-step-by-step-tutorial-cn-v.1.1.pdf 环境介绍:OS ...
- CentOS7搭建FastDFS V5.11分布式文件系统-第三篇
1.测试 前面两篇博文已对FastDFS的安装和配置,做了比较详细的讲解.FastDFS的基础模块都搭好了,现在开始测试下载. 1.1 配置客户端 同样的,需要修改客户端的配置文件: /etc/fdf ...
- CentOS7搭建FastDFS V5.11分布式文件系统(三)
1.测试 前面两篇博文已对FastDFS的安装和配置,做了比较详细的讲解.FastDFS的基础模块都搭好了,现在开始测试下载. 1.1 配置客户端 同样的,需要修改客户端的配置文件: /etc/fdf ...
- MooseFS分布式文件系统介绍及安装教程详解
MFS系统由4个部分构成:master.metalogger.chunkserver.client. 1.Master —— mfs的大脑,记录着管理信息,比如:文件大小,存储的位置,份数等,和inn ...
- 分布式文件系统MFS(moosefs)实现存储共享(第二版)
分布式文件系统MFS(moosefs)实现存储共享(第二版) 作者:田逸(sery@163.com) 由于用户数量的不断攀升,我对访问量大的应用实现了可扩展.高可靠的集群部署(即lvs+keepali ...
- 分布式文件系统MFS(moosefs)实现存储共享(一)
分布式文件系统MFS(moosefs)实现存储共享 作者:田逸(sery@163.com) from:[url]http://net.it168.com/a2009/0403/270/00000027 ...
- 分布式文件系统MFS(moosefs)实现存储共享
分布式文件系统MFS(moosefs)实现存储共享(第二版) 作者:田逸(sery@163.com) 由于用户数量的不断攀升,我对访问量大的应用实现了可扩展.高可靠的集群部署(即lvs+keepali ...
- Hadoop概念学习系列之常见的分布式文件系统(二十六)
常见的分布式文件系统有,GFS.HDFS.Lustre .Ceph .GridFS .mogileFS.TFS.FastDFS等.各自适用于不同的领域.它们都不是系统级的分布式文件系统,而是应用级的分 ...
- (转)淘淘商城系列——分布式文件系统FastDFS
http://blog.csdn.net/yerenyuan_pku/article/details/72801777 商品添加的实现,包括商品的类目选择,即商品属于哪个分类?还包括图片上传,对于图片 ...
随机推荐
- 青瓷引擎之纯JavaScript打造HTML5游戏第二弹——《跳跃的方块》Part 10(排行榜界面&界面管理)
继上一次介绍了<神奇的六边形>的完整游戏开发流程后(可点击这里查看),这次将为大家介绍另外一款魔性游戏<跳跃的方块>的完整开发流程. (点击图片可进入游戏体验) 因内容太多,为 ...
- 代码重构之 —— 一堆if、esle 逻辑的处理
这几天,接手一个同事的代码,关于微信接口开发的,那一堆的 if,看得哥蛋痛了,这个毛病也是很多新手容易犯的,所以特地把这次重构写出来. 下面来我们看看这个代码的问题所在,if else 里面的代码块逻 ...
- 仿造slither.io第二步:加个地图,加点吃的
前言 上一篇博文讲了如何造一条蛇,现在蛇有了,要让它自由的活动起来,就得有个地图啊,而且只能走也不行呀,还得有点吃的,所以还得加点食物,这一篇博文就来讲讲如何添加地图和食物. 预览效果 当前项目最新效 ...
- Resharper快捷键
建议你使用 Reshaper 的快捷键,不要担心 Reshaper 会把你原来的快捷键设置给覆盖了,因为如果某个快捷键和 VS 是冲突的,Reshaper会让你自己选择需要使用 VS 还是 Resha ...
- matlab 绘制条形图
Matlab使用bar和barh函数来绘制二维条形图.分别是绘制二维垂直条形图和二维水平条形图. 转自:http://jingyan.baidu.com/article/64d05a02524e63d ...
- Centos|Rhel搭建vsftp
vsftp,在ftp传输中相对安全的 01.安装vsftpd yum install -y vsftpd 版本信息: Installed PackagesName : vsftpdArc ...
- 68 id -显示用户的id
Linux id命令用于显示用户的ID,以及所属群组的ID. id会显示用户以及所属群组的实际与有效ID.若两个ID相同,则仅显示实际ID.若仅指定用户名称,则显示目前用户的ID. 语法 id [-g ...
- 直播CDN架构随想
互联网内容载体变迁历程,文字--图片/声音--视频--VR/AR----从直播1.0秀场时代(YY).2.0游戏直播(斗鱼.虎牙.熊猫)到如今全民直播3.0泛生活娱乐时代(映客.花椒),国外直播App ...
- springmvc中实现quartz定时任务
1.maven项目添加如下两个jar包,当然也需要相应的spring 的Jar <!-- Spring Quartz定时器 begin --> <dependency> < ...
- ETL利器Kettle实战应用解析系列一【Kettle使用介绍】
本系列文章主要索引如下: 一.ETL利器Kettle实战应用解析系列一[Kettle使用介绍] 二.ETL利器Kettle实战应用解析系列二 [应用场景和实战DEMO下载] 三.ETL利器Kettle ...