NTFS

NTFS

NTFS 和 EXT4 文件系统。它们之间的主要区别是什么?它们之间有什么相似之处?

答案1

NTFS

NT 文件系统 NTFS 旨在快速执行标准文件操作,例如读取、写入、搜索,甚至高级操作,例如在超大硬盘上执行文件系统恢复。

使用 NTFS 文件系统格式化卷会导致创建多个系统文件,例如 $MFT、主文件表、$Bitmap、$LogFile 等。

NTFS 卷上的第一个信息是分区引导扇区($Boot 元数据文件),它从扇区 0 开始,最多可有 16 个扇区。

加密:加密文件系统 (EFS) 提供了用于在 NTFS 卷上存储加密文件的核心文件加密技术。

磁盘配额:Windows 2000 支持 NTFS 卷的磁盘配额。

重新解析点:重新解析点是 NTFS 中的新文件系统对象,可应用于 NTFS 文件或文件夹。

卷挂载点:基于重新解析点的卷挂载点,卷挂载点允许管理员将对一个本地卷的根目录的访问嫁接到另一个本地卷的文件夹结构上。

稀疏文件:稀疏文件允许程序创建非常大的文件,但仅在需要时消耗磁盘空间。

分布式链接跟踪:NTFS 提供链接跟踪服务,可维护文件快捷方式以及复合文档内的 OLE 链接的完整性。

EXT4

Ext4 是最常用的 Linux 文件系统 Ext3 的演进版本。该文件系统的设计经过改进,性能、可靠性和功能均更佳。

更大的文件系统/文件大小:Ext4 增加了 48 位块寻址,因此其最大文件系统大小为 1 EB,最大文件大小为 16 TB。1 EB = 1,048,576 TB。为什么是 48 位而不是 64 位?在使 Ext4 完全支持 64 位之前,需要修复一些限制,而这些限制在 Ext4 中尚未解决。Ext4 数据结构的设计考虑到了这一点,因此 Ext4 的未来更新将在某个时候实现完全的 64 位支持。

子目录可扩展性:Ext4 打破了这一限制,允许无限数量的子目录。

区段:区段基本上是一堆连续的物理块。它基本上表示“数据位于接下来的 n 个块中”。例如,可以将 100 MB 的文件分配到该大小的单个区段中,而不必为 25600 个块(每个块 4 KB)创建间接映射。大型文件被分成几个区段。区段可提高性能,也有助于减少碎片,因为区段鼓励磁盘上的连续布局。

多块分配 Ext4 使用“多块分配器”(mballoc),它在一次调用中分配多个块,而不是每次调用分配一个块,从而避免了大量开销。这提高了性能,并且对于延迟分配和扩展特别有用。

延迟分配:延迟分配是一种性能特性,它尽可能延迟块的分配,这与传统文件系统的做法相反:尽快分配块。例如,如果进程 write(),文件系统代码将立即分配将放置数据的块 - 即使数据现在没有写入磁盘并且将在缓存中保留一段时间。

快速 fsck fsck 是一个非常慢的操作,尤其是第一步:检查文件系统中的所有 inode。在 Ext4 中,每个组的 inode 表末尾将存储未使用的 inode 列表(带有校验和,以确保安全),因此 fsck 不会检查这些 inode。结果是总 fsck 时间缩短了 2 到 20 倍,具体取决于使用的 inode 数量。

日志校验和 日志是磁盘中最常用的部分,因此构成日志的块更容易出现硬件故障。从损坏的日志中恢复可能会导致大量损坏。Ext4 会对日志数据进行校验和,以了解日志块是否出现故障或损坏。

在线碎片整理虽然延迟分配、扩展和多块分配有助于减少碎片,但使用文件系统仍然会产生碎片。Ext4 将支持在线碎片整理,并且有一个 e4defrag 工具可以对单个文件或整个文件系统进行碎片整理。

与 Inode 相关的功能:更大的 Inode、纳秒时间戳、快速扩展属性、Inode 预留。Ext4 默认为 256 字节。这是为了容纳一些额外的字段,而 Inode 的剩余空间将用于存储足够小以适合该空间的扩展属性。Inode 预留包括在创建目录时预留多个 Inode,以备将来使用。纳秒时间戳意味着“修改时间”等 Inode 字段将能够使用纳秒分辨率。

持久预分配此功能在最新内核版本的 Ext3 中可用,并由不支持该功能的文件系统中的 glibc 模拟,它允许应用程序预分配磁盘空间:应用程序告诉文件系统预分配空间,文件系统预分配必要的块和数据结构,但在应用程序真正需要写入数据之前,其上没有数据。

默认开启屏障:这是一个以牺牲部分性能为代价来提高文件系统完整性的选项(您可以使用“mount -o barrier=0”禁用它,如果您正在进行基准测试,建议尝试一下)。

NTFS 源

EXT4 源

相关内容