只是一个简单的问题,但是为什么今天仍然有如此多的文件系统在竞争和使用?(ntfs,fat32,ext3(ffs)等)
文件系统设计人员似乎可以就每种类型的系统的最佳方面达成共识,并实现“最佳”文件系统,不是吗?只是想一想,由于这些文件系统已经存在了一段时间,并且至少应该明显看出哪些文件系统具有优于其他文件系统的质量,我们可以将每个文件系统的优点结合起来,创建一个更好的最终系统
只是一个简单的问题,但是为什么今天仍然有如此多的文件系统在竞争和使用?(ntfs,fat32,ext3(ffs)等)
文件系统设计人员似乎可以就每种类型的系统的最佳方面达成共识,并实现“最佳”文件系统,不是吗?只是想一想,由于这些文件系统已经存在了一段时间,并且至少应该明显看出哪些文件系统具有优于其他文件系统的质量,我们可以将每个文件系统的优点结合起来,创建一个更好的最终系统
Answers:
让我们使用您引用的示例来思考一下具体细节:
ntfs-微软专有。不是Microsoft的任何人都不能使用此功能,因此必须使用/创建其他内容。现在,如果您是Microsoft,则由于下一个要点的问题,您希望通过FAT使用它。
fat32-不够现代。档案大小上限为4GB。目录条目查找为O(n)。分配表是一个链表,而不是像分配位图(在其中可以快速找到连续的可用空间)这样更有效的东西。不支持权限。不支持硬链接或符号链接。不支持日记功能。
ext3-这是ext2的扩展,主要用于支持日志记录。
因此,似乎有几个原因:
较早的文件系统缺少某些内容。对于FAT,它缺少很多:在(1)功能和(2)性能方面。对于ext2,它没有日记更新,因此从崩溃中恢复要花费更多时间。
现有的文件系统可能会做,但不是您的。(例如,如果您不是Microsoft,则为NTFS)。在这种情况下,您实际上别无选择,只能提出自己的选择。
简短的答案:一种尺寸并不适合所有尺寸。
需要权衡。例如,如果您想要日记化的FS,则需要为其付费(效率,复杂性等),但要从中获得收益。有些人感觉不需要日志记录的FS,并且不想为此付费。与FS的其他“功能”相同。
任何事物都不可能有一个“最佳”,因为对于“最佳”是什么有很多意见。该决定特定于用户的需求和限制。设计始终基于其适应约束的能力。
一部基本的手机需要存储数百个联系人,短信历史记录和一些小型应用程序。它的文件系统是否需要在RAID配置中支持多TB驱动器上的分层目录结构?设备上是否有足够的RAM来运行这样的文件系统?文件系统是否需要复杂的ACL?对于所有这些问题,可能不是这样,因此一个简单的占用资源的文件系统就足够了。
公司还将开发不同的产品以保持竞争优势。例如,Apple吹捧其HFS +文件系统跟踪最近更改过的文件的能力,从而可以快速进行备份。另一方面,软盘文件系统(FAT)的驱动程序只能容纳几KB的内存。
只是一个简单的问题,但是为什么今天仍然有如此多的文件系统在竞争和使用?(ntfs,fat32,ext3(ffs)等)
似乎文件系统设计人员可以就每种类型的系统的最佳方面达成一致,并实现“最佳”文件系统,不是吗?
让我们假设没有折衷,文件系统设计人员确实实现了“最佳”文件系统,而没有专利担忧,并以双重许可BSD / GPL的形式发布,因此MS和Debian都可以接受。是什么让您认为其他文件系统将在一夜之间消失?
我认为十年来没有人在新硬盘上使用FAT32,但是它仍然是格式化USB驱动器,SD卡等的事实上的标准。相机和手机制造商已经尝试并测试了使用它的固件。Arduino爱好者有稳定的库可以使用它。他们都需要巨大的动力去改变。
然后,您会遇到与较早的操作系统(尤其是Windows,其用户不想安装新的文件系统驱动程序)的向后兼容性的问题。
在计算答案时,通常是(a)由于历史情况和保持向后兼容性的需要,(b)由于某些方法比其他方法更适合某些任务。
在(a)中,您需要记住“温彻斯特驱动器”-我的年龄已经足够大,可以记住它们被称为-(世界其他地方称为“硬盘驱动器”)仅存在了大约一半的时间。甚至在很长一段时间内,由于成本原因,大多数用户都无法使用它。FAT文件系统在软盘上以及原始的小型硬盘驱动器上都可以很好地工作,因为它相当有效并且所需的开销也很小。一旦开始使用(由于易于实现,其使用范围广泛),制造商便无法告诉用户其旧数据突然无效。
同样,对于Linux用户来说,稳定的NTFS驱动程序已经来很久了,因此,将设备格式化为FAT意味着可以在多个系统之间进行读写。
在(b)上,请考虑存储数十亿个基于文本的数据库记录的系统与存储DVD长度的媒体文件的系统之间的区别。对于数据库来说,每条记录可能非常小-可能只有30或40个字节,并且肯定是分配了整个磁盘“段”(无论您要如何定义)的文件系统可能会浪费磁盘空间。DVD并非如此-更大的“细分市场”(显然是有原因的)在空间方面可能非常高效。
因此,针对不同的目的设计了不同的文件系统。
在您的列表中,您提到使用的是旧文件系统,因为没有更好的文件系统可用,但是速度很快。
还有其他文件系统。我听说Google文件系统主要用于快速复制/冗余,如果一个硬盘驱动器或服务器出现故障。我记得曾经听说过为许多小文件制作的另一个文件系统,该文件系统将用于对小文件(缩略图)进行大量请求的系统。
从本质上讲,它们具有不同的目标,或者相对于开源可能是适当的。