分布式文件系统(DFS)浅析

简介

在信息爆炸时代,单纯经过增长硬盘个数来扩展计算机文件系统的存储容量的方式,在容量大小、容量增加速度、数据备份、数据安全等方面的表现都差强人意。
分布式文件系统能够有效解决数据的存储和管理难题:将固定于某个地点的某个文件系统,扩展到任意多个地点/多个文件系统,众多的节点组成一个文件系统网络。每一个节点能够分布在不一样的地点,经过网络进行节点间的通讯和数据传输。人们在使用分布式文件系统时,无需关心数据是存储在哪一个节点上、或者是从哪一个节点从获取的,只须要像使用本地文件系统同样管理和存储文件系统中的数据。web

如何评价分布式文件系统

文件系统最初设计时,仅仅是为局域网内的本地数据服务的。而分布式文件系统将服务范围扩展到了整个网络。不只改变了数据的存储和管理方式,也拥有了本地文件系统所没法具有的数据备份、数据安全等优势。
判断一个分布式文件系统是否优秀,取决于如下三个因素:
1. 数据的存储方式
例若有1000万个数据文件,能够在一个节点存储所有数据文件,在其余N个节点上每一个节点存储1000万/N个数据文件做为备份;或者平均分配到N个节点上存储,每一个节点上存储1000万/N个数据文件。
不管采起何种存储方式,目的都是为了保证数据的存储安全和方便获取。
2. 数据的读取速率
包括响应用户读取数据文件的请求、定位数据文件所在的节点、读取实际硬盘中数据文件的时间、不一样节点间的数据传输时间以及一部分处理器的处理时间等。各类因素决定了分布式文件系统的用户体验。
简单来讲,分布式文件系统中数据的读取速率不能与本地文件系统中数据的读取速率相差太大,不然在本地文件系统中打开一个文件须要2秒,而在分布式文件系统中各类因素的影响下用时超过10秒,就会严重影响用户的使用体验。
3. 数据的安全机制
因为数据分散在各个节点中,必需要采起冗余、备份、镜像等方式保证节点出现故障的状况下,可以进行数据的恢复,确保数据安全。数据库

系统分类

网络文件系统
(NFS) 最先由Sun微系统公司做为TCP/IP网上的文件共享系统开发。Sun公司估计大约有超过310万个系统在运行NFS,大到大型计算机、小至PC机,其中至少有80%的系统是非Sun平台。
Andrew系统
(AFS) 结构与NFS类似,由卡内基·梅隆大学信息技术中心(ITC)开发、现由前ITC职员组成的Transarc公司负责开发和销售。AFS较NFS有所加强。
DFS系统
(DFS) 是AFS的一个版本,做为开放软件基金会(OSF)的分布式计算环境(DCE)中的文件系统部分。
若是文件的访问仅限于一个用户,那么分布式文件系统就很容易实现。惋惜的是,在许多网络环境中这种限制是不现实的,必须采起并发控制来实现文件的多用户访问,表现为以下几个形式:缓存

  • 只读共享:任何客户机只能访问文件,而不能修改它。
  • 受控写操做:采用这种方法,可有多个用户打开一个文件,但只有一个用户进行写修改。而该用户所做的修改并不必定出如今其它已打开此文件的用户的屏幕上。
  • 并发写操做:这种方法容许多个用户同时读写一个文件。但这须要操做系统做大量的监控工做以防止文件重写,并保证用户可以看到最新信息。这种方法即便实现得很好,许多环境中的处理要求和网络通讯量也可能使它变得不可接受。

DFS为文件系统提供了单个访问点和一个逻辑树结构,经过DFS,能够将同一网络中的不一样计算机上的共享文件夹组织起来,造成一个单独的、逻辑的、层次式的共享文件系统。
DFS是一个树状结构,包含一个根目录和一个或多个DFS连接。要创建DFS共享,必须首先创建DFS根,而后在每个DFS根下,建立一个或多个DFS连接,每个连接能够指向网络中的一个共享文件夹。安全

NFS和AFS的区别
NFS和AFS的区别在于对并发写操做的处理方法上。当一个客户机向服务器请求一个文件(或数据库记录),文件被放在客户工做站的高速缓存中,若另外一个用户也请求同一文件,则它也会被放入那个客户工做站的高速缓存中。当两个客户都对文件进行修改时,从技术上而言就存在着该文件的三个版本(每一个客户机一个,再加上服务器上的一个)。
有两种方法能够在这些版本之间保持同步:服务器

  • 无状态系统 :在这个系统中,服务器并不保存其客户机正在缓存的文件的信息。所以,客户机必须协同服务器按期检查是否有其余客户改变了本身正在缓存的文件。这种方法在大的环境中会产生额外的LAN通讯开销,但对小型LAN来讲,这是一种使人满意的方法。NFS就是个无状态系统
  • 回呼(Callback)系统: 在这种方法中,服务器记录它的那些客户机的所做所为,并保留它们正在缓存的文件信息。服务器在一个客户机改变了一个文件时使用一种叫回叫应答的技术通知其它客户机。这种方法减小了大量网络通讯。AFS(及OSF的DCE其中的DFS)就是回叫系统。客户机改变文件时,持有这些文件拷贝的其它客户机就被回叫并通知这些改变。

无状态操做在运行性能上有其长处,但AFS经过保证不会被回叫应答充斥也能够提高其运行性能。方法是在必定时间后取消回叫。客户机检查回叫应答中的时间期限以保证回叫应答是当前有效的。回叫应答的另外一个有趣的特征是向用户保证了文件的当前有效性。换句话说,若一个被缓存的文件有一个回叫应答,则客户机就认为文件是当前有效的,除非服务器呼叫指出服务器上的该文件已改变了。网络

NFS介绍

定义

(NFS)(Network File System)是个分布式的客户机/服务器文件系统。NFS的实质在于用户间计算机的共享。用户能够联结到共享计算机并像访问本地硬盘同样访问共享计算机上的文件。管理员能够创建远程系统上文件的访问,以致于用户感受不到他们是在访问远程文件,是在类Unix系统间实现磁盘文件共享的一种方法。
NFS 的基本原则是“允许不一样的客户端及服务端经过一组RPC分享相同的文件系统”,它是独立于操做系统,允许不一样硬件及操做系统的系统共同进行文件的分享。
nfsd:它是基本的NFS守护进程,主要功能是管理客户端是否可以登陆服务器;
mountd:它是RPC安装守护进程,主要功能是管理NFS的文件系统。当客户端顺利经过nfsd登陆NFS服务器后,在使用NFS服务所提供的文件前,还必须经过文件使用权限的验证。它会读取NFS的配置文件/etc/exports来对比客户端权限;
idmapd:主要功能是进行端口映射工做。当客户端尝试链接并使用RPC服务器提供的服务(如NFS服务)时,rpcbind会将所管理的与服务对应的端口提供给客户端,从而使客户能够经过该端口向服务器请求服务。
使用NFS 挂载(mount)了以后,客户端访问远程文件就像访问本地文件同样。并发

设计目标

容许用户象访问本地文件同样访问其余系统上的文件。提供对无盘工做站的支持以下降网络开销。
简化应用程序对远程文件的访问使得不须要因访问这些文件而调用特殊的过程。
使用一次一个服务请求以使系统能从已崩溃的服务器或工做站上恢复。
采用安全措施保护文件免遭偷窃与破坏。
保持NFS协议可移植性和简单性,以便它们能在许多不一样计算机上实现,包括低档的PC机。
大型计算机、小型计算机和文件服务器运行NFS时,都为多个用户提供了一个文件存储区。工做站须要运行TCP/IP协议来访问这些系统和位于NFS存储区内的文件。对DOS用户,一个远程NFS文件存储区看起来是另外一个磁盘驱动器盘符。对Macintosh用户,远程NFS文件存储区就是一个图标。分布式

VFS操做

NFS的一个重要组成是虚拟文件系统(VFS),它是应用程序与低层文件系统间的接口。
具体操做有:
close文件关闭操做
create 文件生成操做
fsync 将改变保存到文件中
getattr 取文件属性
link 用另外一个名字访问一个文件
lookup 读目录项
mkdir 创建新目录
open 文件打开操做
rdwr 文件读写操做
remove 删除一个文件
rename 文件更名
rmdir 删除一目录
setattr 设置文件属性svg