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



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

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

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

我认为一个更合适的问题(以及你想要回答的问题)是"为什么存在多个文件系统&";。答案取决于特定的文件系统,但在许多情况下,它归结为三个原因之一(或混合):

  • 解决现有文件系统中的某些类型的问题,或者
  • 因意见分歧而产生的分歧,或
  • 公司利益

FAT家族

最初的FAT文件系统是在20世纪70年代末引入的。在很多方面,FAT都很棒:它的内存占用率低,设计简单。IIRC,它至今仍在嵌入式系统中使用。

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

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

这些功能中没有一个可能是创建FAT12的动机,但这些功能加在一起是对8位FAT的明显胜利。有关更完整的差异列表,请参阅FAT维基百科页面。

NTFS

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

  • 支持不同代码页中的混合大小写文件名
  • 更有效地利用磁盘空间(文件不是使用多个扇区集群存储的,而是以每个扇区为基础存储的)
  • 一种内部体系结构,使磁盘卷上的相关项彼此靠近
  • 单独的日期戳用于最后修改、最后访问和创建(与FAT的时间实现中仅用于最后修改的日期戳相反)
  • 根目录位于中点,而不是磁盘的开头,以实现更快的平均访问

这应该足以证明为什么要创建HPFS,但NTFS是如何融入其中的呢?HPFS是微软和IBM的联合项目。由于意见分歧,他们分开了,微软创建了NTFS。这是创建新文件系统的另一个原因:意见分歧。这本身并没有什么问题,但它确实有偶尔将项目分割的副作用。

大家庭

与NTFS一样,我们需要检查ext的前身,以了解创建它的原因。ext的前身是MINIX文件系统。MINIX是为教学目的而创建的,因此它很简单,并省略了UNIX文件系统提供的几个复杂功能。Linux支持的第一个文件系统是MINIX文件系统。MINIX文件系统的简单性很快就成了一个问题:

MINIX将文件名长度限制为14个字符(在以后的版本中为30个字符),将分区限制为64兆字节,并且文件系统是为了教学而设计的,而不是为了性能。

因此,创建了扩展文件系统(e.ext)来解决MINIX文件系统的缺点。

同样徒劳的是,创建ext2是为了解决ext的缺点,等等。例如,ext2添加了三个单独的时间戳(atime、ctime和mtime),ext3添加了日志记录,ext4扩展了存储限制。这些都是突破性的变化;新的";文件系统。它们并不是版本之间唯一的更改,但这些更改说明了为什么创建另一个文件系统是必要的。

为什么不同的操作系统使用不同的文件系统

目前有几种文件系统被广泛使用。苹果设备上的苹果文件系统(APFS),Windows设备上的NTFS,以及Linux上的几种不同文件系统。为什么不同的操作系统使用不同的文件系统?对于Linux来说,原因是显而易见的:Linux需要一个开源文件系统。这就是它最初使用MINIX文件系统的原因。

对于Windows和苹果设备,区别更大,我们可以说,政治。微软创建NTFS是为了解决它认为重要的问题,苹果创建APFS是为了解决它们认为重要的事情。商业操作系统供应商还创建了自己的文件系统,以实现产品差异化。

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

我们可以理解为什么不同的操作系统使用不同的文件系统,但有几个文件系统在Linux上单独使用,例如ext4、Btrfs、ZFS、XFS和F2FS。什么东西?

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

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

不同的操作系统使用不同的FS,因为每个操作系统都有不同的理念和目标。

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

Ubuntu(大多数现代发行版)使用ext4(也支持其他版本)主要是因为它简单快捷。

我不认为这是技术性的,只是不同的公司在同一时间处理同一件事,加上一些操作系统(如windows和mac)的封闭源代码性质,这使得其他公司很难复制完整的功能,而对其进行反向工程是非法的,这就像为什么不同的操作系统一开始就是这样。

相关内容

  • 没有找到相关文章

最新更新