分布式存储MooseFS的配置文件与命令详解
一、相关配置文件详解
这些配置文件大部分是保持默认状态不需要修改的。
1.1 mfsmaster.cfg配置文件详解
# cat /usr/local/mfs/etc/mfs/mfsmaster.cfg
#######运行选项###################### # WORKING_USER = mfs #运行master守护进程的用户,默认是mfs # WORKING_GROUP = mfs #运行master守护进程的用户组,默认是mfs # SYSLOG_IDENT = mfsmaster #要在syslog消息中放置的进程名称(默认为mfsmaster),消息默认是记录在/var/log/messages里 # LOCK_MEMORY = 0 #是否执行mlockall()以避免mfsmaster 进程溢出(默认为0); # LIMIT_GLIBC_MALLOC_ARENAS = 4 #仅限于Linux:将malloc区域限制为给定值 - 防止服务器使用大量虚拟内存(默认为4) # DISABLE_OOM_KILLER = 1 #仅限Linux:禁用内存killer(默认为1) # NICE_LEVEL = -19 #运行守护进程的良好级别(默认为-19;注意:进程必须以root身份启动以提高优先级,如果优先级设置失败,进程保留开始的好水平) # FILE_UMASK = 027 #为组和其他设置默认umask(用户始终为0,默认为027,块写入组并阻止所有其他) # DATA_PATH = /usr/local/mfs-3.0.94/var/mfs #在哪里存储守护进程锁文件(默认为/usr/local/mfs-3.0.94/var/mfs) # EXPORTS_FILENAME = /usr/local/mfs-3.0.94/etc/mfs/mfsexports.cfg #mfsexports.cfg文件的位置(默认为/usr/local/mfs-3.0.94/etc/mfs/mfsexports.cfg) # TOPOLOGY_FILENAME = /usr/local/mfs-3.0.94/etc/mfs/mfstopology.cfg #mfstopology.cfg文件的位置(默认为/usr/local/mfs-3.0.94/etc/mfs/mfstopology.cfg) # BACK_LOGS = 50 #元数据更改日志文件数(默认值为50),产生changelog.0.mfs-changelog.49.mfs,50个这样的日志文件用于存放元数据更改记录。 # METADATA_SAVE_FREQ = 1 #master多久会保存一次元数据,默认是1小时。 # BACK_META_KEEP_PREVIOUS = 1 #要保留的以前的元数据文件数(默认值为1),metadata.mfs.back.1留下一个这样的备份文件。 # CHANGELOG_PRESERVE_SECONDS = 1800 #在内存中必须保留多少秒的更改日志(默认为1800;这设置最小值,由于日志保存在5k块中,实际数量可能会更大一些;零会禁用额外的日志存储) # MISSING_LOG_CAPACITY = 100000 #在主机中将存储多少个缺失的块(最多可分配 100*MISSING_LOG_CAPACITY 字节的内存) #######命令连接选项##################### # MATOML_LISTEN_HOST = * #监听的IP地址,用于metalogger与masters间的连接,*表示任何。 # MATOML_LISTEN_PORT = 9419 #监听端口默认是9419,用于metalogger与masters间的连接 #######CHUNKSERVER连接选项############### # MATOCS_LISTEN_HOST = * #监听chunkservers连接的IP地址,默认是所有 # MATOCS_LISTEN_PORT = 9420 #监听端口默认是9420 # MATOCS_TIMEOUT = 10 #master-chunkserver连接的默认超时时间(默认为10秒) # AUTH_CODE = mfspassword #可选认证字符串。 定义时 - 只有具有相同AUTH_CODE的块服务器才允许连接到该主站。 当未定义(默认) - 然后所有chunkservers是允许的。如果要打开chunkserver身份验证, #则首先在所有chunkserver中定义AUTH_CODE(并重新加载/重新启动它们),然后取消注释此选项并重新加载/重新启动master重新加载当前连接 chunkservers没有断开连接。 当chunkservers将进行新的连接时,将使用新的AUTH_CODE。 # REMAP_BITS = 24 #可选IP类重映射。 # REMAP_SOURCE_IP_CLASS = 192.168.1.0 # REMAP_DESTINATION_IP_CLASS = 10.0.0.0 #######CHUNKSERVER工作选项############## #REPLICATIONS_DELAY_INIT = 300 #开始复制前的初始延迟(秒)(默认为300) # CHUNKS_LOOP_MAX_CPS = 100000 #Chunks循环不应该比每秒钟检查更多的块数(默认为100000) # CHUNKS_LOOP_MIN_TIME = 300 #Chunks循环不应该在比给定的数字少的秒钟内完成(默认值为300) # CHUNKS_SOFT_DEL_LIMIT = 10 #在一个chunk服务器上删除的最大块数(默认值为10) # CHUNKS_HARD_DEL_LIMIT = 25 #在一个chunkserver上最多删除的块数(默认为25) # CHUNKS_WRITE_REP_LIMIT = 2,1,1,4 #最大数量的块复制到一个chunkserver,第一个限制是比较危险的块(块只有一个副本);第二个限制是undergoal块(块的拷贝数量低于指定的目标); #第三个限制是平衡与周围空间使用服务器之间的算术平均数;第四个限制是其他服务器之间的平衡(极低或极高的空间使用情况);这里mfs官方建议是第一个数字大于等于第二,第二大于或等于第三,第四大于或等于第三,即(第一个限制 > = 第二个限制 > = 第三个限制< = 第四个限制)。 # CHUNKS_READ_REP_LIMIT = 10,5,2,5 #从一个chunkserver复制的最大块数(默认为10,5,2,5)一个数字等于四个相同数字,以冒号分隔,限制组与写入限制相同,数字之间的关系也应该相同 在写限制(1st> = 2nd> = 3rd <= 4th) # CS_HEAVY_LOAD_THRESHOLD = 100 #chunkserver负载值默认100 # CS_HEAVY_LOAD_RATIO_THRESHOLD = 5.0 #chunkserver负荷阈值率(默认值为5.0,每当chunkserver负载比先前指定的阈值高并且这一比率高于平均负载,然后chunkserver切换到“grace(优雅)”模式) # CS_HEAVY_LOAD_GRACE_PERIOD = 900 #定义chunkserver将在“grace”模式下保持多长时间(以秒为单位) # ACCEPTABLE_PERCENTAGE_DIFFERENCE = 1.0 #chunkserver的空间使用量的最大差异百分比(默认值为1.0;有效值:0.1 - 10.0) # PRIORITY_QUEUES_LENGTH = 1000000 #优先队列的长度(濒危,undergoal等块-应该首先处理块,默认值是1000000)。 # CS_MAINTENANCE_MODE_TIMEOUT = 0 #服务器可以处于维护模式的最大秒数(默认值为0 - 这意味着“永远”)。 # CS_TEMP_MAINTENANCE_MODE_TIMEOUT = 1800 #服务器可以处于“临时”维护模式的最大秒数(重新连接服务器自动切换回正常模式后,服务器切换到此模式,默认值为1800) ###########客户连接选项######################## # MATOCL_LISTEN_HOST = * #用于监听客户端(安装)连接的IP地址(*表示任何) # MATOCL_LISTEN_PORT = 9421 #端口监听客户端(mount)连接(默认为9421) ###########客户工作选择######################## # SESSION_SUSTAIN_TIME = 86400 #维持断开的客户端会话的时间(以秒为单位;默认值为86400 = 1天) # QUOTA_DEFAULT_GRACE_PERIOD = 604800 #软配额的默认宽限期(秒)(默认为604800 - 7天)不推荐使用:QUOTA TIME_LIMIT # ATIME_MODE = 0 #修改模式(默认为0 - 访问期间始终修改atime) #所有模式: #0 - 始终修改文件,文件夹和符号链接的atime。 #1 - 始终修改atime,但仅在文件的情况下(在文件夹和符号链接的情况下不要修改atime)。 #2 - 仅在ctime或mtime低于当前时间高于ctime或mtime时修改atime,当前atime早于24h时,修改atime。 在访问期间对所有对象进行操作(如Linux中的“relatime”选项)。 #3 - 与上述相同但仅在文件的情况下。 如果文件夹和符号链接不能修改atime。 #4 - 在访问期间不要修改atime(如“noatime”选项)。
博文来自:www.51niux.com
1.2 mfsexports.cfg配置文件详解
# cat /usr/local/mfs/etc/mfs/mfsexports.cfg #这里就跟NFS的/etc/exports文件类似,就是允许让哪些客户端来进行挂载
一行的格式:[ip range] [path] [options]
ip范围:
*:表示任何ip(与0.0.0.0/0相同)
A.B.C.D:表示单个IP
A.B.C.D-E.F.G.H : IP地址范围
A.B.C.D / XX:A.B.C.D网络和子网掩码
A.B.C.D/E.F.G.H : A.B.C.D网络与E.F.G.H网络掩码
path:
. :特殊的“路径",意思是“元”
/...:路径在mfs结构
options:
ro/rw/readonly/readwrite:从字面意思就可以看出来只读/读写/只读/读写
alldirs:任何子目录都可以以root身份加载
dynamicip:ip仅在第一次身份验证期间进行测试,则客户端可以使用来自任何ip的相同会话ID
ignoregid:组ID(gid)
admin:管理权限 - 当前:允许操纵配额值
maproot=UID[:GID]:将所有根(uid零)操作视为用户执行的操作,其中uid等于UID,gid等于GID(如果GID未指定,则为该用户的默认gid)
mapall=UID[:GID}:如上所述,对于所有操作(对于这两个选项,UID和/或GID可以指定为主机上存在的用户名或组名)
password=TEXT:强制认证使用给定的密码
md5pass=MD5:如上所述,但是密码被定义为MD5哈希(MD5指定为128位十六进制数)
minversion=VER:仅允许版本号等于或大于VER的客户端(VER可以指定为X或X.Y或X.Y.Z)
mingoal=N : 不允许将目标设定在N以下(N应该是从'1'到'9'的数字)
maxgoal=N:不允许将目标设定在N(N以上)
mintrashtime=TIMEDURATION:不要将垃圾时间设置在TIME DURATION之下(时间DURATION可以按照设定顺序指定秒数或元素#W,#D,#H,#M,#S的组合)
maxtrashtime=TIMEDURATION:不允许设置超过TIMEDURATION的时间(TIMEDURATION可以指定如上)
默认值:
readonly,maproot=999:999,mingoal=1,maxgoal=9,mintrashtime=0,maxtrashtime=4294967295
1.3 mfsmetalogger.cfg配置文件详解
# cat /usr/local/mfs/etc/mfs/mfsmetalogger.cfg
###########运行选项############################ # WORKING_USER = mfs # WORKING_GROUP = mfs # SYSLOG_IDENT = mfsmetalogger #要在syslog消息中放置的进程名称(默认为mfsmetalogger) # LOCK_MEMORY = 0 # LIMIT_GLIBC_MALLOC_ARENAS = 4 # DISABLE_OOM_KILLER = 1 # NICE_LEVEL = -19 # FILE_UMASK = 027 # DATA_PATH = /usr/local/mfs-3.0.94/var/mfs # BACK_LOGS = 50 # BACK_META_KEEP_PREVIOUS = 3 #要保留的以前的元数据文件数(默认为3),metadata_ml.mfs.back.1-metadata_ml.mfs.back.3留下三个这样的备份文件。 # META_DOWNLOAD_FREQ = 24 #元数据下载频率以小时为单位(默认为24,应至少为BACK_LOGS/2)。注意这里是要修改的一般改为1. META_DOWNLOAD_FREQ = 1 ##########MASTER连接选项###################### # MASTER_RECONNECTION_DELAY = 5 #如果未连接,则在下次尝试重新连接到主机之前延迟秒(默认为5) # BIND_HOST = * #用于与主机连接的本地地址(默认为*,即默认本地地址) # MASTER_HOST = mfsmaster #MooseFS主机,只允许在单主机安装中使用IP(默认为mfsmaster),这里也是需要修改的地方。 # MASTER_PORT = 9419 #master的端口 # MASTER_TIMEOUT = 10 #与master连接的超时时间,默认是10秒钟
1.4 mfschunkserver.cfg配置文件详解
# cat /usr/local/mfs/etc/mfs/mfschunkserver.cfg
##########运行选项########################### # WORKING_USER = mfs # WORKING_GROUP = mfs # SYSLOG_IDENT = mfschunkserver #在syslog消息中放置的进程名称(默认为mfschunkserver) # LOCK_MEMORY = 0 # LIMIT_GLIBC_MALLOC_ARENAS = 4 # DISABLE_OOM_KILLER = 1 # NICE_LEVEL = -19 # FILE_UMASK = 027 # DATA_PATH = /usr/local/mfs-3.0.94/var/mfs #在哪里存储守护进程锁文件(默认为/usr/local/mfs-3.0.94/var/mfs) # HDD_CONF_FILENAME = /usr/local/mfs-3.0.94/etc/mfs/mfshdd.cfg #mfshdd.cfg文件位置,分配给MFS磁盘空间的配置文件的位置 # HDD_TEST_FREQ = 10 #块测试周期(默认值为10秒) # HDD_LEAVE_SPACE_DEFAULT = 256MiB #每个硬盘驱动器上应该留下多少空间(默认值:256MiB) # HDD_REBALANCE_UTILIZATION = 20 #批量服务器允许在hdd空间重新平衡上花费的总工作时间的百分比 # HDD_ERROR_TOLERANCE_COUNT = 2 #在单个硬盘驱动器上以给定的秒数(PERIOD)容许多少个I/O错误(COUNT);如果错误数量超过此设置,则有害的硬盘驱动器将被标记为损坏 # HDD_ERROR_TOLERANCE_PERIOD = 600 # HDD_FSYNC_BEFORE_CLOSE = 0 #在chunk关闭前启用/禁用fsync # HDD_SPARSIFY_ON_WRITE = 1 #在写入期间启用/禁用sparsification(跳过零) # WORKERS_MAX = 250 #最大的活跃会话数 # WORKERS_MAX_IDLE = 40 #最大的空闲会话数 ###########与master连接选项################# # LABELS = #标签字符串(默认为空 - 无标签) # BIND_HOST = * #用于master连接的本地地址(默认为*,即默认本地地址) # MASTER_HOST = mfsmaster #MooseFS主机,只允许在单主机安装中使用IP(默认为mfsmaster)。这里是要修改的地方。 # MASTER_PORT = 9420 #与master端连接的端口 # MASTER_TIMEOUT = 10 #与master连接的超时时间(默认为10秒) # MASTER_RECONNECTION_DELAY = 5 #如果未连接,则在下次尝试重新连接到主机之前延迟秒(默认为5) # AUTH_CODE = mfspassword #authentication字符串(仅当master需要授权时才使用) ##########客户端连接选项#################### # CSSERV_LISTEN_HOST = * #IP地址来监听客户端(挂载)连接(*表示任何) # CSSERV_LISTEN_PORT = 9422 #端口监听客户端(mount)连接(默认为9422)
1.5 mfshdd.cfg配置文件详解
该文件保留硬盘驱动器的安装点(路径)的定义以与块服务器一起使用。
一个路径可以从多个字符开始,这些字符可以切换其他选项:
*:表示这个硬盘被标记为删除,所有数据将被复制到其他硬盘驱动器(通常在其他chunkserver上)
<:表示来自此硬盘驱动器的所有数据都应该移动到其他硬盘驱动器
>:表示来自其他硬盘驱动器的所有数据都应移动到该硬盘驱动器
〜:表示总计数的重大变化不会将此驱动器标记为损坏
如果同时使用“<”和“>”驱动器,那么只能在这些驱动器之间移动数据
可以指定可选的空间限制(在每个安装点之后),有两种方法:
将空间设置为在硬盘驱动器上未使用(这覆盖了mfschunkserver.cfg的默认设置)
限制在硬盘上使用的空间,如:/mnt/hd4 -5GiB或/mnt/hd4 1.5TiB
1.6 mfsmount.cfg文件简单介绍
# cat /usr/local/mfs/etc/mfs/mfsmount.cfg #这个文件一般都是mfsmount.cfg.sample状态,因为我们一般都是命令挂载的
#可选的mfsmount.cfg文件可用于指定mfsmount的默认值。 默认安装选项可以在一行以逗号分隔或多行指定。如(下面一看就能明白就不解释了): # nosuid,nodev # mfsmaster=mfsmaster # mfspassword=secret #主要是这里,如果master设置了挂载密码,如果你这里不设置就要手工输了,然后如果客户端想开机自动挂载就需要在这里设置密码了。 #默认安装点也可以设置。 默认安装点必须以“/”开头,并且是一个完全限定的路径。如: # /mnt/mfs
博文来自:www.51niux.com
二、mfs常用命令详解(都在client端下操作)
2.1 mfscheckfile和mfsfileinfo命令和mfsgetsclass命令
mfscheckfile举例:
# /usr/local/mfs/bin/mfscheckfile /data/master.zip /data/php-7.0.20.tar.gz #可以检查多个文件,我这里检查了两个文件(/data是挂载点)
# /usr/local/mfs/bin/mfscheckfile /data/master.zip #检查单个文件,存在就返回此文件的副本数(如:chunks with 2 copies,就是说一份文件存了两个地方),文件不存在会报错
mfsfileinfo举例:
mfsfileinfo有三个参数,-q是简洁模式,仅显示副本数,mfsfileinfo -q效果跟mfscheckfile的输出结果一致。-c 是从chunkservers接收块校验和,mfsfileinfo=mfsfileinfo -c,-s是计算文件签名(使用校验和)。
# /usr/local/mfs/bin/mfsfileinfo /data/php-7.0.20.tar.gz #也可以支持多文件,多文件用空格隔开
/data/php-7.0.20.tar.gz: chunk 0: 0000000000000002_00000001 / (id:2 ver:1) copy 1: 192.168.1.105:9422 (status:VALID) #从这里可以看到两份副本分别存放于哪两台机器上面 copy 2: 192.168.1.106:9422 (status:VALID)
mfsgetsclass举例(既可以显示文件的副本数又可以显示目录的副本数):
# /usr/local/mfs/bin/mfsgetsclass /data/* #显示/data目录下所有文件或目录的副本份数,但是不是递归哦,只是把/data目录下的目录的份数显示出来
# /usr/local/mfs/bin/mfsgetsclass -r /data/* #可以多显示一行,显示是文件( files with goal)还是目录( directories with goal)
# /usr/local/mfs/bin/mfsgetsclass /data/master.zip #当然也可以指定文件了。
2.2 mfsdirinfo命令
这个命令可以显示目录的状态。
用法:mfsdirinfo [-nhHkmg] [-idfclsr] [-p] name [name ...]
-n - 以简单格式显示数字
-h-使用基数2前缀的“人类可读”数字(IEC 60027)
-H - 使用基数10前缀(SI)的“可读”数字
-k - 以千比数显示纯数字(二进制千 - 1024)
-m - 在mebis中显示纯数字(二进制mega - 1024 ^ 2)
-g - 以赤字显示纯数字(二进制千兆 - 1024 ^ 3)
'显示'开关:
-i - 显示索引节点数
-d - 显示目录数
-f - 显示文件数
-c - 显示块数
-l - 显示长度
-s - 显示大小
-r - 显示realsize
'模式'开关:
-p - 精确模式
#从上图可以看出,/data目录inodes号用了6个,目录数是2个(说明/data目录下面还有一个目录呢),有4个文件,占用了4个块。length表示文件的综合是19MB,size表示块长度总和是19MB,realsize表示磁盘空间使用39MB包括所有的副本,因为我们是2个副本,所以realsize的大小正好是length大小的2倍。
2.3 mfsgetgoal和mfsrsetgoal命令
mfssetgoal(设置目标的副本分数):
# /usr/local/mfs/bin/mfssetgoal 3 /data/3.jpg #设置文件/data/3.jpg为3个副本
# /usr/local/mfs/bin/mfssetgoal 3 /data/test #设置/data/test目录为三份副本,但是test目录下面的所有文件和目录还是默认的2份副本
# /usr/local/mfs/bin/mfssetgoal 3 -r /data/test #用-r的方式,递归的让/data/test目录下的所有目录和文件都变为3份副本
mfsgetgoal(查看副本数):
# /usr/local/mfs/bin/mfsgetgoal /data/test #查看/data/test的副本数,mfsfileinfo这个命令只能查看文件不能查看目录,这也算互补了。
# /usr/local/mfs/bin/mfsgetgoal /data/test/3.jpg #查看/data/test/3.jpg文件的副本数
2.4 mfsgetquota命令
此命令获取给定目录(目录)的配额。
# /usr/local/mfs/bin/mfsgetquota -h /data/ #查看/data目录的配额
# /usr/local/mfs/bin/mfsgetquota -h /data/test #查看/data/test目录的配额
2.5 mfsrsettrashtime和mfsgettrashtime命令
删除的文件存放在“垃圾箱(trash bin)”的时间就是隔离时间(quarantine time),这个时间可以用mfsgettrashtime 来验证,也可以用mfssettrashtime来设置。设置的时间是按照小时计算,设置的单位是秒,不满一小时就按一小时计算。
# /usr/local/mfs/bin/mfsgettrashtime /data/3.jpg #获取/data/3.jpg删除后在垃圾箱里面的存放时间
/data/3.jpg: 86400 #默认是一天
模拟下从垃圾箱中把删除的文件找回来
# mkdir /data/trash
# /usr/local/mfs/bin/mfsmount -m /data/trash -H 192.168.1.101 #-m指定挂载一下
# rm -rf /data/3.jpg #好了现在可以删除了
# find /data/trash/trash/ -name "*3.jpg*" #查找一下
#被删除的文件名在垃圾箱里面其实还是可以找到的,文件名是由一个8位16进制数的i-node和被删的文件名组成。在文件名和i-node之间不可以用"/",而是以“|” 替代。如果一个文件名的长度超过操作系统的限制(通常是255字符),那么超出部分将被删除。从挂载点起全部路径的文件名被删除的文件仍然可以被读写。需要注意的是,被删除的文件在使用文件名(注意文件名是两部分),一定要用单引号引起来。
# mv /data/trash/trash/008/00000008\|3.jpg /data/3.jpg #将文件移动回来就是恢复了
mfsrsettrashtime命令:
mfsrsettrashtime就是设置文件在垃圾箱里面存留的时间,如:# /usr/local/mfs/bin/mfsrsettrashtime 8000 /data/3.jpg #设置/data/3.jpg文件的时间为8000秒,大于2小时不满3小时会按3小时算。另外,-r是递归目录的,设置成0就是文本删除后,会被立即删除,不可能再恢复。
注意:
# /usr/local/mfs/bin/mfsmount -m /data/trash -H 192.168.1.101 #这个挂载操作,并不一定非要一直挂载,你不挂载的话,你删除了文件都会存到回收站里面,只是你客户端看不到而已,如果真有误删除的情况,你想恢复某些文件了,执行挂载,去查找你误删除的文件就可以了。
下面再测试下删除目录。现在我创建了一个/data/rmtest目录。在/data/rmtest目录下面创建了yaoshan,jiushan两个目录,又分别在两个目录下面各放置了一个文件。然后我将/data/rmtest目录删除,然后-m挂载回收站。
#从上如中可以看到回收站里面的文件最后三段分别是rmtest|jiushan|文件名,就相当于rmtest/jiushan/LuaJIT-2.0.4.tar.gz
#下面是正确的恢复方式:
#/data/trash/trash/015
# mv 00000015\|rmtest\|jiushan\|LuaJIT-2.0.4.tar.gz ./undel/
# ls -l /data/rmtest/jiushan/LuaJIT-2.0.4.tar.gz #查看一下,文件已经恢复回去了
#其他目录下的文件也按照此方面就可以了,如果是恢复目录的话,你就可以自己写个小程序查找调用一下,然后让程序帮你去恢复就可以了,就不能自己手工一个个来了。
#你说我不想回收站存放1天太占空间了,可以在删除文件之前用-r指定目录来将时间设置的短一点:
$bin/mfssettrashtime 600 -r /data/logs/ #指定整个目录在回收站的时间,这样再存到这个目录下的文件如果删除的话都会只保留3600秒也就是一小时,我擦不是600秒吗,最小单位是小时而不是分钟所以最小回收站保留1小时。
/data/logs/: inodes with trashtime changed: 1001 #有多少个改变了,如果重复操作这里就是0了。 inodes with trashtime not changed: 0 inodes with permission denied: 0
三、查看MFS的状态
主要还是用mfscgiserv提供的web程序来查看mfs的状态。
如:查看mfs所占内存状态大小
#从上图看所占内存是816MB,可以说还不是占用的很多。
如:查看下mfs总体的空间状态
#从标红的地方可以看出,总空间是326T,剩余175T,有65793个目录,存储了394359个文件,实际是占用了2886466个块,因为是2个副本。
如:查看mfs现在用于存储机器的总体情况(在Servers+)
#可以看到每个机器的被占用的块数,磁盘总体的使用率,每个机器所提供存储的总大小,以及现在使用率。而且这里如果有机器是离线状态也可以看出来。
如:上图下面有一栏Metadata Backup Loggers,就是记录meta backp log节点是哪台机器。
#从上图可以看出每个图都会有字段标记自己找个图显示的是什么,那么从上到下记录一下英文字段所对应的意思: cpu usage (percent) #CPU使用率(百分比) memory usage (if available - rss + virt) #内存使用情况(如果能得到是 rss + virt) raw disk space usage (total / used) #原始磁盘空间使用(总/使用),磁盘总量颜色比较浅磁盘使用量颜色比较深。 chunk deletions (per minute) #块删除(每分钟) chunk replications (per minute) #块复制(每分钟) statfs operations (per minute) #statfs操作(每分钟) getattr operations (per minute) #getattr操作(每分钟) setattr operations (per minute) #setattr操作(每分钟) lookup operations (per minute) #查找操作(每分钟) mkdir operations (per minute) #mkdir操作(每分钟) rmdir operations (per minute) #rmdir操作(每分钟) symlink operations (per minute) #符号链接操作(每分钟) readlink operations (per minute) #readlink操作(每分钟) mknod operations (per minute) #mknod操作(每分钟) unlink operations (per minute) #取消关联操作(每分钟) rename operations (per minute) #重命名操作(每分钟) link operations (per minute) #链接操作(每分钟) readdir operations (per minute) #readdir操作(每分钟) open operations (per minute) #open操作(每分钟) read operations (per minute) #读取操作(每分钟) write operations (per minute) #写操作(每分钟) packets received (per second) #收到的数据包(每秒) packets sent (per second) #数据包发送(每秒) bits received (per second) #接收到的bits(每秒) bits sent (per second) #bit发送(每秒)
#最上面这两个栏也是很有用的有助于帮我们分析排查问题,左边那个是服务器自身的一些信息图标统计(如:cpu负载,内存使用率,流量,写文件,读文件等等)
#Server Charts -栏可以选择每个Chunkserver节点:9422 来查看每个服务的图标信息,当然也可以选择某一个指标会把所有节点的此指标信息显示出来。
#右边那个是是可以查看各个节点的信息图标,(如:cpu负载,内存使用量,从其他节点拉文件的流量,发送到其他节点的流量等)看下图:
#我们还是把左侧的字段都翻译一下: cpu usage (percent) #CPU使用率(百分比) memory usage (if available - rss + virt) #内存使用情况(如果能获取到就是 rss + virt) traffic from clients and other chunkservers (bits/s - main server + replicator) #来自客户端和其他chunkservers的流量(bits/s - 主服务器+复制器) traffic to clients and other chunkservers (bits/s - main server + replicator) #流量到客户端和其他chunkservers(bits/秒 - 主服务器+复制器) bytes read - data/other (bytes/s) #读字节数 - 数据/其他(字节/秒) bytes written - data/other (bytes/s) #写字节数 -数据/其他(字节/秒) traffic from master (bits/s) #从主发来的流量(bits/s) traffic to master (bits/s) #发送给master的流量(bits/s) number of low-level read operations per minute #每分钟低级别读取操作数 number of low-level write operations per minute #每分钟低级别写操作数 number of high-level read operations per minute #每分钟高级读操作数 number of high-level write operations per minute #每分钟高级写操作的数量 time of data read operations #数据读取操作的时间 time of data write operations #数据写入操作的时间 number of chunk replications per minute #每分钟块复制的数量 number of chunk creations per minute #每分钟创建块数 number of chunk deletions per minute #每分钟删除块数 load - max operations in queue #load - 队列中的最大操作数
# /usr/local/mfs/bin/mfscli -S -SCS -H 192.168.1.101 #-H指定master节点IP,也可以查看数据存储节点的信息
# /usr/local/mfs/bin/mfscli -S -SIN -H 192.168.1.101 #-H指定master节点IP,可以查看详细的集群状态信息。
注:
mfs默认存储的就是2份副本,如果为了数据的安全,可以再mfs client挂载的时候指定是存储三份副本。
我们线上存储的都是几百MB的录像文件,所以存储的元数据比较少,内存使用也比较少,从上面可以看出还不到1G。实际的metadata.mfs.back备份文件也才100M。
mfs因为是单节点,所以做了meta backup log做备份,同时系统盘是raid1,主机电源是双电。
存储的录像文件也是按照特殊标识,如,主播标识-房间id-时间.flv,等文件名按照规律来。
注(MooseFS容灾):
MooseFS社区版只有一个管理节点,当管理节点故障的时候,整个服务就会停止。存储日志服务器实际是管理节点的数据备份,通过存储日志服务可以恢复管理节点的数据,操作步骤如下:
重新部署管理节点:
重新安装一台服务器作为管理节点,可以和故障服务器同主机名,也可以是新的主机名和IP。
传输备份数据到新的管理节点:
将存储日志服务器的备份数据传输到新的管理节点,通过scp命令或者rsync命令,将/usr/local/mfs/var/mfs目录下的数据从存储日志服务器传到新的管理节点相同目录下。
恢复数据:
在新的管理节点上执行:/usr/local/mfs/sbin/mfsmaster -a #可以自动恢复数据
启动管理节点服务,如果主机名、IP有变化,修改一下每个存储节点的管理节点配置信息,重启存储服务,集群就恢复了。