我得到20.3 Gig的文件和文件夹,总计100k +个项目。我将所有这些文件从Windows 10复制到一个目录中,这使我花了3个小时才能完成复制工作。做完了
前几天,我在Linux Fedora 24中启动,复制了相同的文件夹和bam!我只用了5分钟即可将其复制到同一位置但不同的目录中。
为什么Linux这么快?Windows的速度很慢吗?
这里有一个类似的问题
(Ubuntu)Linux文件复制算法是否比Windows 7更好?
但是相当缺乏公认的答案。
我得到20.3 Gig的文件和文件夹,总计100k +个项目。我将所有这些文件从Windows 10复制到一个目录中,这使我花了3个小时才能完成复制工作。做完了
前几天,我在Linux Fedora 24中启动,复制了相同的文件夹和bam!我只用了5分钟即可将其复制到同一位置但不同的目录中。
为什么Linux这么快?Windows的速度很慢吗?
这里有一个类似的问题
(Ubuntu)Linux文件复制算法是否比Windows 7更好?
但是相当缺乏公认的答案。
Answers:
它的基础分解为整个系统的几个关键组件:UI元素(图形部分),内核本身(与硬件对话)以及数据存储的格式(即文件系统) )。
向后走,NTFS
在一段时间以来一直是Windows的事实,而主要Linux变体的事实是ext
文件系统。自Windows XP(2001)起,NTFS文件系统本身就没有发生变化,许多功能(如分区收缩/修复,事务性NTFS等)是操作系统的功能(Windows Vista / 7/8/10)而不是 NTFS本身。该ext
文件系统有它的最后一个主要的稳定版本(ext4
)在2008年由于文件系统本身是什么支配如何以及在何处访问文件,如果你使用的ext4
有,你会在NTFS注意到一个改进速度的可能的机会; 请注意,但是如果您使用ext2
过它,您可能会注意到它的速度可比。
一个分区格式化为比另一个分区小的块也可以。对于大多数系统默认为4096 byte
1,2簇大小,但是如果你格式化你的ext4
分区像16k
3,则每个读取ext4
系统将获得4倍与NTFS系统中的数据(这可能意味着4倍的文件,这取决于存储的内容位置/方式以及大小等)。文件碎片也会影响速度。NTFS处理文件碎片的方式与ext
文件系统非常不同,对于100k +个文件,很有可能会有碎片。
下一个组件是内核本身(不是UI,而是实际与硬件对话的代码,即真正的OS)。在这里,老实说并没有太大的区别。可以将两个内核都配置为执行某些操作,例如磁盘缓存/缓冲,以加快读取和感知写入的速度,但是这些配置通常在相同的权衡下与操作系统无关。例如,高速缓存似乎可以极大地提高复制/保存的速度,但是如果您在高速缓存写入过程中断电(或拔出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)。或相当频繁地进行改进)。
希望可以增加一些清晰度。