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学习笔记-简单的倒计时跳转页面
<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...
- html 文本超过显示省略号
display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2;//显示行数 word-break: break-a ...
- MVC认知路【点点滴滴支离破碎】【五】----form表单上传单个文件
//个人理解:前台一个form加input[type='file'],在加一个submit的按钮 主要设置form的action,method,enctype='multipart/form-data ...
- iOS-- 快速集成iOS基于RTMP的视频推流
效果图 iTools有点卡, 但是推到服务器倒是很快的. 推流 前言 这篇blog是iOS视频直播初窥:<喵播APP>的一个补充. 因为之前传到github上的项目中没有集成视频的推流.有 ...
- elasticsearch与mongodb分布式集群环境下数据同步
1.ElasticSearch是什么 ElasticSearch 是一个基于Lucene构建的开源.分布式,RESTful搜索引擎.它的服务是为具有数据库和Web前端的应用程序提供附加的组件(即可搜索 ...
- iPad开发--美团界面的搭建(主要是对Popover的使用,以及监听)
一.主界面的搭建,效果图.设置self.navigationItem.leftBarButtonItems属性. 由于leftBarButtonItem是通过xib文件创建的,通过xib创建的控件默认 ...
- 【BZOJ 4569】【SCOI 2016】萌萌哒
http://www.lydsy.com/JudgeOnline/problem.php?id=4569 用ST表表示所有区间,根据ST表中表示的区间长度种一棵nlogn的树,类似线段树,每个节点的左 ...
- JavaScript写一个拼图游戏
拼图游戏的代码400行, 有点多了, 在线DEMO的地址是:打开: 因为使用canvas,所以某些浏览器是不支持的: you know: 为什么要用canvas(⊙o⊙)? 因为图片是一整张jpg或 ...
- Mysql-linux下密码修改,忘记密码修改,超级管理用户修改
未忘记密码 方法一:在mysql系统外,使用mysqladmin # mysqladmin -u root -p password "test123"Enter password: ...
- CSS实现兼容性的渐变背景(gradient)效果
利用css 3实现渐变可以很方便的更改它的颜色,并且能够减少图片的制作,但是它的兼容性并不好,下面的代码就是实现利用css 渐变兼容的代码: .gradient{ width:300px; heigh ...