如何并行向 Amazon EFS 复制数据以及从 Amazon EFS 复制数据,从而尽可能提升 EC2 实例的性能?

上次更新时间:2020 年 4 月 28 日

我有大量文件需要复制或删除。我应该如何在挂载于 Amazon Elastic Compute Cloud (Amazon EC2) 实例的 Amazon Elastic File System (Amazon EFS) 文件系统中并行运行这些作业?

简要说明

使用以下任一工具在 Amazon EFS 文件系统上并行运行作业:

  • GNU parallel – 有关更多信息,请参阅 GNU 操作系统网站上的 GNU Parallel
  • msrsync – 有关更多信息,请参阅 GitHub 网站上的 msrsync
  • fpsync – 有关更多信息,请参阅 Ubuntu 手册网站上的 fpsync

解决方法

GNU parallel

1.    安装 GNU parallel。

对于 Amazon Linux 和 RHEL 6:

$ sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
$ sudo yum install parallel nload -y

对于 RHEL 7:

$ sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ sudo yum install parallel nload -y

对于 Amazon Linux 2:

$ sudo amazon-linux-extras install epel
$ sudo yum install nload sysstat parallel -y

对于 Ubuntu:

$ sudo apt-get install parallel

2.    使用 rsync 命令将文件复制到 Amazon EFS。

$ sudo time find -L /src -type f | parallel rsync -avR {} /dst

或者

$ sudo time find /src -type f | parallel -j 32 cp {} /dst

3.    使用 nload 控制台应用程序监控网络流量和带宽。

$ sudo nload -u M

msrsync

msrsync 是一个适用于 rsync 的 Python 封装程序,可以并行运行多个 rsync 流程。

注意:msrsync 仅与 Python 2 兼容。您必须使用 Python 2.7.14 或更高版本运行 msrsync 脚本。

1.    安装 msrsync。

$ sudo curl -s https://raw.githubusercontent.com/jbd/msrsync/master/msrsync -o /usr/local/bin/msrsync && sudo chmod +x /usr/local/bin/msrsync

2.    使用 -p 选项指定您希望并行运行的 rsync 流程的数量。将 替换为 rsync 流程的数量。-P 选项会显示每个作业的进度。

$ sudo time /usr/local/bin/msrsync -P -p X --stats --rsync "-artuv" /src/ /dst/

fpsync

fpsync 工具使用 fpart 和 rsync 命令并行同步目录。fpsync 工具可以在本地执行多个 rsync 流程,或通过 SSH 在多个节点(工作线程)上启动 rsync 传输。

有关 fpart 的更多信息,请参阅 Ubuntu 手册网站上的 fpart

1.    启用 EPEL 存储库,然后安装 fpart 程序包。

对于 Amazon Linux 和 RHEL 6:

$ sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
$ sudo yum install fpart -y

对于 RHEL 7:

$ sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ sudo yum install fpart -y

对于 Amazon Linux 2:

$ sudo amazon-linux-extras install epel
$ sudo yum install fpart -y

对于 Ubuntu:

$ sudo apt-get install fpart

注意: 在 Ubuntu 中,fpsync 是 fpart 程序包的一部分。

2.    使用 fpsync 同步 /dst /src 目录。将 X 替换为您希望并行运行的 rsync 流程的数量。

$ sudo fpsync -n X /src /dst

这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?