1. About MooseFS
MooseFS是一个容错分布式文件系统。它将数据分布在多个物理位置(服务器)上,这些物理位置对用户来说是一个资源。对于标准文件操作,MooseFS充当任何其他类似Unix的文件系统:
- 层次结构(目录树)
- 存储POSIX文件属性(权限、上次访问和修改时间)
- 支持特殊文件(块和字符设备、管道和套接字)
- 符号链接(指向目标文件的文件名,不一定在MooseFS上)和 硬链接链接(引用MooseFS上相同数据的不同文件名)
- 可以根据IP地址和/或密码限制对文件系统的访问
MooseFS的显著特点是:
- 高可靠性(数据的多个副本可以存储在单独的物理机器上)
- 容量可通过添加新计算节点/磁盘动态扩展
- 将被删除的文件保留一段可配置的时间(文件系统级别的“垃圾桶”)
- 文件的一致快照,即使在文件被写入/访问时也是如此
1.1 架构
MooseFS由四个组件组成:
- 管理服务器(master server)- 在MooseFS中为一台机器,在MooseFS Pro中为管理整个文件系统、存储每个文件的元数据的可以为任意数量(关于大小、属性和文件位置的信息,包括关于非常规文件系统的所有信息,即目录、套接字、管道和设备)。
- 数据服务器(chunk servers)- 任意数量的存储文件数据的服务器,在他们之间同步数据(若某个文件应该存在于多个文件副本)。
- 元数据备份服务器(metalogger servers)- 任意数量的服务器,所有这些服务器存储元数据更新日志并定期下载主元数据文件。
在MooseFS(非Pro)中,当master server 停止服务时,带有Metalogger的机器可以很容易地设置为master。
在MooseFS Pro中,Metalogger可以设置为提供额外的安全级别。 - 客户端访问(挂载)MooseFS中文件 - 任意数量的计算机使用mfsmount进程与管理服务器通信(接收和修改文件元数据)和chunkservers(交换实际的文件数据)。
mfsmount基于FUSE机制(用户空间中的文件存储),因此MooseFS可用在任何基于FUSE实现的操作系统上(Linux、FreeBSD、MacOS X,等等)。
您可以在http://fuse.sourceforge.net上阅读更多关于FUSE的信息
元数据存储在管理服务器的内存中,并同时保存到磁盘(作为定期更新的二进制文件和立即更新的增量日志)。主二进制文件以及日志同步到元记录器(如果存在)和备用主记录器服务器Pro版本。
文件数据被划分为片段(块),每个片段的最大大小为64 MiB。每个块本身是数据服务器(chunkservers)上选定磁盘上的文件。
高可靠性是通过配置尽可能多的不同的数据服务器来实现的,为给定文件设置的“目标”值(要保留的副本数)。
1.2 系统如何工作
已安装MooseFS的客户端计算机上的所有文件操作与其他文件系统是一样的。操作系统的内核传输所有文件操作到FUSE模块,该模块与mfsmount进程通信。Mfsmount进程随后通过网络与管理服务器和数据服务器通信(块服务器)。整个过程对用户完全透明。
每次需要对文件元数据进行操作时,mfsmount都会与管理服务器进行通信:
- 创建文件
- 删除文件
- 阅读目录
- 阅读和更改属性
- 更改文件大小
- 在开始阅读或写入数据时
- 对MFSMETA特别档案的任何访问
mfsmount直接连接到数据服务器(块服务器)文件的一部分。当写入文件时,在完成写入过程之后,管理服务器接收mfsmount中的信息来更新文件的长度和上次修改时间。
此外,数据服务器(块服务器)彼此通信以将数据复制到不同的机器上,以实现文件的适当数量的副本。
1.3 容错
管理命令允许系统管理员指定“目标”,或应该在每个目录或每个文件级别上维护的副本。将目标设定为更多并且具有多于一个的数据服务器将提供容错。当文件数据存储在多个副本中(在多个数据服务器上),系统可抵抗故障或单个数据服务器的临时网络中断。
这当然不是指“目标”设置为1的文件,在这种情况下,仅存在于单个数据服务器上,而不管系统中部署了多少个数据服务器。
特别重要的文件可能会将其目标设置为大于2的数字,这将允许这些文件能够同时抵抗多个服务器的故障。
通常,可用副本数量的设置应比预期的多一个无法访问或发生故障的服务器数量。
在单个数据服务器经历故障或从网络断开的情况下,其中存储的文件至少有两个副本,将保持从另一个数据服务器访问. 现在处于低于“目标”副本数的数据将被复制到另一个可访问的数据服务器上再次提供所需份数。
应该注意的是,如果可用服务器的数量低于给定的文件“目标”,无法保留所需数量的副本。同样,如果有相同的服务器数量作为当前设定的目标,并且如果数据服务器已达到其容量的100%,由于某一个数据服务器离线了的原因,它将无法保存现在,将低于其目标的文件的副本
在这些情况下,新的数据服务器应尽快连接到系统,为了保持所需数量的文件副本。
新的数据服务器可以随时连接到系统。新容量将立即可用于存储新文件或保存来自其他数据服务器文件的复制副本。
管理实用程序可以查询文件系统中文件的状态,如查询任何文件当前低于其目标(设置副本数)。此实用程序还可以用于根据需要更改目标设置。
存储在块中的数据片段是有版本控制的,因此当拥有旧数据副本的服务器重新连接时(即,它已经离线一段时间),不会导致文件混乱。数据服务器将同步自身以保存块的当前版本,将移除过时的块,并且将重新分配空闲空间以容纳新的大块
客户端计算机(运行mfsmount进程)的故障不会对文件系统的一致性或其他客户端的操作有影响。在最坏的情况下,尚未从发生故障的客户端计算机发送的数据可能会丢失。
1.4平台
MooseFS可用于每个具有FUSE实现的操作系统:
- Linux(Linux 2.6.14及更高版本在官方内核中包含FUSE支持)
- FreeBSD
- MacOS X
- OpenIndiana Hipster
Master Server、Metalogger和Chunkserver也可以通过Cygwin在Windows上运行。
不幸的是,没有FUSE,将无法在此操作中挂载文件系统。