MFS是什么
MFS全称MooseFS,是文件管理系统的抽象层,将用户的数据通过master之后,存储在多个网络存储节点上面,这个过程对于用户来说时透明的,并且MFS具有很强大的网络容错能力;
MFS的特性
- 1.是一个通用的文件系统,不需要商城应用软件提供接口,直接可以进行使用;
- 2.允许在线扩容,伸缩性强大;
- 3.可以设置任意文件的冗余程度,并且不会影响读/写性能;
- 4.可以在执行事件内恢复误删除的文件;
- 5.提供快照功能;
- 6.提供方便的管理界面
MFS的文件系统结构
- managing server:也就是master,用于负责各个数据存储服务器的管理,文件读写调度,文件空间回收,文件误删除恢复,多节点数据拷贝等;
- Metalogger Server:负责备份master 服务器上面特殊的日志文件,用于确保master故障时,进行接管操作,类似于ext3之后支持的日志文件系统的日志作用,文件格式通常为changelog_ml.*.mfs;
- Chunk Server:数据存储服务器,受管理服务器调度,提供实际的数据存储服务,并且在管理服务器的调度下,完成对于数据的操作
- client computers:客户端使用透明的存储方式,完全和本地文件系统一样的使用;
master配置
官网下载有关mfs的rpm包
[root@server11 3.0.97]# ls
moosefs-cgi-3.0.97-1.rhsysv.x86_64.rpm
moosefs-cgiserv-3.0.97-1.rhsysv.x86_64.rpm
moosefs-chunkserver-3.0.97-1.rhsysv.x86_64.rpm
moosefs-cli-3.0.97-1.rhsysv.x86_64.rpm
moosefs-client-3.0.97-1.rhsystemd.x86_64.rpm
moosefs-client-3.0.97-1.rhsysv.x86_64.rpm
moosefs-master-3.0.97-1.rhsysv.x86_64.rpm
moosefs-metalogger-3.0.97-1.rhsysv.x86_64.rpm
yum install moosefs-cgi-3.0.97-1.rhsysv.x86_64.rpm moosefs-cgiserv-3.0.97-1.rhsysv.x86_64.rpm moosefs-master-3.0.97-1.rhsysv.x86_64.rpm
Loaded plugins: product-id, search-disabled-repos, subscription-manager
启动
[root@server11 3.0.97]# /etc/init.d/moosefs-master start
Reloading systemd: [ OK ]
Starting moosefs-master (via systemctl): [ OK ]
[root@server11 3.0.97]# /etc/init.d/moosefs-cgiserv start
Starting moosefs-cgiserv (via systemctl): [ OK ]
[root@server11 3.0.97]# netstat -antulp | grep :9425
tcp 0 0 0.0.0.0:9425 0.0.0.0:* LISTEN 3551/python
[root@server11 3.0.97]# netstat -antulp | grep mfsmaster
tcp 0 0 0.0.0.0:9419 0.0.0.0:* LISTEN 3273/mfsmaster
tcp 0 0 0.0.0.0:9420 0.0.0.0:* LISTEN 3273/mfsmaster
tcp 0 0 0.0.0.0:9421 0.0.0.0:* LISTEN 3273/mfsmaster
访问
chunkserver端配置
域名解析
[root@server12 mnt]# vim /etc/hosts
172.25.1.11 server11 mfsmaster
安装moosefs-chunkserver
[root@server12 mnt]# yum install moosefs-chunkserver-3.0.97-1.rhsysv.x86_64.rpm
建立需要作为chunkserver的目录,并修改所有人,所有组
实验中我们将/mnt/mfs/作为chunkserver,使用根空间,实际生产环境下应该创建目录后,将磁盘挂载在该目录下
[root@server12 ~]# mkdir /mnt/chunk1
[root@server12 ~]# chown mfs.mfs /mnt/chunk1/ -R
[root@server13 ~]# mkdir /mnt/chunk2
[root@server13 ~]# chown mfs.mfs /mnt/chunk2/ -R
在配置文件中注明作为chunkserver的目录
[root@server12 ~]# vim /etc/mfs/mfshdd.cfg
34 /mnt/chunk1
[root@server13 ~]# vim /etc/mfs/mfshdd.cfg
34 /mnt/chunk2
启动
[root@server13 ~]# /etc/init.d/moosefs-chunkserver start
Reloading systemd: [ OK ]
Starting moosefs-chunkserver (via systemctl): [ OK ]
[root@server12 ~]# /etc/init.d/moosefs-chunkserver start
Reloading systemd: [ OK ]
Starting moosefs-chunkserver (via systemctl): [ OK ]
此时浏览器刷新页面:
moosefs-client配置
安装moosefs-client
[root@foundation1 3.0.97]# yum install moosefs-client-3.0.97-1.rhsystemd.x86_64.rpm -y
同样做域名解析,和其他节点相同
[root@foundation1 mfs]# vim /etc/hosts
172.25.1.11 serever11 mfsmaster
[root@foundation12 mfs]# vim mfsmount.cfg
16 /mnt/mfs
[root@foundation1 ~]# mkdir /mnt/mfs
[root@foundation1 ~]# cd /mnt/mfs/
[root@foundation1 mfs]# mfsmount
mfsmaster accepted connection with parameters: read-write,restricted_ip,admin ; root mapped to root:root
[root@foundation1 mfs]# df
mfsmaster:9421 26185728 2717184 23468544 11% /mnt/mfs
建立文件测试
[root@foundation1 mfs]# mkdir dir1 dir2
[root@foundation1 mfs]# mfsgetgoal dir1 ##默认建立的文件,会保存两份,分别在两个chunkserver上
dir1: 2
[root@foundation1 mfs]# mfsgetgoal dir2
dir2: 2
[root@foundation1 mfs]# cp /etc/passwd dir1
[root@foundation1 mfs]# cp /etc/fstab dir2
[root@foundation1 mfs]# mfssetgoal -r 1 dir1 ##设置dir1目录下的文件,只cp一份
dir1:
inodes with goal changed: 2
inodes with goal not changed: 0
inodes with permission denied: 0
[root@foundation1 mfs]# mfsgetgoal dir1
dir1: 1
[root@foundation1 mfs]# mfsfileinfo dir1/passwd ##查看
dir1/passwd:
chunk 0: 0000000000000001_00000001 / (id:1 ver:1)
copy 1: 172.25.1.12:9422 (status:VALID)
[root@foundation1 mfs]# mfsfileinfo dir2/fstab ##查看
dir2/fstab:
chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
copy 1: 172.25.1.12:9422 (status:VALID)
copy 2: 172.25.1.13:9422 (status:VALID)
关闭dir1保存文件的chunkserver
[root@server12 ~]# systemctl stop moosefs-chunkserver
[root@foundation1 mfs]# mfsfileinfo dir1/passwd ##可以查看到看到有这文件,但是不能查看
dir1/passwd:
chunk 0: 0000000000000001_00000001 / (id:1 ver:1)
no valid copies !!!
[root@server12 ~]# systemctl start moosefs-chunkserver ##重新打开chunkserver后文件恢复正常
[root@foundation1 mfs]# mfsfileinfo dir1/passwd
dir1/passwd:
chunk 0: 0000000000000001_00000001 / (id:1 ver:1)
copy 1: 172.25.1.12:9422 (status:VALID)