MFS介绍
MFS的优点
MFS文件系统结构
MFS的监控
MFS和HADOOP的比较
MFS工作原理
MFS的双机方案
MFS介绍
MFS的优点
MFS和HADOOP的比较
MooseFS (MFS) | Ceph | GlusterFS | Lustre | HadoopHDFS | |
MetadataServer | 单个MDS,存在单点故障和瓶颈 | 多个MDS,不存在单点故障和瓶颈。 | 无,不存在单点故障。靠运行在各个节点上的动态算法来代替MDS,不需同步元数据,无硬盘I/O瓶颈。 | 双MDS(互相备份)。MDS不可以扩展,存在瓶颈。 | 单个MDS,存在单点故障和瓶颈 |
FUSE | 支持 | 支持 | 支持 | 支持 | 不支持,特定API |
访问接口 | POSIX | POSIX | POSIX | POSIX/MPI | 支持部分POSIX |
文件分布 | 文件被分片,数据块保存在不同的存储服务器上 | 文件被分片,保存在不同的存储服务器上。 | AFR相当于RAID1,每个文件都被复制到多个存储节点上。Stripe相当于RAID0,文件被分片,数据被条带化到各个存储节点上。 Translators可以组合AFR和stripe | 可以把大文件分片并以类似RAID0的方式分散存储在多个存储节点上。 | 文件被分片,数据块保存在不同的存储服务器上 |
冗余保护/副本 | 多副本 | 多副本 | 镜像 | 无,由存储节点上的RAID1或RAID5/6提供可靠性。 | 多副本 |
扩展性 | 增加存储服务器,可以提高容量和文件操作性能 | 可以增加元数据服务器和存储节点。 | 容量可扩展 | 可增加存储节点,提高容量可文件操作性能 | 容量可扩展 |
安装/部署 | 简单 | 简单 | 简单 | 复杂。而且Lustre严重依赖内核,需要重新编译内核。 | 简单 |
适合场景 | 大量小文件读写 | 小文件 | 适合大文件 | 大文件读写 | 大文件读写 |
应用/优缺点 | 国内较多,实施简单,但是存在单点故障 | 不稳定,目前还在实验阶段 | 较多用户使用,无元数据服务器,堆栈式架构,具有线性横向扩展能力。由于没有元数据服务器,因此增加了客户端的负载,占用相当的CPU和内存。 | HPC领域,很成熟、很庞大 | 使用较多,主要使用在MAPREDUCE方面 |
==============
MFS工作原理
1.client当需要一个数据时,首先向masterserver发起查询请求;
2.管理服务器检索自己的数据,获取到数据所在的可用数据服务器位置ip|port|chunkid,发送给客户端;
3.客户端向具体的数据服务器发起数据获取请求;
4.数据服务器将数据发送给客户端;
MFS的数据存储格式:
Chunk文件名格式为{“chunk_%x_%x.mfs”,chunkid ,version},文件头部长度为5120字节, 前1024字节包括ChunkID, 版本信息等元数据信息,1024 ~ 5120字节是block checksum,Chunk包含1K个block,每个block有4个字节CRC校验,总共占用4096字节,5120字节之后才是Chunk数据
1.当客户端有数据写需求时,首先向管理服务器提供文件元数据信息请求存储地址(元数据信息如:文件名|大小|份数等);
2.管理服务器根据写文件的元数据信息,到数据服务器创建新的数据块;
3.数据服务器返回创建成功的消息给管理服务器;
4.管理服务器将数据服务器的地址返回给客户端(chunkIP|port|chunkid);
5. Client与第一个ChunkServer建立连接,发送包含ChunkServer链信息的写请求和数据;
6.数据服务器调用写本地Chunk文件,同时 forward写请求到下一个Chunk Server,处理完之后返回给客户端写成功的消息;
7.客户端将通知Master写操作完成,Master记录相关的日志,并更新文件的长度和最后修改时间及释放ChunkLease。
1.客户端有删除操作时,首先向Master发送删除信息
2.Master定位到相应元数据信息进行删除,并将chunk server上块的删除操作加入队列异步清理;
3.响应客户端删除成功的信号
1.客户端有修改文件内容时,首先向Master发送操作信息
2.Master申请新的块给.swp文件,
3.客户端关闭文件后,会向Master发送关闭信息;
4.Master会检测内容是否有更新,若有,则申请新的块存放更改后的文件,删除原有块和.swp文件块;
5.若无,则直接删除.swp文件块。
==============
MFS的双机方案
==============
MFS测试
MFS虚机压力测试
MFS虚机稳定性测试
MFS双机测试
============
MFS虚机压力测试
测试环境:1台MASTER服务器,1台日志服务器,2台数据存储服务器
测试方法:采用系统命令(time dd if= of= bs=1024k count=500)
=========
MFS虚机稳定性测试
========
MFS双机测试