IT

什么是文件系统?

文件系统可能是计算机用户天天接触,又比较容易忽略的一个概念。它非常基础也非常重要。

我们来看看文件系统的定义:

文件系统用于确定文件在存储介质上是如何定位,命名,存储和读取的一种组织结构。

这样的定义难以理解,其本质是为了避免文件在磁盘或其它存储介质上被堆成一坨,杂乱无章,导致读取和修改的时候很费事。没有文件系统的管理,找数据就像一本没有目录的书要定位中间的内容一样。

我们在Windows下,目前最常见的文件系统是NTFS,我们也叫它NTFS格式,几乎是我们每天都在用的文件格式。

如果想要直观地感受一下NTFS文件系统,我们可以从一个熟悉的词开始——格式化

一般理解格式化就是指把磁盘清空,资料全部删掉。但更准确的理解是:格式化其实是一个建立文件系统的过程,格式化的对象是分区,换句话就是说我们可以对磁盘的一个分区进行格式化,这个过程会将分区上以前存储文件的方式全部改写,所以顺带地把文件也弄没了。

打个比方,就像是我们在一本不需要的书上将所有的文字部分全部涂上涂改液,画好横线,就可以当一个空白记事本来用。

一般情况下我们的格式化是快速格式化,可以当成系统是“偷懒”先只把书的目录给涂掉,这样会比较快。后面的正文部分,我们哪天我们写到一页再涂一页。这种情况下造就了我们的硬盘在格式化之后还是有一定可能性将文件找回来,但要在正文部分还没有被覆写的时候。

而低级格式化会将索引,包括所有数据擦除,所以需要更长时间。擦除之后也无法再进行任何数据恢复了。

【常见的文件系统】

早期的Windows下有FAT的文件系统,FAT就是File Allocation Table的简写,文件分配表的意思,这个意思可以辅助我们理解文件系统就是帮助文件分布到磁盘上。 我们比较熟悉的是FAT32。

但是因为早期的文件系统都存在自己的限制,特别是在容量和文件大小上的限制而逐渐淘汰了。比如,FAT32文件系统支持最大的单个文件不可以超过4GB,单个分区不能超过2TB,这在早些年可能还不是什么问题,但是随着信息技术飞速发展,这些限制就成了大问题了。有些用户可能有过这样的经验,在FAT32格式的U盘下面拷贝一个DVD镜像文件,大概4GB出头,就会报错了。

另外、不同的操作系统支持的文件系统也不一样。苹果的Mac OS操作系统,还有Linux上支持的文件系统就完全不一样。Mac OS是APFS,Linux下目前常用的是 ext3、ext4 和 XPS。这就造成了一种系统下格式化的磁盘到另一种系统下不认识,比如NTFS格式的移动硬盘在苹果电脑上无法正常打开的问题,Linux分区的磁盘挂在Windows下系统也不认。

所以微软又开发了exFAT(扩展FAT), 其实也可以理解为FAT64,可以支持更大的文件和分区,我们暂时不用担心会受到限制了。而且exFAT能够被多个平台兼容,适用于需要用大容量U盘在不同的平台之间拷贝数据的常见。

Linux平台上也开发了一个模块叫 NTFS-3g,用来识别NTFS文件系统。现在挂载U盘或者移动硬盘一般都不太会遇到不识别文件系统的问题了。

使用Windows Server做文件存储的朋友可能也比较熟悉 ReFS(Resilient File System,复原文件系统或称弹性文件系统),它是在 Windows Server 2012 中新引入的一个文件系统。早期只能应用于存储数据,现在可以引导系统, 也能在移动硬盘上使用。

ReFS 是与 NTFS 大部分兼容的,其主要目的是为了保持较高的稳定性,可以自动验证数据是否损坏,并尽力恢复数据。同时对于上亿级别的文件处理也有性能提升。