Linux下MFS分布式文件系统的安装与部署(mfs软件包的版本为3.80-1)

本文详细介绍MFS分布式文件系统的基本概念、特性及其组件。通过实验环境部署MFS,包括master、chunkserver和client的安装配置流程。演示数据读写过程、故障恢复机制及垃圾箱文件恢复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mfs官网:https://www.mfs.com;https://moosefs.com/

 

 

一、初始MFS

 

1、MFS简介

 

分布式文件系统是指文件系统管理的物理存储资源通过计算机网络与各节点相连。简单讲,就是把一些分散的共享文件夹,集合到一个文件夹内。对于用户来说,只 需要打开该虚拟文件夹,就可以使用这些分散的文件夹进行数据读写。分布式文件系统的好处在于集中访问、简化操作、冗余防灾、读写迅速。

MFS是一个具有容错性的网络分布式文件系统,它把数据分散存放在多个物理服务器上,而呈现给用户的则是一个统一的资源。由元数据服务器master、元数据日志服务器metalogger、数据存储服务器chunk server和客户端client四个组件组成。如图,chunk seerver可以存在多个,可以及时添加,为MFS扩展容量。

MFS分布式文件系统部署

 

2、MFS文件系统的特性

 

 MooseFS是一个分布式存储的框架,其具有如下特性:

(1)通用文件系统,不需要修改上层应用就可以使用(那些需要专门api的dfs很麻烦!)。

(2)可以在线扩容,体系架构可伸缩性极强。(官方的case可以扩到70台了!)

(3)部署简单。

(4)高可用,可设置任意的文件冗余程度(提供比raid1+0更高的冗余级别,而绝对不会影响读或者写的性能,只会加速!)

(5)可回收在指定时间内删除的文件(“回收站”提供的是系统级别的服务,不怕误操作了,提供类似oralce 的闪回等高级dbms的即时回滚特性!)

(6)提供netapp,emc,ibm等商业存储的snapshot特性。(可以对整个文件甚至在正在写入的文件创建文件的快照)

(7)google filesystem的一个实现。

(8)提供web gui监控接口。

 

3、MFS文件系统的组成

 

元数据服务器(master):负责各个数据存储服务的管理文件读写调度,文件空间回收以及恢复,多节点拷贝。

元数据日志服务器(MetaLogger):负责备份master服务器的变化日志文件,文件类型为changelog_ml.*.mfs,以便于在master server出现问题的时候解体器 进行工作。

数据存储服务器(Chunk Server):真正存储用户数据的服务器存储文件时,首先把文件分成块,然后这些块在数据服务器chunkserver之间赋值(复制份数可以手工指定,建议设置副本数为数据服务器可以为多个,并且数据越多,可使用的“磁盘空间越大,”可靠性也越高。

客户端(client):使用MFS文件系统来存储和访问的主机名称为MFS的客户端,成功挂载MFS系统以后,就可以像以前NFS一样共享这个虚拟性的存储了。。

 

4、MFS读取数据的处理过程。

 

MFS读取数据的过程:

  1. 首先客户端向master发送请求
  2. master把所需的数据存放位置告诉给客户端(chunk server的ip地址和chunk编号)
  3. 客户端向chunk server发送请求数据
  4. chunk server给客户端发送所需的数据

这里写图片描述

 

5、MFS写入数据的处理过程。

 

MFS写数据的过程:

  1. 客户端向master发送请求
  2. master与chunk server进行交互,但是master只对某些chunk server创建新的分块chunks,创建成功后chunk server会给master反馈
  3. master告诉客户端,在上一过程指定的chunk server写入数据
  4. 客户端开始写入数据
  5. 写入数据的chunk server将这些数据与其他的chunk server进行同步,同步完成反馈结果给客户端。客户端再反馈给master,这时,整个过程结束。

这里写图片描述

 

二、实验环境(rhel7.3版本)

1selinux和firewalld状态为disabled

2各主机信息如下:

主机ip
server1(mfsmaster)172.25.83.1
server2(mfschunkserever1)172.25.83.2
server3(mfschunkserever2)172.25.83.3
物理机(client)172.25.83.83/172.25.254.83

 

三、mfs分布式文件系统的安装与部署

 

配置server1(mfsmaster):

 

1、下载moosefs压缩包到root用户家目录,并进行解压

[root@server1 ~]# ls
moosefs-3.0.80-1.tar.gz
[root@server1 ~]# tar zxf moosefs-3.0.80-1.tar.gz 

 

2、将moosefs-3.0.80-1.tar.gz压缩包做软链接为moose-3.0.80.tar.gz这是因为,有时不能识别-1 。否则后续在执行rpmbuild命令生成rpm包时会报错。

[root@server1 ~]# ln -s moosefs-3.0.80-1.tar.gz moosefs-3.0.80.tar.gz   
[root@server1 ~]# ll
total 1080
drwxr-xr-x 20  501 games    4096 Jul 13  2016 moosefs-3.0.80
-rw-r--r--  1 root root  1097759 Apr  4 20:07 moosefs-3.0.80-1.tar.gz
lrwxrwxrwx  1 root root       23 Apr  4 22:34 moosefs-3.0.80.tar.gz -> moosefs-3.0.80-1.tar.gz

 

3、在网上下载rpm包:libpcap-1.5.3-9.el7.x86_64.rpm和libpcap-devel-1.5.3-9.el7.x86_64.rpm。利用rpmbuild命令生成moosefs相应的rpm包,便于部署

[root@server1 ~]# ls
libpcap-1.5.3-9.el7.x86_64.rpm        moosefs-3.0.80           moosefs-3.0.80.tar.gz
libpcap-devel-1.5.3-9.el7.x86_64.rpm  moosefs-3.0.80-1.tar.gz 


[root@server1 ~]# yum install rpm-build -y   #安装rpm-build软件,以提供rpmbuild命令
[root@server1 ~]# rpmbuild -tb moosefs-3.0.80.tar.gz   #报错,缺少依赖包
error: Failed build dependencies:
	fuse-devel is needed by moosefs-3.0.80-1.x86_64
	zlib-devel is needed by moosefs-3.0.80-1.x86_64
	libpcap-devel is needed by moosefs-3.0.80-1.x86_64

[root@server1 ~]# yum install fuse-devel zlib-devel -y   #安装依赖包
[root@server1 ~]# yum install libpcap-1.5.3-9.el7.x86_64.rpm libpcap-devel-1.5.3-9.el7.x86_64.rpm -y   #安装依赖包
[root@server1 ~]# yum install gcc make -y
[root@server1 ~]# rpmbuild -tb moosefs-3.0.80.tar.gz   #报错,你有些文件没有在spec文件中没有被包含,但是又被安装
error: Installed (but unpackaged) file(s) found:
   /usr/lib/systemd/system/moosefs-cgiserv.service
   /usr/lib/systemd/system/moosefs-chunkserver.service
   /usr/lib/systemd/system/moosefs-master.service
   /usr/lib/systemd/system/moosefs-metalogger.service


RPM build errors:
    Installed (but unpackaged) file(s) found:
   /usr/lib/systemd/system/moosefs-cgiserv.service
   /usr/lib/systemd/system/moosefs-chunkserver.service
   /usr/lib/systemd/system/moosefs-master.service
   /usr/lib/systemd/system/moosefs-metalogger.service


[root@server1 ~]# vim /usr/lib/rpm/macros   #将377行注释掉,再次重新编译
 377 #%__check_files         %{_rpmconfigdir}/check-files %{buildroot}
[root@server1 ~]# rpmbuild -tb moosefs-3.0.80.tar.gz   #没有报错,在rpmbuild/RPMS/x86_64目录下生成相应的rpm包
[root@server1 ~]# cd rpmbuild/RPMS/x86_64/
[root@server1 x86_64]# ls
moosefs-cgi-3.0.80-1.x86_64.rpm          moosefs-debuginfo-3.0.80-1.x86_64.rpm
moosefs-cgiserv-3.0.80-1.x86_64.rpm      moosefs-master-3.0.80-1.x86_64.rpm
moosefs-chunkserver-3.0.80-1.x86_64.rpm  moosefs-metalogger-3.0.80-1.x86_64.rpm
moosefs-cli-3.0.80-1.x86_64.rpm          moosefs-netdump-3.0.80-1.x86_64.rpm
moosefs-client-3.0.80-1.x86_64.rpm

 

4、安装master端需要的软件

[root@server1 x86_64]# pwd
/root/rpmbuild/RPMS/x86_64
[root@server1 x86_64]# yum install moosefs-cgiserv-3.0.80-1.x86_64.rpm moosefs-cgi-3.0.80-1.x86_64.rpm moosefs-master-3.0.80-1.x86_64.rpm -y

 

5、做域名解析(该域名解析必须是mfsmaster。)

[root@server1 ~]# vim /etc/hosts
172.25.83.1    server1 mfsmaster

 

6、开启服务并查看端口

[root@server1 ~]# mfs   #利用两次tan键查看mfs的命令
mfscgiserv      mfsmetadump     mfsstatsdump    
mfsmaster       mfsmetarestore  

[root@server1 ~]# mfscgiserv   #启动mfscgiserv服务,开启访问web界面的端口9425(在哪个目录下执行该命令都可以)
lockfile created and locked
starting simple cgi server (host: any , port: 9425 , rootpath: /usr/share/mfscgi)
[root@server1 ~]# mfsmaster   #启动mfsmaster服务,开启端口9419,9420,9421(在哪个目录下执行该命令都可以)
open files limit has been set to: 16384
working directory: /var/lib/mfs
lockfile created and locked
initializing mfsmaster modules ...
exports file has been loaded
topology file has been loaded
loading metadata ...
metadata file has been loaded
no charts data file - initializing empty charts
master <-> metaloggers module: listen on *:9419
master <-> chunkservers module: listen on *:9420
main master server module: listen on *:9421
mfsmaster daemon initialized properly


[root@server1 ~]# netstat -antulpe
tcp        0      0 0.0.0.0:9419            0.0.0.0:*               LISTEN      994        820552     11500/mfsmaster     
tcp        0      0 0.0.0.0:9420            0.0.0.0:*               LISTEN      994        820553     11500/mfsmaster 
tcp        0      0 0.0.0.0:9421            0.0.0.0:*               LISTEN      994        820554     11500/mfsmaster 
tcp        0      0 0.0.0.0:9425            0.0.0.0:*               LISTEN      0          818445     11280/python   

用于 chunkserver 连接的端口地址(默认是 9420)
metalogger 监听的端口地址(默认是 9419)
用于客户端挂接连接的端口地址(默认是 9421)
MFS master web 界面监听端口,查看整体运行状态(默认是 9425)

 

此时可以在客户端的浏览器中访问:172.25.83.1:9425

 

配置server2和:(mfschunkserever1和mfschunkserver2)

 

1、从server1端拷贝moosefs-chunkserver对应的rpm包,并进行安装

[root@server1 x86_64]# scp moosefs-chunkserver-3.0.80-1.x86_64.rpm server2:
[root@server2 ~]# ls
moosefs-chunkserver-3.0.80-1.x86_64.rpm
[root@server2 ~]# yum install moosefs-chunkserver-3.0.80-1.x86_64.rpm -y


#server3端操作同server2

 

2、做域名解析(该域名解析必须是mfsmaster。)

[root@server2 ~]# vim /etc/hosts
172.25.83.1    server1 mfsmaster


#server3端操作同server2
  • 其中域名解析必须写为mfsmaster的原因是由配置文件(/etc/mfs/mfschunkserver.cfg)决定的

 

3、建立需要作为chunkserver的目录,并修改所有人,所有组

实验中我们将/mnt/mfs/作为chunkserver,使用根空间,实际生产环境下应该创建目录后,将磁盘挂载在该目录下

[root@server2 ~]# mkdir /mnt/chunk1   #该目录随意建在哪个目录下,并且该目录的名字随意给
[root@server2 ~]# chown mfs.mfs /mnt/chunk1/ -R   #其中mfs用户和组是安装完软件之后,自动创建的,不需要我们手动建立。


[root@server3 ~]# mkdir /mnt/chunk2   #该目录随意建在哪个目录下,并且该目录的名字随意给
[root@server3 ~]# chown mfs.mfs /mnt/chunk2 -R 

 

4、在配置文件中注明作为chunkserver的目录

[root@server2 ~]# vim /etc/mfs/mfshdd.cfg   #在文件的最后一行,添加如下的内容
 35 
 36 /mnt/chunk1

[root@server3 ~]# vim /etc/mfs/mfshdd.cfg   #在文件的最后一行,添加如下的内容
 35 
 36 /mnt/chunk2

 

5、开启服务,并查看端口

[root@server2 ~]# mfsc   #利用两次tab键补全查看mfs的命令
mfschunkserver  mfschunktool    mfscsstatsdump 

[root@server2 ~]# mfschunkserver   #开启mfschunkserver服务(在哪个目录下执行该命令都可以)
open files limit has been set to: 16384
working directory: /var/lib/mfs
lockfile created and locked
setting glibc malloc arena max to 8
setting glibc malloc arena test to 1
initializing mfschunkserver modules ...
hdd space manager: path to scan: /mnt/chunk1/
hdd space manager: start background hdd scanning (searching for available chunks)
main server module: listen on *:9422
no charts data file - initializing empty charts
mfschunkserver daemon initialized properly

[root@server2 ~]# netstat -antulpe
tcp        0      0 0.0.0.0:9422            0.0.0.0:*               LISTEN      997        23528      2073/mfschunkserver 


[root@server3 ~]# mfschunkserver   #开启mfschunkserver服务(在哪个目录下执行该命令都可以)
open files limit has been set to: 16384
working directory: /var/lib/mfs
lockfile created and locked
setting glibc malloc arena max to 8
setting glibc malloc arena test to 1
initializing mfschunkserver modules ...
hdd space manager: path to scan: /mnt/chunk2/
hdd space manager: start background hdd scanning (searching for available chunks)
main server module: listen on *:9422
no charts data file - initializing empty charts
mfschunkserver daemon initialized properly

[root@server3 ~]# netstat -antulpe
tcp        0      0 0.0.0.0:9422            0.0.0.0:*               LISTEN      997        23245      2067/mfschunkserver 


#在server1端查看server2端(chunkserver)和server3端(chunkserver)与server1端的9420端口建立的连接
[root@server1 mfs]# netstat -antulpe
tcp        0      0 172.25.83.1:9420        172.25.83.2:59820       ESTABLISHED 994        65552      5699/mfsmaster      
tcp        0      0 172.25.83.1:9420        172.25.83.3:35740       ESTABLISHED 994        66189      5699/mfsmaster  
  • 开启moosefs-chunkserver服务之后,server2端会在/mnt/chunk1下生成256个目录,用来存放客户端的数据(server3端同理)

 

此时浏览器刷新页面:

应该可以看见这个 MooseFS 系统的全部信息,包括主控 master 和存储服务 chunkserver

 

配置物理机(client):

 

1、从server1端拷贝moosefs-client对应的rpm包,并进行安装

[root@server1 x86_64]# scp moosefs-client-3.0.80-1.x86_64.rpm root@172.25.83.83:
[root@foundation83 ~]# yum install moosefs-client-3.0.80-1.x86_64.rpm -y

[root@server1 ~]# netstat -antulpe   #在server1端(mfsmaster)查看客户端与mfsmaster端的9421端口建立的连接
tcp        0      0 172.25.83.1:9421        172.25.83.83:35564      ESTABLISHED 994        71576      5699/mfsmaster      

 

 

2、做域名解析(该域名解析必须是mfsmaster。)

[root@foundation83 ~]# vim /etc/hosts
172.25.83.1 mfsmaster

 

3、在配置文件中指明挂载点

[root@foundation83 ~]# cd /etc/mfs/
[root@foundation83 mfs]# vim mfsmount.cfg   #在文件的最后添加17行写的内容
 14 # Example:
 15 #
 16 # /mnt/mfs
 17 /mnt/mfs

 

4、建立挂载目录,并进行挂载

[root@foundation83 ~]# mkdir /mnt/mfs   #建立挂载目录
[root@foundation83 ~]# mfsmount   #执行mfsmount命令,可以直接挂载(在哪个目录下执行该命令都可以)
mfsmaster accepted connection with parameters: read-write,restricted_ip,admin ; root mapped to root:root
[root@foundation83 ~]# df
Filesystem                         1K-blocks     Used Available Use% Mounted on
mfsmaster:9421                      35622912  3039936  32582976   9% /mnt/mfs

 

5、建立文件测试

在 MFS 挂载点下创建两个目录,并设置其文件存储份数

[root@foundation83 ~]# cd /mnt/mfs/
[root@foundation83 mfs]# ls
[root@foundation83 mfs]# mkdir dir1   #必须在挂载目录中(这里是/mnt/mfs)建立
[root@foundation83 mfs]# mkdir dir2   #必须在挂载目录中(这里是/mnt/mfs)建立
[root@foundation83 mfs]# mfs   #利用两次tab键补全查看mfs的命令
mfsappendchunks   mfsdirinfo        mfslistsclass     mfsseteattr
mfscheckfile      mfsfileinfo       mfsmakesnapshot   mfssetgoal
mfscopyeattr      mfsfilepaths      mfsmount          mfssetquota
mfscopygoal       mfsfilerepair     mfsrgetgoal       mfssetsclass
mfscopyquota      mfsgeteattr       mfsrgettrashtime  mfssettrashtime
mfscopysclass     mfsgetgoal        mfsrmsnapshot     mfstools
mfscopytrashtime  mfsgetquota       mfsrsetgoal       mfsxchgsclass
mfsdeleattr       mfsgetsclass      mfsrsettrashtime  
mfsdelquota       mfsgettrashtime   mfsscadmin        
[root@foundation83 mfs]# mfsgetgoal dir1   #获取dir1目录中文件存储份数
dir1: 2
[root@foundation83 mfs]# mfsgetgoal dir2   #获取dir2目录中文件存储份数
dir2: 2
[root@foundation83 mfs]# mfssetgoal -r 1 dir1   #设置在dir1目录中文件存储份数为一个(以示区分),默认是两个。
dir1:
 inodes with goal changed:                       1
 inodes with goal not changed:                   0
 inodes with permission denied:                  0

注意:对一个目录设定 “goal”,此目录下的新创建文件和子目录均会继承此目录的设定,但不会改变已经存在的文件及目录的 copy 份数。但使用-r 选项可以更改已经存在的 copy 份数。(这就是mfsgetgobal  dir1与mfsgetgobal  -r  dir1的区别)

#拷贝/etc/passwd这份文件分别到两个目录上
[root@foundation83 mfs]# cp /etc/passwd dir1/
[root@foundation83 mfs]# cp /etc/passwd dir2/
[root@foundation83 mfs]# mfsfileinfo dir1/passwd    #查看dir1目录下的passwd文件信息,可以看到dir1目录下的文件存储份数是1。
dir1/passwd:
	chunk 0: 0000000000000001_00000001 / (id:1 ver:1)
		copy 1: 172.25.83.2:9422 (status:VALID)
[root@foundation83 mfs]# mfsfileinfo dir2/passwd    #查看dir2目录下的passwd文件信息,可以看到dir2目录下的文件存储份数是2。
dir2/passwd:
	chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
		copy 1: 172.25.83.2:9422 (status:VALID)
		copy 2: 172.25.83.3:9422 (status:VALID)
#验证mfs分布式文件系统中一个block的大小为64M
[root@foundation83 mfs]# dd if=/dev/zero of=dir1/bigfile bs=1M count=65
65+0 records in
65+0 records out
68157440 bytes (68 MB) copied, 0.644724 s, 106 MB/s
[root@foundation83 mfs]# mfsfileinfo dir1/bigfile 
dir1/bigfile:
	chunk 0: 0000000000000005_00000001 / (id:5 ver:1)
		copy 1: 172.25.83.2:9422 (status:VALID)
	chunk 1: 0000000000000006_00000001 / (id:6 ver:1)
		copy 1: 172.25.83.3:9422 (status:VALID)
[root@foundation83 mfs]# dd if=/dev/zero of=dir1/bigfile2 bs=1M count=64
64+0 records in
64+0 records out
67108864 bytes (67 MB) copied, 0.59636 s, 113 MB/s
[root@foundation83 mfs]# mfsfileinfo dir1/bigfile2
dir1/bigfile2:
	chunk 0: 0000000000000007_00000001 / (id:7 ver:1)
		copy 1: 172.25.83.2:9422 (status:VALID)
#演示其中一个mfschunkserver服务挂掉的情况(这里演示server2挂掉的情况。dir1/passwd存储在server2端,dir2/passwd存储在server2端和server3端)
[root@server2 ~]# mfschunkserver stop   #停掉server2端的mfschunkserver服务。此时在server2端查看端口,已经看不到9422端口。在server1端查看端口,已经看不到server2和server1的9420端口建立的连接
sending SIGTERM to lock owner (pid:2294)
waiting for termination terminated
[root@foundation83 mfs]# mfsfileinfo dir1/passwd   #我们可以看到dir1/passwd文件的存储收到了影响,而dir2/passwd文件的存储并没有收到任何影响
dir1/passwd:
	chunk 0: 0000000000000001_00000001 / (id:1 ver:1)
		no valid copies !!!
[root@foundation83 mfs]# mfsfileinfo dir2/passwd 
dir2/passwd:
	chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
		copy 1: 172.25.83.3:9422 (status:VALID)

[root@server2 ~]# mfschunkserver   #启动mfschunkserver服务,以免影响后续的实验

 

6、恢复垃圾箱文件

[root@foundation83 mfs]# rm -rf dir1/passwd
[root@foundation83 mfs]# mfsgettrashtime dir1   #文件删除后存放在"垃圾箱"中的时间称为隔离时间,这个时间可以用"mfsgettrashtime"命令来查看,用"mfssettrashtime"命令来设置,单位为秒,默认为 86400秒。
dir1: 86400


#86400s这个时间是有mfsmaster的配置文件决定的
[root@server1 ~]# cd /etc/mfs/
[root@server1 mfs]# ls
mfsexports.cfg  mfsexports.cfg.sample  mfsmaster.cfg  mfsmaster.cfg.sample  mfstopology.cfg  mfstopology.cfg.sample
[root@server1 mfs]# vim mfsexports.cfg
 41 #  86400 = 86400 seconds = 1 day
[root@foundation83 mfs]# mkdir /mnt/mfsmeta   #该目录的位置随意给,该目录的名字也随意给
[root@foundation83 mfs]# mfsmount -m /mnt/mfsmeta   #挂载MFSMETA文件系统,它包含目录trash (包含仍然可以被还原的删除文件的信息)和trash/undel(用于获取文件)。把删除的文件,移到trash/undel 下,就可以恢复此文件。
mfsmaster accepted connection with parameters: read-write,restricted_ip
[root@foundation83 mfs]# mount   #该挂载信息,通过df命令是看不到的,只能通过mount命令查看
mfsmaster:9421 on /mnt/mfsmeta type fuse.mfsmeta (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other)
[root@foundation83 mfs]# cd /mnt/mfsmeta/
[root@foundation83 mfsmeta]# ls
sustained  trash
[root@foundation83 mfsmeta]# cd trash/   #进入trash目录,该目录下有很多文件
[root@foundation83 trash]# find -name *passwd*   #查看要查找的文件passwd所在的位置
./006/00000006|dir1|passwd
[root@foundation83 trash]# cd 006
[root@foundation83 006]# ls
00000006|dir1|passwd  undel
[root@foundation83 006]# mv 00000006\|dir1\|passwd undel/   #将需要恢复的文件移动到undel目录下,注意书写格式

成功恢复

[root@foundation83 006]# cd /mnt/mfs/dir1/
[root@foundation83 dir1]# ls
bigfile  bigfile2  passwd

 

至此MFS分布式文件系统的安装与部署也就完成了。

 

下面演示server1端(mfsmaster端)的mfsmaster服务挂掉之后,如何恢复的案例?

1、正常关闭mfsmaster服务(利用stop命令)

[root@server1 ~]# mfsmaster stop   #在server1端使用stop命令正常关闭mfsmaster服务
sending SIGTERM to lock owner (pid:5699)
waiting for termination terminated
[root@foundation83 ~]# df   #此时客户端使用df命令会一直处于卡顿状态,除非mfsmaster服务开启(同理只要访问/mnt/mfs目录以及/mnt/mfs目录中的文件,就会出现卡顿状态)


[root@server1 ~]# mfsmaster   #在server1端开启mfsmaster服务
[root@foundation83 ~]# df   #此时客户端使用df命令,会出现相应的结果,不会再卡顿
Filesystem                         1K-blocks     Used Available Use% Mounted on
/dev/mapper/rhel_foundation84-root 111491904 80716440  30775464  73% /
devtmpfs                             2828156        0   2828156   0% /dev
tmpfs                                2841788      552   2841236   1% /dev/shm
tmpfs                                2841788     9112   2832676   1% /run
tmpfs                                2841788        0   2841788   0% /sys/fs/cgroup
/dev/sda2                            1038336   143980    894356  14% /boot
/dev/loop0                           3654720  3654720         0 100% /var/www/html/rhel7.0
tmpfs                                 568360       36    568324   1% /run/user/1000
mfsmaster:9421                      17811456  1551424  16260032   9% /mnt/mfs

 

2、非正常关闭mfsmaster服务(利用kill命令)

#在使用kill命令杀掉mfsmaster服务对应的进程之前,我们先来了解下面的内容
[root@server1 ~]# cd /var/lib/mfs/   #当mfsmaster服务开启时,/var/lib/mfs目录中的内容如下
[root@server1 mfs]# ll
total 3620
-rw-r----- 1 mfs mfs      26 Apr  8 16:57 changelog.1.mfs
-rw-r----- 1 mfs mfs    1716 Apr  8 16:52 changelog.3.mfs
-rw-r----- 1 mfs mfs    2407 Apr  8 15:58 changelog.4.mfs
-rw-r----- 1 mfs mfs     180 Apr  8 12:45 changelog.7.mfs
-rw-r----- 1 mfs mfs     317 Apr  5 00:41 changelog.8.mfs
-rw-r----- 1 mfs mfs    3994 Apr  8 17:00 metadata.mfs.back
-rw-r----- 1 mfs mfs    3994 Apr  8 16:56 metadata.mfs.back.1
-rw-r--r-- 1 mfs mfs       8 Apr  4 23:44 metadata.mfs.empty
-rw-r----- 1 mfs mfs 3672832 Apr  8 16:56 stats.mfs
[root@server1 mfs]# mfsmaster stop   #关闭mfsmaster服务
sending SIGTERM to lock owner (pid:28798)
waiting for termination
[root@server1 mfs]# ll   #当mfsmaster服务关闭时,/var/lib/mfs目录中的内容如下(有metadata.mfs这个文件,这个文件是开启mfsmaster服务时,必备的文件。如果没有该文件,那么mfsmaster服务也就起不来了)
total 3620
-rw-r----- 1 mfs mfs      26 Apr  8 16:57 changelog.2.mfs
-rw-r----- 1 mfs mfs    1716 Apr  8 16:52 changelog.4.mfs
-rw-r----- 1 mfs mfs    2407 Apr  8 15:58 changelog.5.mfs
-rw-r----- 1 mfs mfs     180 Apr  8 12:45 changelog.8.mfs
-rw-r----- 1 mfs mfs     317 Apr  5 00:41 changelog.9.mfs
-rw-r----- 1 mfs mfs    3994 Apr  8 17:00 metadata.mfs
-rw-r----- 1 mfs mfs    3994 Apr  8 17:00 metadata.mfs.back.1
-rw-r--r-- 1 mfs mfs       8 Apr  4 23:44 metadata.mfs.empty
-rw-r----- 1 mfs mfs 3672832 Apr  8 17:00 stats.mfs
[root@server1 mfs]# mfsmaster   #开启mfsmaster服务
[root@server1 mfs]# mfsmaster status
mfsmaster pid: 29364
[root@server1 mfs]# kill -9 29364   #杀掉mfsmaster服务对应的进程号29364
[root@server1 mfs]# ll   #因为是非正常关闭mfsmaster服务,所以/var/lib/mfs目录下,不会生成用于启动mfsmaster服务的文件metadata.mfs
total 3620
-rw-r----- 1 mfs mfs      26 Apr  8 16:57 changelog.2.mfs
-rw-r----- 1 mfs mfs    1716 Apr  8 16:52 changelog.4.mfs
-rw-r----- 1 mfs mfs    2407 Apr  8 15:58 changelog.5.mfs
-rw-r----- 1 mfs mfs     180 Apr  8 12:45 changelog.8.mfs
-rw-r----- 1 mfs mfs     317 Apr  5 00:41 changelog.9.mfs
-rw-r----- 1 mfs mfs    3994 Apr  8 17:00 metadata.mfs.back
-rw-r----- 1 mfs mfs    3994 Apr  8 17:00 metadata.mfs.back.1
-rw-r--r-- 1 mfs mfs       8 Apr  4 23:44 metadata.mfs.empty
-rw-r----- 1 mfs mfs 3672832 Apr  8 17:00 stats.mfs
[root@server1 mfs]# mfsmaster   #此时启动mfsmaster服务,会报错
open files limit has been set to: 16384
working directory: /var/lib/mfs
lockfile created and locked
initializing mfsmaster modules ...
exports file has been loaded
topology file has been loaded
loading metadata ...
can't find metadata.mfs - try using option '-a'
init: metadata manager failed !!!
error occurred during initialization - exiting
[root@server1 mfs]# mfsmaster -a   #根据提示,使用-a选项
[root@server1 mfs]# mfsmaster status   #此时mfsmaster服务的状态是running
mfsmaster pid: 29612
[root@server1 mfs]# netstat -antulpe   #同理,相应的端口也已经打开
tcp        0      0 0.0.0.0:9419            0.0.0.0:*               LISTEN      994        284571     29612/mfsmaster     
tcp        0      0 0.0.0.0:9420            0.0.0.0:*               LISTEN      994        284572     29612/mfsmaster     
tcp        0      0 0.0.0.0:9421            0.0.0.0:*               LISTEN      994        284573     29612/mfsmaster         
tcp        0      0 0.0.0.0:9425            0.0.0.0:*               LISTEN      0          58780      5656/python         
mfs-1.6.27-1.tar.gz 压缩文件, 解包大小为 3,673,037 字节 2013.3.24 发布版 --------------------------------------------------------- MooseFS is an Open Source, easy to deploy and maintain, distributed, fault tolerant file system for POSIX compliant OSes. MooseFS uses FUSE (http://fuse.sourceforge.net/). MooseFS v1.5 - 1.6 ============ Date of first public release: 2008-05-30 Project web site: http://www.moosefs.com/ Installation and using MooseFS: http://www.moosefs.org/reference-guide.html Sourceforge project site with source repository: http://sourceforge.net/projects/moosefs/ Reporting bugs: bugs@moosefs.com General contact address: contact@moosefs.com Copyright ========= Copyright 2005-2011 Gemius SA. MooseFS is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3. MooseFS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with MooseFS. If not, see <http://www.gnu.org/licenses/>. Compatibility matrix ==================== (tested Operating Systems only): Client Master Chunkserver Linux 2.6.x (i386): YES YES YES FreeBSD 5.x (i386+amd64): NO YES YES FreeBSD 6.x (i386+amd64): YES YES YES FreeBSD 7.x (i386+amd64): YES YES YES FreeBSD 8.x (i386+amd64): YES YES YES MacOS X 10.3 (Panther, ppc): NO YES YES MacOS X 10.4 (Tiger, ppc+i386): YES YES YES MacOS X 10.5 (Leopard, ppc+i386): YES YES YES MacOS X 10.6 (Snow Leopard): YES YES YES Solaris 10 (sparc): NO YES YES OpenSolaris (i386): YES YES YES
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值