一、MFS简介
-
MooseFS是一款Linux下的开源存储系统,是OpenStack开源云计算项目的子项目之一,被称为对象存储,提供了强大的扩展性、高可靠性和持久性。它能够将文件分布存储于不同的物理机器上,对外却提供的是一个透明的接口的存储资源池。它还具有在线扩展、文件切块存储、节点无单点故障、读写效率高等特点。
-
MFS分布式文件系统由元数据服务器(Master Server)、元数据日志服务器(Metalogger Server)、数据存储服务器(Chunk Server)、客户端(Client)组成。
- 元数据服务器:MFS系统中的核心组成部分,存储每个文件的元数据,负责文件的读写调度、空间回收和在多个chunk server之间的数据拷贝等。目前MFS仅支持一个元数据服务器,因此可能会出现单点故障。针对此问题我们需要用一台性能很稳定的服务器来作为我们的元数据服务器,这样可以降低出现单点故障的概率。
- 元数据日志服务器:元数据服务器的备份节点,按照指定的周期从元数据服务器上将保存元数据、更新日志和会话信息的文件下载到本地目录下。当元数据服务器出现故障时,我们可以从该服务器的文件中拿到相关的必要的信息对整个系统进行恢复。此外,利用元数据进行备份是一种常规的日志备份手段,这种方法在某些情况下并不能完美的接管业务,还是会造成数据丢失。
- 数据存储服务器:负责连接元数据管理服务器,听从元数据服务器的调度,提供存储空间,并为客户端提供数据传输,MooseFS提供一个手动指定每个目录的备份个数。假设个数为n,那么我们在向系统写入文件时,系统会将切分好的文件块在不同的chunk server上复制n份。备份数的增加不会影响系统的写性能,但是可以提高系统的读性能和可用性,这可以说是一种以存储容量换取写性能和可用性的策略。
- 客户端:使用mfsmount的方式通过FUSE内核接口挂接远程管理服务器上管理的数据存储服务器到本地目录上,然后就可以像使用本地文件一样来使用我们的MFS文件系统了。
-
MFS的优点
- 通用文件系统,不需要修改上层应用就可以使用;
- 可以在线扩容,体系架构可伸缩性极强;
- 高可用,可设置任意的文件冗余程度(提供比 raid1+0 更高的冗余级别,而绝对不会影响读或
写的性能,只会加速); - 部署简单;
- 提高随机读或写的效率。
二、MFS工作原理
-
MFS读数据过程:
- MFS客户端向系统的元数据管理服务器提交读取文件的任务请求;
- 元数据服务器检索自己的数据并把数据所存放的位置发给客户端;
- 客户端接收到元数据管理服务器返回的信息后,向已知的数据存储服务器发送数据请求。
-
MFS写数据过程:
- MFS的客户端有数据写需求时,首先向元数据管理服务器提交些文件的任务请求;
- 元数据管理服务器接收到客户端请求后在数据服务器创建新的Chunk文件块;
- 数据服务器将创建成功的消息返回给元数据管理服务器;
- 元数据管理服务器将数据服务器的地址返回给客户端;
- 客户端直接向已知的数据服务器写数据;
- 数据服务器将写文件成功的消息返回给客户端;
- 客户端将此次写完成的信号发送给元数据管理服务器。
三、部署过程
- 实验环境:
主机 | 角色 |
---|---|
server2 | MFS Master |
server3 | MFS Chunkserver |
server9 | MFS Chunkserver |
server10 | MFS Client |
- 安装相关软件,并进行设置
在server2,master节点上
curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo
yum install moosefs-master moosefs-cgi moosefs-cgiserv moosefs-cli -y
在浏览器中访问192.168.0.102:9425
此时还没有chunk server数据结点,所以server这里是空的
在server3和server9,chunk数据结点上
创建存储目录
在配置文件中指定存储路径,并开启服务,并开启moosefs-chunkserver
vim /etc/mfs/mfshdd.cfg
在server9创建存储目录,/mnt/chunk2,然后进行和server3同样的操作
然后刷新浏览器查看server下的数据
在server10client节点进行设置
- 测试使用
在客户端server10上进行操作
mount #查看挂载信息
测试将server9宕机
我们发现data1中的数据不能再访问,因为没有数据副本,访问时会卡住;但是不影响data2的访问,因为它还有一个副本。
- 测试大文件会在数据结点上分开存储