本地文件系统概述
文件系统就是负责把用户的文件,存到磁盘硬件中。这样即使计算机断电了,磁盘里的数据并不会丢失,就可以持久化的保存文件。
文件系统的基本数据单位是:文件。它的目的:对磁盘上的文件进行组织管理。
⚠️:组织的方式不同,就会形成不同的文件系统。
传统的文件系统: UNIX平台上的各种文件系统,也叫本地文件系统。
本地文件系统:通常占一个磁盘或一个磁盘分区。只能被唯一的主机访问,所以不能多个主机共享。
本地文件系统通常包含4类信息:
(1) 超级块:用来描述文件系统整体信息。含有整个文件系统中:数据块和inode的相关信息。
比如块个数、块大小、空闲块等等。
(2) inode(索引节点,index node,读作i - node):用来记录文件的元信息。
比如 inode 编号、文件大小、访问权限、创建时间、修改时间、数据在磁盘的位置等等。
inode是文件的唯一标识。
它也都会被存储在硬盘中,所以,inode会占用磁盘空间。
(3) 文件内容:用户的数据,是无结构的。
(4) 目录内容:目录项,是有结构的。
⚠️:文件数据是如何存储在磁盘的?
磁盘读写的最小单位是扇区(Sector)。扇区的大小只有 512B ,很明显,如果每次读写都以这么小为单位,那这读写的效率会非常低。
所以,文件系统把多个扇区组成了一个逻辑块,每次读写的最小单位就是逻辑块(数据块)。Linux 中的逻辑块大小为 4KB,也就是一次性读写 8 个扇区,就大大提高了磁盘的读写的效率。
超级块通常位于磁盘(或分区)上的固定位置。
根据文件系统类型,可定位超级块。
通过超级块可定位根目录的inode:从而读出根目录的内容。
根据inode中的块映射信息,最后定位指定的文件块,然后就可以,读出或写入数据。
分布式文件系统概述
由于当时大家有文件共享的需求,为了解决资源共享问题,出现了分布式文件系统。
分布式文件系统:把大量的数据分散到不同的节点上进行存储。
他有个特点就是:冗余性。比如,你有个节点出故障,也不会影响到整体的正常运行,因为可以从其它节点,把损坏的数据恢复出来。
分布式文件系统:就是把很多的服务器节点,组成一个文件系统网络。每个节点可以分布在不同的地点,通过网络进行节点间的通信和数据传输。所以,你们在用分布式文件系统时,不用关心数据是存储在哪个节点上、或者是从哪个节点从获取的,用法就和本地文件系统一样。
下图:是一个分布式文件系统的拓扑结构。分布式文件系统里面的数据,可能来自很多不同的节点,它管理的数据也可能存储在不同的节点上。就导致了它和本地文件系统之间的差别。
1. 发展历程
分布式文件系统的发展主要经历以下4个阶段:
(1) 1980-1990年早期,第一代分布式文件系统
第一代系统就是:提供标准接口,目的就是:远程文件访问。
早期的文件系统,最具代表性的是:NFS(Network File System)和AFS (Andrew File System,安德鲁)。
NFS:网络文件系统
从1985年出现到现在,已经经历了四个版本的更新。
NFS利用Unix系统中的虚拟文件系统(Virtual File System,VFS)机制:把客户机对文件系统的请求,通过协议,转发到服务器端进行处理。
AFS:安德鲁文件系统
Carnegie Mellon(卡内基 梅隆)大学,在1983年,设计开发了AFS。
重点在:分布式文件系统的可扩展性。所以,当时它可以容易地支持数百个节点,甚至数千个节点的分布式环境。
总结:
早期的分布式文件系统,一般是以提供标准接口的远程文件访问为目的。
它们更多地关注:访问的性能和数据的可靠性。
(2) 1990-1995年,第二代分布式文件系统
20世纪90年代初,当时的需求是:广域网和大容量存储应用。
xFS:
所以加利福尼亚大学设计开发了xFS。它克服了以前的分布式文件系统「一般都运行在局域网(LAN)上」的弱点。
Tiger Shark并行文件系统:
它是针对「大规模实时」多媒体应用设计的。目的:保证多媒体传输的实时性和稳定性。
特点:
- 资源预留,保证数据实时访问;
- 加大文件系统「数据块」的大小;
- 把大文件,分片存储在多个存储设备中。
Frangipani(鸡蛋花)分布式文件系统:
基于虚拟共享磁盘Petal(花瓣)的。
Petal:提供一个可以全局统一访问的磁盘空间。
Frangipani:基于Petal的特性,来提供文件系统的服务。它的结构就是:分层结构。
在Frangipani中,每个客户端也是文件系统服务器,参与文件系统的管理,可以平等地访问Petal提供的虚拟磁盘系统。
(3) 1995-2000年,第三代分布式文件系统
这个时候网络存储技术的发展起来了。
基于光纤通道的SAN (Storage Area Network,存储区域网络)、NAS (Network Attached Storage,网络附属存储) 得到了广泛应用。也推动了分布式文件系统的研究。
⚠️:
- SAN:采用光纤通道(Fibre Channel)技术来访问数据。
- NAS:采用网络技术,就是用网络交换机访问数据。
也出现了很多不一样的分布式文件系统体系结构,如Global/Google File System(GFS)、General Parallel File System(通用并行文件系统,GPFS)、SGI公司的CXFS、Sun的qFS等等。
更多的先进技术应用到系统里面。比如,缓存管理技术、Soft Updates(软更新)技术、文件级的负载平衡等。
(4) 2000年以后,第四代分布式文件系统
随着SAN和NAS两种结构逐渐成熟,研究人员开始考虑怎么把这两种结构结合起来。
另外,网格的研究,也推动了分布式文件系统的发展。
这一时期,IBM的StorageTank、Cluster的Lustre、Panasas(帕纳萨斯)的PanFS、蓝鲸文件系统(BWFS)等,都是这种体系结构的代表。
它们也对存储系统,提出了更多的需求:比如,
- 大容量:因为数据量变大。
- 高性能
- 高可用性
- 可扩展性
- 可管理性
- 按需服务
2. 实现方法
实现分布式文件系统,一般有两种方法:
- 共享文件系统 (Shared File System Approach)
- 共享磁盘 (Shared Disk Approach)
共享文件系统:
就是把文件系统的功能,分布到客户主机和服务器上。
步骤:客户主机向服务器提出请求,服务器通过文件系统:调用、读/写本地磁盘,然后,把结果发给客户主机。
采用共享文件方法的系统:例如,NFS、AFS和Sprite 文件系统。
共享磁盘:
就是用共享磁盘代替文件服务器。
共享磁盘往往是一种专用的高端存储设备,例如IBM SSA磁盘。
这个模型是构造NAS和SAN等存储设备的主要方法。
使用共享磁盘方法的系统有:VAX Cluster文件系统,IBM的GPFS和GFS等。
总结:
共享磁盘方法:对设备的要求比较高(比如,高速网络和共享磁盘)。
所以,实现的难度也大。通常,被用来构造高端或专用的存储设备。
共享文件系统模型:实现起来比较简单,对设备的要求不高,而且通用性比较好。
常见的分布式文件系统有很多,比较流行的是GFS & HDFS。这一章重点介绍的就是这两种分布式文件系统。