简介
在线文件系统是指用户不受地域限制,可以通过网络登录文件系统,并进行文件有关的操作。分布式文件系统就是一种在线文件系统。在线文件系统一般使用文件传输协议(FileTransferProtocol,FTP)进行文件传送。
文件系统概述操作系统中负责管理和存取文件信息的软件机构称为文件管理。文件系统是指操作系统中与文件管理有关的那部分软件和被管理的文件,以及实现管理所需要的一些数据结构的总体。从系统角度看,文件系统是对文件存储空间进行组织、分配,并负责文件的存储、保护和检索的系统。从用户角度来看,文件系统主要是实现“按名存取”,并向用户提供简便、统一的使用文件的接口。
文件系统的功能
一个理想的文件系统应具备以下功能。
(1)实现文件的“按名存取”功能。也叫“透明存取”功能,即用户不必了解文件存放的物理结构、物理位置、查找方法、I/O实现细节等与外存存储介质有关的物理特性,只要知道文件名,给出有关操作要求便可存取信息。
(2)实现能够快速定位文件的目录结构,如树形目录,考虑如何组织目录文件,即目录项的设计和文件控制块的存储组织方法,这也直接影响到检索文件的速度。
(3)向用户提供一套使用方便.简单的操作命令。主要有两类命令,一是面向用户编程的,由若干系统调用组成,如read()、write()分别是读文件和写文件命令:二是面向键盘的命令,供用户联机时或编写Shell过程时或编写作业说明书时使用。例如复制文件的命令cp,查找文件的命令find。
(4)管理磁盘、磁带等组成的文件存储器。记录哪些空间被占用,哪些空间空闲,以便用户创建文件时,为其分配空闲空间,修改或删除文件时,调整或收回相应的空间。
(5)实现逻辑文件到物理文件的转换。同一个文件有逻辑文件和物理文件两个侧面,从用户观点看到的文件的组织形式是文件的逻辑结构,在遵循文件系统的规则的前提下用户可以按自己的愿望来定义文件的逻辑结构,文件在外存上的存放方式和组织形式是文件的物理结构,文件系统本身来说,必须采用特定的数据结构和有效算法,实现文件的逻辑结构到物理结构的映射,实现对文件存储空间和用户信息的管理,提供多种存取方法。
(6)保证文件信息的安全可取。文件系统必须防止对文件信息的有意或无意的破坏或窃用。此外,文件使用过程中如果出现故障,文件系统可组织重执或恢复1。
(7)便于文件的共享。文件系统应提供多个用户或进程以同名或异名共享同一个文件,这样,在系统中只得保留该共享文件的一个副本,节省了存储空间,又减少了相互传递文件的消耗。
文件传输协议概述件传输协议(FileTransferProtocol,FTP)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议的应用层。我们要分清文件传送(file transfer)和文件访问(file access)之间的区别,前者是FTP提供的,后者是如NFS等应用系统提供的。
FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理,就像MIME或Unicode一样。但是,FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间,会非常长;并且不时的必须执行一些冗长的登录进程。
FTP实现的目标促进文件的共享(计算机程序或数据)
鼓励间接或者隐式的使用远程计算机
向用户屏蔽不同主机中各种文件存储系统(File system)的细节
可靠和高效的传输数据
缺点密码和文件内容都使用明文传输,可能发生窃听。
因为必须开放一个随机的端口以创建连接,当防火墙存在时,客户端很难过滤处于主动模式下的FTP流量。这个问题,通过使用被动模式的FTP,得到了很大解决。
服务器可能会被告知连接一个第三方计算机的保留端口。
此方式在需要传输文件数量很多的小文件时,性能不好
分布式文件系统分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计基于客户机/服务器模式。一个典型的网络可能包括多个供多用户访问的服务器。另外,对等特性允许一些系统扮演客户机和服务器的双重角色。
网络文件系统网络文件系统(Network File System,缩写为NFS)是一种分布式文件系统协议,最初由Sun Microsystems公司开发,并于1984年发布。其功能旨在允许客户端主机可以像访问本地存储一样通过网络访问服务器端文件。
NFS和其他许多协议一样,是基于开放网络运算远程过程调用(ONC RPC)协议之上的。它是一个开放、标准的RFC协议,任何人或组织都可以依据标准实现它。
Hadoop分布式文件系统Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。
HDFS有着高容错性(fault-tolerant)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以实现流的形式访问(streaming access)文件系统中的数据。