为什么Linux在复制文件时比Windows 10快30倍?

Modified on: Tue, 19 Feb 2019 13:40:02 +0800

我有20.3千兆的文件和文件夹,总计100k +项目。我在Windows 10的一个目录中复制了所有这些文件,这让我感到难以忍受的3小时复制。完成。

前几天,我在Linux Fedora 24中启动,重新复制了相同的文件夹和bam!我花了5分钟就把它复制到了同一个地方但不同的目录。

为什么Linux如此之快? Windows的速度非常慢?

这里有一个类似的问题

是(Ubuntu)Linux文件复制算法比Windows 7更好?

但接受的答案非常缺乏。

最佳答案

它的基础知识分解为整个系统的几个关键组件:UI元素(图形部分),内核本身(与硬件对话)以及数据存储的格式(即文件系统)。

向后看,NTFS是事实上的事实。 Windows已有一段时间了,而主要Linux变种的事实上是ext文件系统。自Windows XP(2001)以来,NTFS文件系统本身没有改变,现有的许多功能(如分区收缩/修复,事务性NTFS等)都是操作系统的功能(Windows Vista / 7/8/10)和 NTFS本身。 ext文件系统在2008年有它的最后一个主要稳定版本(ext4)。由于文件系统本身就是管理文件访问方式和位置的因素,如果你正在使用ext4你可能会注意到速度超过NTFS的改进;但请注意,如果您使用ext2,您可能会注意到它的速度相当。

也可以将一个分区格式化为比另一个分区更小的块。大多数系统的默认值是4096 byte簇大小,但是如果您将ext4分区格式化为类似16k的内容,则每次读取ext4系统将获得4倍数据与NTFS系统(可能意味着文件的4倍,具体取决于存储的位置/方式和大小等)。文件碎片也可以在速度上发挥作用。 NTFS处理文件碎片的方式与ext文件系统完全不同,对于100k +文件,很有可能存在碎片。

下一个组件是内核本身(不是UI,而是实际与硬件对话的代码,真正的操作系统)。老实说,这并没有多大区别。两个内核都可以配置为执行某些操作,如磁盘缓存/缓冲,以加快读取和感知写入,但这些配置通常具有相同的权衡,无论操作系统如何;例如缓存可能会大大提高复制/保存的速度,但如果在缓存写入期间断电(或拔出USB驱动器),那么您将丢失所有未实际写入磁盘的数据,甚至可能损坏已写入的数据磁盘。

例如,在Windows和Linux中将大量文件复制到FAT格式的USB驱动器中。在Windows上,它可能需要10分钟,而在Linux上则需要10秒;复制文件后立即通过弹出安全删除驱动器。在Windows上,它会立即从系统中弹出,因此您可以从USB端口移除驱动器,而在Linux上可能需要10分钟才能实际移除驱动器;这是因为缓存(即Linux将文件写入RAM然后在后台将它们写入磁盘,而无缓存的Windows立即将文件写入磁盘)。

最后是UI(用户与之交互的图形部分)。用户界面可能是一个漂亮的窗口,有一些很酷的图形和漂亮的条形图,可以让我大致了解正在复制的文件数量以及它的大小和可能需要多长时间; UI也可能是一个不打印任何信息的控制台,除非它完成。如果UI必须首先浏览每个文件夹和文件以确定它们有多少文件,加上它们有多大并且在之前进行粗略估计它实际上可以开始复制,那么复制过程可以采取由于UI需要这样做,因此更长。同样,无论操作系统如何,都是如此。

您可以将某些内容配置为相同(例如磁盘缓存或群集大小),但实际上,它只是归结为所有部分如何结合在一起以使系统工作,更具体地说,这些代码实际得到的频率更新。自Windows XP以来,Windows操作系统已经走过了漫长的道路,但是磁盘子系统是一个在所有版本的操作系统中都没有看到太多TLC多年的领域(与Linux生态系统似乎经常看到一些新的FS或改进。

希望增加一些清晰度。

作者:txtechhelp

相关问答

添加新评论