首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于Windows上的大量文件,复制速度非常慢

对于Windows上的大量文件,复制速度非常慢
EN

Server Fault用户
提问于 2012-12-11 16:26:27
回答 2查看 2.6K关注 0票数 -1

我已经运行了以下测试,我使用这个批处理创建了一个包含15,000个400个字节文件的文件夹:

代码语言:javascript
复制
@ECHO off
SET times=15000

FOR /L %%i IN (1,1,%times%) DO (
    fsutil file createnew filename%%i.txt 400
)

然后使用以下命令将其复制到Windows计算机上:

代码语言:javascript
复制
robocopy LargeNumberOfFiles\ LargeNumberOfFiles2\

在它完成后,我可以看到传输速率是915810字节/秒,小于1MB/S,我花了几秒钟复制7 MBytes,请注意,这是非常慢的。

我对一个文件只有50兆字节的文件夹进行了同样的尝试,传输速率为1219512195字节/秒。(是的,GB/s)瞬间。

为什么要在windows文件系统上复制大量的文件?

请注意,我曾尝试在运行在虚拟机(vmware player)的同一台计算机上的linux系统上使用ext3文件系统。

我使用cp命令,副本是即时的!

还请注意以下各点:

  • 无抗病毒
  • 我已经在多个windows计算机上测试过这种行为(通常是ntfs),我总是得到类似的结果(传输速率在1MB/s平均7-8秒内复制7 MBytes)。
  • 我已经在多个linux ext3系统上进行了测试,这个数量的拷贝总是即时的(15000个文件,400个字节)
  • 问题在于了解为什么windows文件系统复制大量文件的速度比linux文件系统慢。
EN

回答 2

Server Fault用户

回答已采纳

发布于 2012-12-12 15:00:31

您的15,000份文件至少需要60,000份HD交易才能完成:

  1. 读取源文件
  2. 分配新目标文件描述符
  3. 写入目标文件
  4. 更新目标文件描述符

您可能也在使用SATA驱动器(只是猜测),它不支持命令队列,这意味着驱动器将必须逐个遍历所有60000个操作。高端SCSI驱动器和阵列将通过在类似位置排队执行几个操作来提高性能。

您的单个文件副本至少需要4次操作(尽管可能还需要几次操作,这取决于);与以前一样。如果读写操作中有文件片段,则可能超过4个。

吞吐量不仅以每秒字节为单位,而且还以IOps (实质上是每秒的操作)来衡量。你正受到这两种中的后一种的限制。

票数 4
EN

Server Fault用户

发布于 2012-12-11 18:12:29

最可能的原因是您的Windows系统在复制和粘贴时正在创建缩略图预览。而是使用CLI工具,比如机器人复制

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/457102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档