我尝试将本地文件复制到 AWS Storage Gateway 上的网络文件系统 (NFS) 或服务器消息块 (SMB) 文件共享,但传输速度很慢。如何提高上传性能?
解决方法
当您将本地文件复制到 Storage Gateway 上的文件共享时,请考虑以下方法来提高性能:
**注意:**文件网关是对象存储缓存,而不是文件服务器。这意味着文件网关的性能特征与文件服务器的性能特征不同。
扩展您的工作负载
为获得最佳性能,请通过添加线程或客户端来扩展工作负载。传输文件目录时,当工作负载是多线程或涉及多个客户端时,文件网关可以获得最佳扩展。查看您的文件管理工具,并确认默认情况下该工具是否运行单线程上传。
在传输小文件或大文件时,最佳做法是使用多个线程或客户端。当您使用多个线程传输大文件(每个文件数十或数百 MiB)时,您将获得最高的每秒 MiB 吞吐量。由于创建新文件会产生开销,相同的工作负载下,相比大文件,传输许多小文件会导致每秒 MiB 吞吐量降低。
要在 Windows 中执行多线程复制,请使用 Microsoft 推出的文件复制工具 robocopy。
**注意:**对于较小文件的传输,请测量每秒文件的传输速率,而不是每秒 MiB 吞吐量。文件创建速度可能会占用与传输较小文件相关的工作负载空间。
调优您的缓存存储空间
将网关的总缓存存储空间大小调整为活跃工作集的大小。使用多个本地磁盘的缓存可以并行访问数据并实现更高的每秒 I/O 操作数 (IOPS)。有关更多信息,请参阅 Amazon Simple Storage Service (Amazon S3) 文件网关的性能指南。
另外,监控网关的 CachePercentDirty 指标。此指标返回未保存到 S3 存储桶的数据占用的缓存存储空间百分比。较高的 CachePercentDirty 值可能会导致网关的缓存存储空间限制对网关的写入。
使用性能更高的磁盘
最佳实践是使用支持固态硬盘 (SSD) 的磁盘作为网关的缓存存储空间,并使用专用租赁。理想情况下,不应与其他虚拟机共享底层物理磁盘,以防止 IOPS 耗尽。
要测量磁盘 IOPS,请结合使用 ReadBytes 和 WriteBytes 指标以及 CloudWatch 中的示例统计数据。通常,当您审查网关的这些指标时,请查找低吞吐量和低 IOPS 趋势,这些指标表明任何与磁盘相关的瓶颈。
监控 CloudWatch 中的 IOWaitPercent 指标,该指标报告 CPU 等待本地磁盘响应的时间百分比。高于 10% 的值通常表示底层磁盘存在瓶颈,可能是磁盘速度变慢造成的。在此情况下,添加附加的磁盘以为网关提供更多可用的 IOPS。
注意:对于基于 Amazon Elastic Compute Cloud (Amazon EC2) 的网关,实例的 Amazon Elastic Block Store (Amazon EBS) 吞吐量也可能是一个限制因素。确认网关的主机虚拟机或 Amazon EC2 实例的 CPU 和 RAM 支持网关传送到 AWS 的吞吐量。例如,每个 EC2 实例类型都有不同的基准吞吐量。如果突增吞吐量耗尽,则实例将使用其基准吞吐量,进而可能限制上传到 AWS 的吞吐量。如果您的网关托管在 Amazon EC2 实例上,请检查该实例的 NetworkOut 指标。如果 NetworkOut 指标在测试期间保持基准吞吐量,则考虑将实例更改为较大的实例类型。