2018-11-13文件系统小结

文件系统

文件系统概念

文件系统(FileSystem)其实是对磁盘数据进行基本管理的一个软件层。理论上说,无需文件系统,应用程序也可以直接对磁盘进行操作,但如果这样的话,要关注太多的底层细节(比如要控制数据写入到底从哪个扇区开始),同时不同的程序之间很容易出现冲突(一不留神大家都写到一块去了)。所以,只要操作系统稍微复杂一点,必定要用文件系统来管理磁盘数据。

磁盘上的内容,我们习惯以文件(File)这种逻辑单元来进行管理,包括文件到底存放在磁盘什么位置,从哪里开始,哪里结束?它创建于什么时候,最近一次修改于什么时候?它有多大?磁盘上存了多少文件,占了多少空间,还剩多少空间?这些都是文件系统所做的工作了。
引入了文件系统,磁盘上面不仅要存放文件数据本身,还需要有对这些数据进行管理的数据,比如文件起始位置、大小、创建时间等。这些数据又叫做元数据(Metadata)。不同文件系统的元数据是不一样的。元数据会占用额外的磁盘空间,但总体比例不会很大,它对功能的实现和性能的提升有非常重要的作用。格式化文件系统,其实就是写入一些初始化的元数据的过程。

文件系统的分类

Windows上用的FAT、NTFS,Linux下的ext4、XFS、btrfs都是常见的文件系统。FAT简单,用得也广,但功能、性能、对数据的保护度都有所欠缺。NTFS是Windows下推荐的文件系统。Linux中用ext4的人较多,这是大多数Linux发行版的默认文件系统。在服务器领域,用XFS的人较多,因为在部分环境下它能表现出较高的性能。

上面所说的文件系统都是普通的磁盘文件系统。但文件系统这个概念得到了发扬光大,它有更多的含义:

网络文件系统

  1. 网络文件系统:如CIFS(Windows网上邻居所用的协议)和NFS,就是网络文件系统。它们和普通文件系统的概念有所差别,并不定义文件数据是如何在磁盘上面分布的,而是告诉网络中的客户端,文件数据应当如何传输,怎么通过网络访问远端的文件。所以,它实际上是搭建在普通文件系统之上的。提供网络文件服务的设备,需要有一个本地的文件系统(如ext4),然后在启动一个或多个网络文件系统,负责从普通文件系统中读取数据,向外传送。

分布式文件系统

  1. 分布式文件系统或集群文件系统:如Hadoop中的HDFS。它们能把很多台电脑里的数据整合起来,对外表现出一个单一的存储节点,提供服务,实现性能扩展和高可靠性等高级特性。它们实际上也不会直接操作磁盘数据,而是叠加在普通文件系统之上的。用户对这类文件系统的IO请求,被它们处理之后,会转化为每一个节点上的普通IO,再调用本地的文件系统进行实际的数据读写。

特殊文件系统

  1. 特殊文件系统:Linux下就有sysfs和procfs等特殊文件系统,用来管理系统设备,调用内核接口。它们和磁盘上的数据就没有任何直接的联系了,只是以文件接口的方式,提供了很多特殊功能给用户使用。因为在接口上面和普通文件读写类似,所以也被冠名为文件系统。

摘自:https://zhuanlan.zhihu.com/p/20611951

你可能感兴趣的:(2018-11-13文件系统小结)