Izz*_*zzo 1 filesystems operating-system ntfs file fat
文件系统提供了一种对磁盘上的数据进行分类(从而导航)的机制。这对我来说很有意义。如果我想找到一些“组”数据,我不想自己记住字节偏移量。我宁愿有一些可以动态导航的查找系统。
但是,我不明白为什么必须存在不同的文件系统。例如,为什么是 NTFS、FAT16/32、EXT?
为什么不同的操作系统(Linux、Windows 等)要依赖不同的方法来组织磁盘上的数据?
我认为更合适的问题(以及您想要回答的问题)是“为什么存在多个文件系统?”。答案取决于特定的文件系统,但在许多情况下,它可以归结为以下三个原因之一(或组合):
最初的 FAT 文件系统于 20 世纪 70 年代末推出。从很多方面来说,FAT 都很棒:它内存占用少,而且设计简单。IIRC,迄今为止它仍在嵌入式系统中使用。
FAT 文件系统系列包括原始的 8 位 FAT、FAT12、FAT16 和 FAT32。(还有其他几个版本,但它们与此答案无关。)FAT 文件系统的每个版本之间存在一些功能差异,其中一些差异表明了创建新版本的动机。例如,从 8 位 FAT 迁移到 FAT12:
这些功能单独来看都不太可能是创建 FAT12 的动机,但将这些功能结合起来明显优于 8 位 FAT。请参阅FAT 维基百科页面以获取更完整的差异列表。
在讨论NTFS之前,我们应该先了解一下它的前身:HPFS。FAT 的简单设计被证明是一个问题:它限制了 FAT 可以提供的功能及其执行方式。HPFS 的创建是为了解决 FAT 的缺点。例如,HPFS 提供了 FAT 无法提供的几个功能:
- 支持不同代码页中的混合大小写文件名
- 更有效地利用磁盘空间(文件不是使用多扇区集群存储,而是按扇区存储)
- 使相关项目在磁盘卷上彼此靠近的内部架构
- 上次修改、上次访问和创建的单独日期戳(与当时 FAT 实现中的仅上次修改日期戳相反)
- 根目录位于磁盘的中点,而不是位于磁盘的开头,以实现更快的平均访问速度
这应该足以证明创建 HPFS 的原因,但 NTFS 如何融入其中呢?HPFS 是 Microsoft 和 IBM 的联合项目。由于意见分歧,他们分开了,微软创建了NTFS。这是创建新文件系统的另一个原因:意见分歧。这本身并没有什么问题,但它确实会带来偶尔导致项目碎片化的副作用。
与 NTFS 一样,我们需要检查 ext 的前身以了解创建它的原因。ext的前身是MINIX文件系统。MINIX 是为了教学目的而创建的,因此它很简单,并且省略了 UNIX 文件系统提供的几个复杂功能。Linux 支持的第一个文件系统是 MINIX 文件系统。MINIX 文件系统的简单性很快就成为一个问题:
MINIX 将文件名长度限制为 14 个字符(后来的版本为 30 个字符),将分区限制为 64 MB,并且文件系统是为教学目的而不是性能而设计的。
因此,扩展文件系统(即ext)被创建来解决MINIX文件系统的缺点。
同样徒劳地,创建了 ext2 来解决 ext 的缺点等等。例如,ext2 添加了三个单独的时间戳(atime、ctime 和 mtime),ext3 添加了日志记录,ext4 扩展了存储限制。这些都是需要“新”文件系统的重大更改。它们并不是版本之间唯一的更改,但这些更改说明了为什么需要创建另一个文件系统。
目前有多种文件系统被广泛使用。Apple 设备上的 Apple 文件系统 (APFS)、Windows 设备上的 NTFS 以及 Linux 上的几种不同的文件系统。为什么不同的操作系统使用不同的文件系统?对于 Linux 来说,原因很明显:Linux 需要一个开源文件系统。这就是它最初使用 MINIX 文件系统的原因。
对于 Windows 和 Apple 设备,我们可以说,差异更多的是政治上的。Microsoft 创建了 NTFS 来解决它认为重要的问题,Apple 创建了 APFS 来解决它认为重要的问题。商业操作系统供应商还创建自己的文件系统以实现产品差异化。
我们可以理解为什么不同的操作系统使用不同的文件系统,但仅在 Linux 上就有几个文件系统被积极使用,例如。ext4、Btrfs、ZFS、XFS 和 F2FS。是什么赋予了?
Linux 是一个不同的环境。Linux 内核源代码是公开可用的,任何用户都可以修改、引导和测试。因此,如果一个文件系统不支持您想要的功能,或者无法提供您需要的性能,您可以创建一个新的文件系统(当然,说起来容易做起来难)。例如,