分布式文件系统概述

Author:  Ma, Guolai.

文件系统是操作系统用来组织磁盘文件的方法和数据结构。传统的文件系统指各种UNIX平台的文件系统,包括UFS、FFS、EXT2、XFS等,这些文件系统都是单机文件系统,也称本地文件系统。随着网络的兴起,为了解决资源共享问题,出现了分布式文件系统。分布式文件系统是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。本文由简单地回顾本地文件系统入手,然后依次介绍了NFS、HDFS、TFS和XFS这四个分布式文件系统。接着,从体系结构、一致性、容错性等方面比较了各个分布式文件系统的异同。最后,基于四个系统的比较做出概要性的总结。

【关键字】分布式文件系统,NFS,HDFS,TFS,XFS

1.引言

最初的分布式文件系统应用发生在20世纪70年代,之后逐渐扩展到各个领域。从早期 的NFS到现在的HDFS,分布式文件系统在体系结构、系统规模、性能、可扩展性、可用性等方面经历了较大的变化。

文件系统是操作系统的一个重要组成部分,通过对操作系统所管理的存储空间的抽象, 向用户提供统一的、对象化的访问接口,屏蔽对物理设备的直接操作和资源管理。

根据计算环境和所提供功能的不同,文件系统可划分为四个层次,从低到高依次是:单 处理器单用户的本地文件系统,如DOS的文件系统;多处理器单用户的本地文件系统,如 OS/2的文件系统;多处理器多用户的文件系统,如UNIX的本地文件系统;多处理器多用户 的分布式文件系统。

本地文件系统(Local File System)是指文件系统管理的物理存储资源直接连接在本地节点上,处理器通过系统总线可以直接访问。分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点 相连。高层次的文件系统都是以低层次的文件系统为基础,实现了更高级的功能。

随着层次的提高,文件系统在设计和实现方面的难度也会成倍提高。但是,现在的分布 式文件系统一般还是保持与最基本的本地文件系统几乎相同的访问接口和对象模型,这主要 是为了向用户提供向后的兼容性,同时保持原来的简单对象模型和访问接口。但这并不说明 文件系统设计和实现的难度没有增加。正是由于对用户透明地改变了结构,满足用户的需求, 以掩盖分布式文件操作的复杂性,才大大增加了分布式文件系统的实现难度。

在计算机性能不断提升的同时,计算机部件的平均价格却在不断下降。用户可以用更低 的成本,购买更好、更快、更稳定的设备。存储系统、文件系统面临的新挑战也随之而来: 如何管理更多的设备,提供更好的性能,更加有效地降低管理成本等。各种新的存储技术和 分布式文件技术层出不穷,以满足用户日益增长的需求。因此,在体系结构、一致性和安全性等方面的对比以及分析经典的和当前主流的分布式文件系统的优劣是很有必要的。

2.本地文件系统

本地文件系统通常仅仅位于一个磁盘或磁盘分区上,它只能被唯一的主机访问,不能被多个主机共享。本地文件系统通常含有四类信息:

超级块:用来描述文件系统整体信息的,含有整个文件系统中数据块和 inode的相关信息;inode:用来描述文件和目录的属性和文件块在设备上的位置信息;文件内容:是用户的数据,是无结构的;目录内容:是目录项,是有结构的。

超级块通常位于磁盘(或分区)上的固定置。根据文件系统类型,可定位超级块;通过超级块可定位根目录的inode,从而可读出根目录的内容。通过在文件系统名字空间的逐级名字解析,可得到指定文件的ino。根据ino可定位文件的inode在磁盘上的位置,从而读出文件的inode。根据inode中的块映射信息,最后定位指定的文件块,从而读出或写入数据。 归结起来,单机文件系统所含的信息可以分为三类,它们是文件数据、文件系统元数据和存储元数据。

3.分布式文件系统

3.1概述

NFS

Sun Microsystems公司于1984年推出了一个在整个计算机工业中被广泛接受的远程文件存取机制 (Network File System,NFS),该机制允许在一台计算机上运行一个服务进程,使对其上的某些或所有文件都可以进行远程存取,也允许其他计算机上的应用程序对这些文件进行存取。

当使用者想用远程文件时只要使用mount命令就可把远程文件系统安装在自己的文件系统之下。通过将客户端的内核功能(使用远程文件系统)与服务器端的NFS服务器功能(它提供文件数据)相结合,NFS允许以访问任何本地文件一样的方法,包括打开(Open)、读取(Read)、写入(Write)、定位(Seek)和关闭(Close),来访问远程主机上的文件。这种文件访问对客户来说是完全透明的,并且可在各种服务器和各种主机结构上工作。

图1给出了NFS协议层与OSI模型的比较。

图1 NFS协议层与OSI模型的比较

HDFS

Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。而且它提供高传输率来访问应用程序的数据,适合那些有着超大数据集的应用程序。HDFS放宽了POSIX的要求这样可以流的形式访问文件系统中的数据。

TFS

TFS(Taobao File System)是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,主要针对海量的非结构化数据,它构筑在普通的Linux机器集群上,可为外部提供高可靠和高并发的存储访问。TFS为淘宝提供海量小文件存储,通常文件大小不超过1M,满足了淘宝对小文件存储的需求,被广泛地应用在淘宝各项应用中。它采用了HA架构和平滑扩容,保证了整个文件系统的可用性和扩展性。同时扁平化的数据组织结构,可将文件名映射到文件的物理地址,简化了文件的访问流程,一定程度上为TFS提供了良好的读写性能。

XFS

20世纪90年代初,面对广域网和大容量存储应用的需求,借鉴当时先进的高性能对称 多处理器的设计思想,加利福尼亚大学设计开发的XFS。克服了以前的分布式文件系统一般 都运行在局域网上的弱点,很好地解决了在广域网上进行缓存,以减少网络流量的难题。它所采用的多层次结构很好地利用了文件系统的局部访问的特性,无效写回缓存一致性协议,减少了网络负载。对本地主机和本地存储空间的有效利用,使它具有较好的性能。

3.2体系结构

NFS

网络文件系统采用客户——服务器体系结构(如图2所示)。客户代码被紧密地集成到内核的虚拟文件系统(VFS)中。其中,客户端主要负责处理用户对远程文件的操作请求,并把请求的内容按一定的包格式从网络发给文件所在的服务器。而服务器则接受客户端的请求,调用本机的VFS函数进行文件的实际操作,并把结果按一定格式返回给客户端。而客户端得到服务器的返回结果,把它返回给用户。

NFS背后的基本思想是:每个文件服务器都提供其本地文件系统的一个标准化的视图。换句话说,它不关心如何实现本地文件系统;每个NFS服务器都支持相同的模型。NFS带有一个通信协议,该协议允许客户访问存储在一个服务器上的文件,从而允许异构进程集合共享共用的文件系统,其中的进程可能运行于不同的操作系统和机器上。

图2 用于UNIX系统的基本NFS体系结构

HDFS

HDFS采用master/slave架构。一个HDFS集群是由一个Namenode和一定数目的Datanodes组成。Namenode是一个中心服务器,负责管理文件系统的名字空间以及客户端对文件的访问。集群中的Datanode一般是一个节点一个,负责管理它所在节点上的存储(如下图所示)。HDFS暴露了文件系统的名字空间,用户能够以文件的形式在上面存储数据。从内部看,一个文件其实被分成一个或多个数据块,这些块存储在一组Datanode上。Namenode执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体Datanode节点的映射。Datanode负责处理文件系统客户端的读写请求。在Namenode的统一调度下进行数据块的创建、删除和复制。

图3 Hadoop体系结构

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值