今天我遇到了重新启动计算机的情况,它说我需要检查磁盘的一致性。大约10分钟后(完成率为“ 1%”),我放弃了,并决定让它在我回家时运行。
为了进行比较,我的家用计算机对所有分区都使用Ext4,并且磁盘检查(大约一周运行一次)只需要几秒钟。我记得曾经读过快速磁盘检查是当务之急,但是我不知道他们怎么做。
那么,Ext4如何快速进行磁盘检查?NTFS推出后(〜10年前),这样做是否有重大突破?
注意:NTFS磁盘约为300 GB,而Ext4磁盘约为500 GB。两者都快满了。
今天我遇到了重新启动计算机的情况,它说我需要检查磁盘的一致性。大约10分钟后(完成率为“ 1%”),我放弃了,并决定让它在我回家时运行。
为了进行比较,我的家用计算机对所有分区都使用Ext4,并且磁盘检查(大约一周运行一次)只需要几秒钟。我记得曾经读过快速磁盘检查是当务之急,但是我不知道他们怎么做。
那么,Ext4如何快速进行磁盘检查?NTFS推出后(〜10年前),这样做是否有重大突破?
注意:NTFS磁盘约为300 GB,而Ext4磁盘约为500 GB。两者都快满了。
Answers:
性能差异的主要原因有两个,两个可能的原因。一,主要原因:
ext4与NTFS相比性能提高
各种基准已经得出结论,实际的ext4文件系统可以比NTFS分区更快地执行各种读写操作。请注意,尽管这些测试并不代表实际性能,但我们可以推断出这些结果,并将其用作一个原因。
至于为什么ext4实际上表现更好,那么可以将NTFS归因于各种各样的原因。例如,ext4直接支持延迟分配。同样,性能的提高完全取决于您使用的硬件(在某些情况下可以完全否定)。
减少文件系统检查要求
与其他等效的日记文件系统(例如NTFS)相比,ext4文件系统还能够执行更快的文件系统检查。根据维基百科页面:
在ext4中,未分配的块组和inode表的部分都这样标记。这使e2fsck可以在检查时完全跳过它们,并大大减少了检查支持ext4大小的文件系统所花费的时间。此功能在Linux内核的2.6.24版本中实现。
现在,有两个可能的原因:
文件系统检查实用程序本身
某些应用程序可能在文件系统上运行不同的例程,以实际执行运行状况“检查”。如果您使用Linux上的fsck实用程序而不是Windows 上的chkdsk实用程序,可以很容易看出这一点。这些应用程序是在用于不同文件系统的不同操作系统上编写的。之所以将其作为可能的原因是,每个操作系统中的低级系统调用是不同的,因此您可能无法使用两个不同的操作系统直接比较实用程序。
磁盘碎片
这个简单易懂,也有助于我们了解文件系统之间的差异。虽然在一个文件中保存的所有数字数据是一样的,怎么会存储在硬盘上是完全不同的文件系统中的文件系统。文件碎片显然可以提高访问速度,这更多地归因于速度差异。
根据我的理解,ext4尝试将数据写入当前没有数据存在的开放inode的最大连续间隙。当必须读取这些文件时,这极大地减少了延迟,因为单个文件的大部分内容大部分都位于一个连续的轨道上,因此,在查找包含数据的每个块时,驱动器磁头的寻道工作更少组成一个文件。
它(ext4)仍然会变得碎片化,但碎片化程度要小得多,并且不一定像NTFS那样严重影响读写性能。在NTFS上,数据被写入磁头路径中的第一个开放块。
因此,无论磁头位于何处且有开放的块,它都会写入尽可能多的数据,然后在磁头必须移动到磁盘的另一部分(以访问另一个文件)时,将其写入磁盘上其他位置的数据。必须在刚写入另一个文件的同时在刚加载的程序中打开该文件。
这意味着,如果文件很大,则很可能会在彼此分开的磁道中以彼此分开的块形式进行扩展,这就是为什么NTFS经常需要进行碎片整理的原因。
也是为什么服务器通常不使用它的原因,因为服务器不断进行I / O操作,因此需要不断地从磁盘24/7写入和读取数据。
另外我也不确定,但是如果chkdsk
检查每个文件的完整性(我相信它也是fsck
这样做的),那么由于我刚才所描述的关于NTFS碎片的内容,它的比较速度也较慢。
Windows永远不需要在启动时检查NTFS卷。如果确实如此,则说明出现了严重的问题,这比仅发生BSOD或停电要严重得多。您的某些数据很有可能也由于文件系统元数据的损坏而损坏了。磁盘检查无法检测到;其唯一目的是避免进一步的腐败。
KB2854570列出了可能发生这种情况的一些原因。一种是使安装了卷的操作系统进入休眠状态,修改卷的内容,然后在附加卷(重新)后从休眠状态恢复。如果这样做,则很有可能导致静默数据损坏。
我不知道为什么您的ext4文件系统每周检查一次,但是(有希望)可能不是由于每周都会发生类似的危机。它可能只是进行常规的完整性检查,而不是完整的一致性检查。