将数百万份文档传输到外部硬盘驱动器

Posted

技术标签:

【中文标题】将数百万份文档传输到外部硬盘驱动器【英文标题】:Transferring millions of documents to an external hard drive 【发布时间】:2021-12-27 23:46:32 【问题描述】:

我在 Azure Blob 存储中有 1300 万个文档,我可以在 24 小时内将它们复制到我的桌面内存中。但是,一旦我尝试将这些文件传输到我的外部硬盘驱动器,完成传输所需的时间就会跳到 60 天。这些文件并不大 - 每个 100 kb - 所以整个传输大约是 1.3 TB。我试过了:

    压缩文件、传输、解压缩。问题:解压缩需要同样长的时间 azcopy 直接复制到 SSD 硬盘中 robocopy 文件从内部驱动器到外部驱动器 简单的 ctrl-c ctrl-v.

上述每个选项都需要数月才能完成转移。关于如何加快速度的任何想法???为什么内部驱动器的 azcopy 比外部驱动器快得多?

【问题讨论】:

您是否并行 robocopy 文件? ( /MT ?) 对,试了几个不同的线程数,差别不大 【参考方案1】:

性能问题可能有多种原因。 您可以对特定 blob 容器或文件共享运行性能基准测试,以查看一般性能统计信息并确定性能瓶颈。您可以通过上传或下载生成的测试数据来运行测试。

使用以下命令运行性能基准测试。

语法

azcopy benchmark 'https://<storage-account-name>.blob.core.windows.net/<container-name>'

Optimize the performance of AzCopy with Azure Storage

根据您的需要,可以选择多种方式将数据传入和传出 Azure:Transfer data to and from Azure

Azcopy 快速数据传输是一种用于将数据快速上传到 Azure 的工具——从单个客户端计算机每小时上传高达 4 TB。它将数据从您的场所移动到 Blob 存储、群集文件系统或直接移动到 Azure VM。它还可以在 Azure 区域之间移动数据。

该工具通过最大限度地利用网络链接来工作。它有效地使用所有可用带宽,甚至在长距离链路上也是如此。在 10 Gbps 链路上,它达到每小时 4 TB 左右,这使其比我们测试过的竞争工具快大约 3 到 10 倍。在较慢的链路上,快速数据传输通常可以达到链路理论最大值的 90% 以上,而其他工具可能会大大降低。

例如,在 250 Mbps 链路上,理论最大吞吐量约为每小时 100 GB。即使链路上没有其他流量,其他工具的效果也可能远低于此。在相同条件下(250 Mbps,无竞争流量),预计快速数据传输每小时至少传输 90 GB。 (如果链路上存在竞争流量,Fast Data Transfer 将相应降低自身的吞吐量,以避免中断您现有的流量。)

快速数据传输可在 Windows 和 Linux 上运行。它的客户端部分是在您自己的机器上本地运行的命令行应用程序。单个客户端实例最高支持 10 Gbps。它的服务器端部分在你自己订阅的 Azure VM 上运行。根据目标速度,需要 1 到 4 个 Azure VM。提供了一个 Azure 资源管理器模板来自动创建必要的 VM。

您的文件非常小(例如,每个文件只有 10 KB)。 你有一个带有专用对等互连的 ExpressRoute。 您希望限制传输以仅使用一定数量的网络带宽。 您希望直接加载到目标 VM 的磁盘(或集群文件系统)。大多数 Azure 数据加载工具无法将数据直接发送到 VM。诸如 Robocopy 之类的工具可以,但它们不是为长距离链接而设计的。我们有报告称快速数据传输速度提高了 10 倍以上。 您正在从旋转硬盘读取数据,并希望最大限度地减少寻道时间的开销。在我们的测试中,我们能够按照快速数据传输说明中的调整提示将磁盘读取性能提高一倍。

【讨论】:

以上是关于将数百万份文档传输到外部硬盘驱动器的主要内容,如果未能解决你的问题,请参考以下文章

硬盘驱动器和 Android Studio

如何擦除硬盘驱动器

外部硬盘驱动器上的 MySQL 表

在 XP 和 Windows 7 上的外部硬盘驱动器上运行 xampp

使用 osx 终端从外部硬盘驱动器中提取具有特定名称的子文件夹。

使用外部硬盘驱动器,heroku 2.4.0 命令不起作用