柴少鹏的官方网站 技术在分享中进步,水平在学习中升华

分布式存储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,就是说一份文件存了两个地方),文件不存在会报错

图片.png

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 - 精确模式

图片.png

#从上图可以看出,/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目录的配额

图片.png

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挂载回收站。

图片.png

#从上如中可以看到回收站里面的文件最后三段分别是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   #查看一下,文件已经恢复回去了

图片.png
#其他目录下的文件也按照此方面就可以了,如果是恢复目录的话,你就可以自己写个小程序查找调用一下,然后让程序帮你去恢复就可以了,就不能自己手工一个个来了。

#你说我不想回收站存放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所占内存状态大小

X96]UB`PCUE]P2KM(`K7[~O.png

#从上图看所占内存是816MB,可以说还不是占用的很多。

如:查看下mfs总体的空间状态

图片.png

#从标红的地方可以看出,总空间是326T,剩余175T,有65793个目录,存储了394359个文件,实际是占用了2886466个块,因为是2个副本。

如:查看mfs现在用于存储机器的总体情况(在Servers+)

5LM%3KM09PTMR$6O`2Z0Y)O.png

#可以看到每个机器的被占用的块数,磁盘总体的使用率,每个机器所提供存储的总大小,以及现在使用率。而且这里如果有机器是离线状态也可以看出来。

如:上图下面有一栏Metadata Backup Loggers,就是记录meta backp log节点是哪台机器。

图片.png

图片.png

图片.png

图片.png

#从上图可以看出每个图都会有字段标记自己找个图显示的是什么,那么从上到下记录一下英文字段所对应的意思:
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发送(每秒)

图片.png

#最上面这两个栏也是很有用的有助于帮我们分析排查问题,左边那个是服务器自身的一些信息图标统计(如:cpu负载,内存使用率,流量,写文件,读文件等等)

#Server Charts -栏可以选择每个Chunkserver节点:9422 来查看每个服务的图标信息,当然也可以选择某一个指标会把所有节点的此指标信息显示出来。

#右边那个是是可以查看各个节点的信息图标,(如:cpu负载,内存使用量,从其他节点拉文件的流量,发送到其他节点的流量等)看下图:

图片.png

图片.png

#我们还是把左侧的字段都翻译一下:
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有变化,修改一下每个存储节点的管理节点配置信息,重启存储服务,集群就恢复了。

作者:忙碌的柴少 分类:分布式文件系统 浏览:3887 评论:0
留言列表
发表评论
来宾的头像