什么是文件系统
文件系统是操作系统用于在磁盘或分区上组织文件的方法和数据结构。磁盘空间是什么样的我们并不清楚,但文件系统可以给我们呈现一个非常清晰的表象,我们可以创建、删除、修改和复制这些文件,而实现这些功能的软件就是文件系统。操作系统中负责管理和存储文件信息的软件被称为文件管理系统,简称文件系统。
文件系统是操作系统的一个重要组成部分,通过对操作系统所管理的存储空间的抽象,向用户提供统一的、对象化的访问接口,屏蔽对物理设备的直接操作和资源管理。也就是说,文件系统解决了普通用户使用磁盘存储数据的问题。
文件系统的发展史
根据计算环境和所提供功能的不同,文件系统可划分为以下几种。
单机文件系统
特点:用于操作系统和应用程序的本地存储。
缺点:数据无法在多台机器之间共享。
代表:EXT2、EXT3、EXT4、NTFS、FAT、FAT32、XFS、JFS 等等。
网络文件系统
特点:基于现有以太网架构,实现不同服务器之间传统文件系统的数据共享。
缺点:两台服务器不能同时访问修改,性能有限。
代表:NFS、CIFS 等等,比如下图 Windows 主机之间进行网络文件共享就是通过微软公司自己的 CIFS 服务实现的。
分布式文件系统
数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。
分布式文件系统(Distributed File System)是一种允许文件通过网络在多台主机上共享的文件系统,可以让多机器上的多用户进行文件分享和存储。在这样的文件系统中,客户端并非直接访问底层的数据存储区块,而是通过网络,以特定的通信协议和服务器沟通。DFS 为分布在网络上任意位置的资源提供一个逻辑上的树形文件系统结构,让用户访问分布在网络上的共享文件更加简便。所有高层次的文件系统都是以低层次的传统文件系统为基础,实现了更高级的功能。
特点:在传统文件系统上,通过额外模块实现数据跨服务器分布,并且自身集成 RAID 保护功能,可以保证多台服务器同时访问、修改同一个文件系统。性能优越,扩展性强,可靠性高。
缺点:部分类型存在单点故障风险。
代表:HDFS(ASF)、MogileFS(LiveJournal)、FastDFS(余庆)、Lustre(Oracle)、GlusterFS(RedHat)等等。
通用型
通用分布式文件系统和传统的本地文件系统(如 EXT4、NTFS 等)相对应。典型代表:Lustre、MooseFS。
优点:传统文件系统的操作方式,对开发者门槛较低。
缺点:系统复杂性较高,需要支持若干标准的文件操作,如:目录结构、文件读写权限、文件锁等。系统整体性能有所降低,因为要支持 POSIX 标准(可移植操作系统接口 Portable Operating System Interface of UNIX)。
POSIX 全称:可移植操作系统接口。当 Unix 诞生之后,各个厂商都实现了自己的 Unix 系统,导致接口不统一,基于不同的操作系统开发变得极其混乱,为了解决这一问题,便有了 POSIX 标准。
总结:POSIX 标准的诞生就是为了统一操作系统的接口,方便开发者开发应用程序,写出可移植的代码程序。基于 POSIX 标准的库函数都是可以在此标准的操作系统平台上移植。
专用型
专用分布式文件系统基于谷歌文件系统论文(Google File System)的设计思想而来,文件上传后不能修改。使用专有 API 对文件进行访问,也可称为分布式文件存储服务。典型代表:HDFS、MogileFS、FastDFS。
优点:系统复杂性较低,不需要支持若干标准的文件操作,如:目录结构、文件读写权限、文件锁等。系统整体性能较高,因为无需支持 POSIX 标准,系统更加高效。
缺点:采用专有 API 对文件进行访问,对开发者门槛较高,一般都是直接封装成工具类进行使用。
文件服务器的发展史
随着互联网图片、视频时代的到来,对文件的处理成为各个业务系统面临的巨大挑战,亟需搭建特有的文件服务器解决文件共享的问题。
本地文件服务器