为什么必须存在多个文件系统"types"?

Why must multiple filesystem "types" exist?

文件系统提供了一种对磁盘上的数据进行分类(从而导航)的机制。这对我来说很有意义。如果我想找到一些“组”数据,我不想自己记住字节偏移量。我宁愿有一些可以动态导航的查找系统。

但是,我不明白为什么必须存在不同的文件系统。比如为什么NTFS,FAT16/32,EXT?

为什么不同的操作系统(Linux、Windows 等)在磁盘上组织数据的方法不同?

不同OS使用不同的FS因为他们每个人都有不同的哲学和不同的目标。

例如windows使用ntfs因为他们想要安全和智能的FS(没有快或小的哲学)

Ubuntu(大多数现代发行版)使用 ext4(并且还支持其他发行版)主要是因为它简单且速度快。

我不认为这是技术问题,只是不同的公司同时在做同样的事情,再加上 windows 和 mac 等操作系统的闭源性质其他公司很难复制全部功能并且对其进行逆向工程是非法的,这就像为什么首先要使用不同的操作系统。

我认为更合适的问题(以及您希望回答的问题)是“为什么存在 do 多个文件系统?”。答案取决于特定的文件系统,但在许多情况下,它归结为以下三个原因之一(或组合):

  • 解决现有文件系统中的某种类型的问题,或者
  • 因意见不同而分裂,或
  • 企业利益。

FAT 家族

最初的 FAT 文件系统是在 70 年代后期推出的。在许多方面,FAT 都很棒:它占用内存少,设计简单。 IIRC,它至今仍在嵌入式系统中使用。

FAT 文件系统家族包括原始的 8 位 FAT、FAT12、FAT16 和 FAT32。 (还有其他几个版本,但它们与这个答案无关。)每个版本的 FAT 文件系统之间有几个 feature-differences,其中一些显示了创建新版本的动机。例如,从 8 位 FAT 移动到 FAT12:

  • 最大文件名长度从 9 个字符增加到 11 或 255 个字符,分别从 6.3 文件名编码切换到 8.3 filename encoding 或 LFN 扩展名。
  • 添加了对子目录的支持。
  • 文件大小粒度从 128 字节减少到 1 字节。

None 这些功能单独可能是创建 FAT12 的动机,但这些功能加在一起显然战胜了 8 位 FAT。有关更完整的差异列表,请参阅 FAT Wikipedia page

NTFS

在讨论NTFS之前,我们先看看它的前身:HPFS。 FAT 的简单设计被证明是一个问题:它限制了 FAT 可以提供的功能以及它的执行方式。 HPFS 的创建是为了解决 FAT 的缺点。 For example,HPFS 提供了几个 FAT 无法提供的功能:

  • Support for mixed case file names, in different code pages
  • More efficient use of disk space (files are not stored using multiple-sector clusters but on a per-sector basis)
  • An internal architecture that keeps related items close to each other on the disk volume
  • Separate datestamps for last modification, last access, and creation (as opposed to last-modification-only datestamp in then-times implementations of FAT)
  • Root directory located at the midpoint, rather than at the beginning of the disk, for faster average access

这足以说明为什么要创建 HPFS,但 NTFS 是如何融入其中的呢? HPFS 是 Microsoft 和 IBM 的联合项目。 Due to several differences in opinion,他们分开了,微软创建了 NTFS。这是创建新文件系统的另一个原因:意见分歧。这本身并没有错,但它确实有偶尔分散项目的副作用。

大家庭

与NTFS 一样,我们需要研究ext 的前身以了解创建它的原因。 ext的前身是MINIX文件系统。 MINIX 是为教学目的而创建的,因此它很简单并且省略了 UNIX 文件系统提供的几个复杂功能。 Linux 支持的第一个文件系统是 MINIX 文件系统。 MINIX 文件系统的简单性 soon became an issue:

MINIX restricted filename lengths to 14 characters (30 in later versions), it limited partitions to 64 megabytes, and the file system was designed for teaching purposes, not performance.

因此,创建了扩展文件系统(即 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 是为了解决它认为重要的问题。商业 OS 供应商也创建自己的文件系统以实现产品差异化。

为什么 Linux 使用几个不同的文件系统?

我们可以看出为什么不同的 OS 使用不同的文件系统,但是仅 Linux 上就有几个文件系统在积极使用,例如。 ext4、Btrfs、ZFS、XFS 和 F2FS。给出了什么?

Linux是不同的环境。 Linux 内核源代码是公开可用的,任何用户都可以修改、引导和测试。因此,如果一个文件系统不支持您想要的功能或提供您需要的性能,您可以创建一个新的文件系统(当然,说起来容易做起来难)。例如,

  • Btrfs 解决了(除其他外)ext3/4.
  • 上缺少快照的问题
  • ZFS 是为 Solaris 操作系统创建的,但后来移植到 Linux。 (ZFS 也有一套非常丰富的功能。)
  • XFS 的创建是为了通过使用不同的底层数据结构(即。B-trees).
  • F2FS 的创建是为了解决固态介质上的性能问题。与旋转磁盘相比,SSD 具有更低的延迟和更高的吞吐量。事实证明,仅仅使用更快的磁盘并不一定等同于更好的文件系统性能。