1、MFS
MooseFS是一个具有冗余容错功能的分布式网络文件系统,它将数据分别存放在多个物理服务器或单独磁盘或分区上,确保一份数据有多个备份副本,然而对于访问MFS的客户端或者用户来说,整个分布式网络文件系统集群看起来就像一个资源一样,从其对文件系统的情况看MooseFs就相当于UNIX的文件系统。
2、MFS特性
a、高可靠性:每一份数据可以设置多个备份(多分数据),并可以存储在不同的主机上;
b、高可扩展性:可以很轻松的通过增加主机的磁盘容量或增加主机数量来动态扩展整个文件系统的存储量;
c、高可容错性:我们可以通过对mfs进行系统设置,实现当数据文件被删除后的一段时间内,依旧存放于主机的回收站中,以备误删除恢复数据;
d、高数据一致性:即使文件被写入、访问时,我们依然可以轻松完成对文件的一致性快照;
3、MFS缺点
a、Master目前是单点,虽然会把数据信息同步到备份服务器,但是恢复需要时间(这里指的社区免费版,企业版可提供高可用方案,社区版可通过keepalive+drdb实现)
b、Master服务器对主机的内存要求略高(读写存储在内存)
c、默认Metalogger复制元数据时间较长(即完整备份,可调整)
内存使用问题:
处理一百万个文件chunkserver,大概需要300M的内存空间。以此类推,如果要处理1个亿的文件chunkserver,大概需要30G内存空间。
4、MFS适用场景
a、大规模高并发的线上数据存储及访问(小文件、大文件都适合)
b、大规模的数据处理,如日志分析,小文件强调性能不用HDFS
5、MFS结构及原理
MFS Master 存储元数据信息
chunkserver存储真实数据的服务
6、组件说明
管理服务器managing server 简称master:
这个组件的角色是管理整个mfs文件系统的主服务器,除了分发用户请求外,还用来存储整个文件系统中每个数据文件的metadata信息,metadate(元数据)信息包括文件(也可以是目录、socket、管道、块设备等)的大小,属性,文件的位置路径等
元数据备份服务器Metadata backup server简称metalogger:
这个组件的作用是备份管理服务器master的变化的metadate信息日志文件,文件类型为changelog_ml.*.mfs。以便于在管理服务器出问题时,可以经过简单的操作即可让新的主服务器进行工作。
7、遍历访问过程
读取过程
删除过程
修改过程
增加文件过程
8、存储文件变更
Master记录着管理信息,比如:文件路径|大小|存储的位置(IP、port、chunkid)|份数|时间等,元数据信息存在于内存中,会定期写入metadata.mfs.back文件中,定期同步到metalogger,操作实时写入changelog.*.mfs,实时同步到metalogger中。Master启动将metadata.mfs载入内存,重命名为metadata.mfs.back文件。
文件以chunk大小存储,每chunk最大为64M,小于64M的,该chunk的大小即为该文件大小(实际chunk文件略大于时间文件),超过64M的文件将被切分,以每一份(chunk)的大小不超过64M为原则;块的生成遵循规则:目录循环写入(00-FF 256个目录循环,step为2)、chunk文件递增生成、大文件切分目录连续
Chunkserver上的剩余存储空间要大于1GB,新的数据才会被允许写入,否则,你会看到No space left on device的提示,实际中,测试发现当磁盘使用率达到95%左右的时候,就已经不能写入了,当时可以空间为1.9GB
文件可以有多份copy,当goal为1时,文件会被随机存到一台chunkserver上,当goal的数大于1时,copy会由master调度保存到不同的chunkserver上(如goal为2会在写入一台chunkserver后再copy到另一台chunkserver上做冗余并保持两个,如果chunkserver只有一台,则只保存一份数据),goal的大小不要超过chunkserver的数量,否则多次的copy,不会有chunkserver去存