存储调研:MooseFS分布式文件系统体系结构
Posted 土著部落
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了存储调研:MooseFS分布式文件系统体系结构相关的知识,希望对你有一定的参考价值。
1. 简介
1.1.关于MooseFS
MooseFS是一个容错的网络分布式文件系统。将数据分散在多个物理服务器中,但对于用户其实是作为一个可见资源。对于标准的文件操作MooseFS充当类似Unix操作系统中的文件系统:
1、层次结构(目录树)
2、POSIX文件存储属性(权限,最后访问和修改时间)
3、支持特殊文件(块设备和字符设备,管道和套接字)
4、符号链接(指向目标文件的文件指针,目标文件不一定在MooseFS上)和硬链接(MooseFS相同的数据文件可以有不同的文件名)
1.2.MooseFS的特性
1、高可靠性(分布在不同的电脑,可以存储的数据的多个副本拷贝)
2、通过安装新的计算机/磁盘容量进行动态扩展
3、删除的文件保留一个可配置的一段时间内(文件系统级别的“垃圾桶”)
4、在文件被读写时都能保持的一致性快照
1.3.体系架构
MooseFS由四部分组成:
管理服务器(master server):单机管理整个文件系统,存储为每个文件元数据(大小,属性和文件的位置信息,包括非常规文件的所有信息,例如目录,插座,管道和设备等)。
数据服务器(chunk servers):任何数量的数据服务器上存储文件的数据,并且同步数据(如果某文件在一个以上的服务器上存在的话)。
元数据备份服务器(metalogger server):任何数量的服务器,所有这些存储元数据变动记录,定期下载主元数据文件;用于主服务器宕机后,提升管理服务器的有效价值。
访问MooseFS中文件的客户机:任意数量的机器,使用mfsmount过程与管理服务器进行通信(接收和修改文件元数据)和块服务器(实际的文件数据交换)。
mfsmount是基于FUSE机制(文件系统用户空间的),所以MooseFS针对所有采用FUSE实现机制的操作系统(Linux, FreeBSD, MacOS X等)都是有效的。
元数据存储在管理服务器的内存中,同时还保存至磁盘(定期更新二进制文件,并且立即更新增量日志)。作为日志的主二进制文件也将被同步到metaloggers(如果存在的话)。
文件数据被以最大64MB划分到各个片段(块)中。每个块本身是选中的文件在数据服务器上(chunkservers)。
高可靠性是通过许多不同的数据适当的服务器配置为实现“目标”值(保持的份数)设置为给定的文件。
1.4.系统如何工作
客户机上的所有文件操作,都需要挂接至MooseFS完成,这与挂接到其他文件系统是一样的。操作系统内核将所有的文件操作都转换为FUSE模型,与mfsmount过程通讯。mfsmount过程通讯完成通过管理服务器和数据服务器完成。这整个过程对用户是全部透明的。
mfsmount与管理服务器进行通信,每个文件的元数据上的操作需要:
l 创建文件
l 删除文件
l 读目录
l 读取、修改文件属性
l 改变文件大小
l 开始读写数据
l MFSMETA上特殊文件的任何访问
mfsmount使用目录连接到存储相关文件块的数据服务器。当写文件时,完成器写操作之后,管理服务器接收来自mfsmount接收修改文件长度及最后修改时间的信息。
此外,数据服务器(chunk servers)相互连通,互相复制数据,以达到在不同的机器上的适当数量的文件的副本。
1.5.容错
管理命令允许系统管理员指定的“目标”,或副本应保持拷贝数,每个目录或每个文件级别上。设置目标文件到一个以上的数据服务器提供容错。当文件数据被存储在许多副本(在一个以上的数据服务器),该系统是对暂时的一个单一的数据服务器的网络中断有抵抗力的。
这当然不是指文件被设置为1,在这种情况下,该文件今后将只存在上一个单一的数据“服务器中,而不论如何有多少的服务器在数据系统中所部署。
特别重要的文件可能有他们的目标设定为两个以上,这将使这些文件能抵抗多个服务器的细分一次高的数字。
一般设置副本的数量应该是超过预期的数量无法访问或无序服务器。
在一个单一的数据服务器发生故障或从网络断开的情况下,将文件存储在它里面的至少两个拷贝,将保持从另一个数据服务器访问。另一种可访问的数据服务器上,将要复制的数据,现在是根据其目标,再一次提供所需的份数。
应当指出,如果可用的服务器的数目是低于一个给定的文件的“目标”设置为所需的份数不能被保留。同样,如果有相同数量的服务器作为当前设定的目标,如果一个数据服务器已达到其容量的100%,这将是无法开始持有一个文件的副本,现在的目标阈值以下,因为另一个数据服务器进入脱机状态。在这些情况下,一个新的数据服务器应尽快连接到系统的,以保持所需数量的文件的副本。
在任何时候一个新的数据服务器可以连接到该系统。新的容量将立即成为可用于存储新文件,或担任其他数据服务器的文件复制副本。
管理工具存在状态查询,在文件系统中的文件,以确定是否目前的任何文件都低于他们的目标(设置打印份数)。此实用程序也可以用来改变目标设定需要。
数据片段存储在块中的版本管理,所以重新连接数据服务器与旧的数据副本(如它一直离线一段时间),不会导致文件变得语无伦次。数据服务器将同步发行的当前版本,其中过时的块将被删除,自由空间将被重新分配给持有新块的块。
故障的客户机(mfsmount过程运行)的文件系统的一致性,不会有任何的影响,或对其他客户的业务。在最坏的情况下,尚未从失败的客户端计算机发送的数据可能会丢失。
1.6.平台
MooseFS对于每个兼容FUSE实现的操作系统都是有效可用的:
Linux
FreeBSD
OpenSolaris
MacOS X
metalogger服务器和块服务器的主服务器上,也可以运行在Solaris或Windows上使用Cygwin。不幸的是,FUSE不会有可能在这些操作系统挂载文件系统。
2. MFS概述及特性
1、Free(GPL)
2、通用文件系统,不需要修改上层应用就可以使用。
3、可以在线扩容,体系架构可伸缩性极强。
4、部署简单
5、体系架构高可用,所有组件无单点故障
6、文件对象高可用,可设置任意的文件冗余程度(提供比raid1+0更高的冗余级别),而绝对不会影响读或者写的性能
7、提供Windows回收站的功能,提供类似oralce 的闪回等高级dbms的即时回滚特性
8、提供类似Java语言的 GC(垃圾回收)
9、提供netapp,emc,ibm等商业存储的snapshot特性
10、googlefilesystem的一个c实现
11、提供web gui监控接口
12、提高随机读或写的效率
13、提高海量小文件的读写效率
3. MFS 工作原理和设计架构
服务器类别 |
作用 |
管理服务器 |
负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷贝 |
元数据日志服务器 |
负责备份master 服务器的变化日志文件,文 |
数据存储服务器 (chunkservers) |
负责连接管理服务器,听从管理服务器调度, |
客户机挂载使用 |
通过fuse 内核接口挂接远程管理服务器上所 |
4. 网络示意图
5. MFS数据读写
5.1.读数据
1、client当需要一个数据时,首先向master server发起查询请求;
2、管理服务器检索自己的数据,获取到数据所在的可用数据服务器位置ip|port|chunkid;
4、客户端向具体的数据服务器发起数据获取请求;
5、数据服务器将数据发送给客户端。
5.2.写数据
2、管理服务器根据写文件的元数据信息,到数据服务器创建新的数据块;
3、数据服务器返回创建成功的消息;
5、客户端向数据服务器写数据;
6、数据服务器返回给客户端写成功的消息;
7、客户端将此次写完成结束信号和一些信息发送到管理服务器来更新文件的长度和最后修改时间
5.3.修改文件
1、客户端有修改文件内容时,首先向Master发送操作信息;
2、Master申请新的块给.swp文件,
3、客户端关闭文件后,会向Master发送关闭信息;
4、Master会检测内容是否有更新,若有,则申请新的块存放更改后的文件,删除原有块和.swp文件块;
5、若无,则直接删除.swp文件块。
5.4.文件重命名
1、客户端重命名文件时,会向Master发送操作信息;
2、Master直接修改元数据信息中的文件名;返回重命名完成信息。
5.5.遍历文件
1、遍历文件不需要访问chunkserver,当有客户端遍历请求时,向Master发送操作信息;
2、Master返回相应元数据信息;
3、客户端接收到信息后显示
6. 可能的瓶颈
1、master本身的性能瓶颈。(不太恰当的比方:类似mysql 主从复制,从的可以扩展,主的不容易扩展)
短期对策:按业务切分1. 体系架构存储文件总数的可预见的上限。(MFS把文件系统的结构缓存到master的内存中,个人认为文件越多,master的内存消耗越大,8g对应2500kw的文件数,2亿文件就得64GB内存 )。
短期对策:按业务切分2. 单点故障解决方案的健壮性。
您的关注,是我前进的动力!
以上是关于存储调研:MooseFS分布式文件系统体系结构的主要内容,如果未能解决你的问题,请参考以下文章