注意:
- 本教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure 免费套餐。
- 它对 Oracle Cloud Infrastructure 身份证明、租户和区间使用示例值。完成实验室后,请使用特定于云环境的那些值替换这些值。
使用 Fpsync 和 Rsync 将数据迁移到 OCI Cloud Storage Services
简介
这是四个教程系列的教程 4,其中介绍了将数据迁移到 Oracle Cloud Infrastructure (OCI) 云存储服务的各种方法。该系列的设置使您可以查看教程 1:使用迁移工具将数据移动到 OCI 云存储服务,以广泛了解各种工具,然后转到与您的迁移需求相关的相关教程或文档。本教程重点介绍如何使用 fpsync 和 rsync 将文件系统数据迁移到 OCI 文件存储。
OCI 为客户提供高性能计算和低成本的云存储选件。通过按需本地存储、对象存储、文件存储、块存储和归档存储,Oracle 可满足关键存储负载要求和用例。
OCI 云存储服务提供快速、安全、持久的云存储选项,可满足您的所有企业需求。从高性能选件开始,例如带 Lustre 的 OCI 文件存储和 OCI 块存储卷服务;从具有高性能装载目标的 OCI 文件存储服务到具有高持久性和可扩展性的 OCI 对象存储的全托管艾字节级文件系统。我们的解决方案可以满足您的需求,从性能密集型应用(例如 AI/ML 工作负载)到超字节级数据湖。
-
fpsync 工具是缺省情况下使用 rsync 的并行包装程序脚本。它还可以使用 Rclone(如 Tutorial 2:Move Data into OCI Cloud Storage Services using Rclone )、tar、tarify 和 cpio。
-
Rsync 是一个通用实用程序,用于为远程和本地文件系统传输和同步文件。
确定需要迁移的数据量,以及切换到新 OCI 存储平台的停机时间。批量迁移是将迁移细分为可管理增量的一个不错选择。通过批量迁移,您可以跨不同窗口为特定应用程序安排停机时间。一些客户可以在 2-4 天内灵活地在安排的维护窗口中执行一次性迁移。OCI FastConnect 可用于在 OCI 与您的环境之间创建专用连接,端口速度从 1G 到 400G,从而加快数据传输过程。OCI FastConnect 可与 Megaport 和 ConsoleConnect 等合作伙伴解决方案集成,以创建与数据中心或云到云互连的专用连接,从而更直接地将数据从其他云供应商迁移到 OCI 云存储服务。有关详细信息,请参阅 FastConnect 与 Megaport Cloud Router 的集成。
Rsync 和 Fpsync 的区别
-
Rsync 是一个传统的 Linux 操作系统 (Operating System,OS) 实用程序,用于在相同或不同地理位置对一台计算机中的数据执行一次性复制或定期同步。对于大型数据集,单个 rsync 进程可能不足以在所需的时间内执行传输。Rsync 可以选择启动多个 rsync 进程,每个进程在数据集的特定子集上运行,从而比单个进程更快地完成数据集传输。但是,根据数据集层次结构的复杂性,确定有多少进程和哪些子集可能具有挑战性之间的平衡。Fpsync 简化了此过程。Fpsync 是一个编排器,它将整个数据集拆分成较小的块,并根据用户集并行性生成多个 rsync 进程。在内部,Fpsync 使用 rsync 执行实际传输。Cpio 和 tar 选项可用作 fpsync 的底层工具选项,但 rsync 是缺省选项。
-
Fpsync 具有 Worker 节点选项,您可以在多个节点之间(而不是单个节点)分配传输。除了增加同一节点中的并行 rsync 进程(向上扩展)之外,您还可以增加节点数(向外扩展)以运行增加的 rsync 进程数。
目标读者
DevOps 工程师、开发人员、OCI 云存储管理员和用户、IT 管理人员、OCI 超级用户和应用管理员。
目标
了解如何使用 rsync 和 fpsync 将数据复制并同步到 OCI 云存储服务:
-
了解如何同时使用 rsync 和 fpsync。
-
了解使用 fpsync 的性能优势。
先决条件
-
OCI 账户。
-
Oracle Cloud Infrastructure 命令行界面 (Command Line Interface,OCI CLI) 随工作配置文件一起安装在名为
.oci
的子目录中的主目录中。有关详细信息,请参阅设置配置文件。 -
创建、导出和装载 OCI 文件存储或访问已在 VM 上挂载的 OCI 文件存储装载目标的用户权限。有关更多信息,请参见 Manage File Storage Policy 。
-
您知道如何创建、管理和挂载网络连接存储 (NAS) 和 OCI 文件存储。有关更多信息,请参见 OCI Configuring File System Storage 和 Overview of File Storage 。
-
访问创建和启动 OCI 计算实例,或访问 3 个系统以运行 fpsync。有关详细信息,请参阅创建实例。
-
熟悉:
-
使用 SSH、生成 SSH 密钥以及使用 SSH 配置文件。有关更多信息,请参见 Creating an SSH Key Pair on the Linux Command Line for OCI Access 。
-
用于检查两个站点或系统之间的连接的基本网络工具和命令。
-
在 Mac OS、Linux、Berkeley Software Distribution (BSD) 和 Windows PowerShell、命令提示符或 bash 上使用终端或 shell 接口。
-
在 Linux 系统上安装软件。
-
-
要了解我们可以使用的迁移工具,请参阅教程 1:使用迁移工具将数据迁移到 OCI 云存储服务。
将数据迁移到 OCI 文件存储
Fpsync 和 rsync 可用于将文件系统数据(OCI File Storage 服务、OCI Block Volumes 服务、OCI File Storage with Lustre、本地文件系统和本地网络文件系统 (NFS) 迁移到其他文件系统存储类型(包括 OCI File Storage)。
使用 Rsync 迁移数据
-
将 rsync 用于实例到实例流。
对于不超过几万 GB 和几千个文件的小数据集,可以使用 rsync 实例到实例流。实例到实例流处理在网络内使用 SSH 启用的本地 NFS,在源网络和目标网络之间使用 SSH,从而有助于减少两个网络之间 NFS 的延迟。请使用以下命令。
rsync --archive --perms --owner --group --xattrs --acls --recursive --delete --compress --ignore-errors --progress --log-file=$HOME/rsync/logs/test.log1 --quiet -e ssh /src/path/ root@<destination_instance>:/destination/path/
-
并行运行多个 rsync 进程。
-
可以使用
find
和xargs
命令运行多个 rsync 进程。find /src/path/ -maxdepth 1 | xargs -P 24 -I {} rsync --archive --perms --owner --group --xattrs --acls --recursive --delete --compress --log-file=<logfile_path> -quiet -e ssh {} root@<destination_instance>:/destination/path/
-
您还可以使用 GNU 并行。
find /src/path/ -maxdepth 1 | parallel -P24 rsync --archive --perms --owner --group --xattrs --acls --recursive --delete --compress --exclude=.snapshot --ignore-errors --progress --log-file=$HOME/rsync/logs/test.log1 --quiet -e ssh {} root@<destination_instance>:/destination/path/
注:在这两个示例中,一次运行 24 个进程,根据所用实例的 CPU 容量选择该参数。
-
使用 Fpsync 迁移数据
fpsync 工具是 rsync 的并行包装器。它也可以使用 tar、tarify 和 cpio,但缺省值为 rsync。
-
在 Linux 计算机上安装 fpsync。
- 对 Linux 8 运行以下命令。
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm sudo yum install fpart -y
- 对 Linux 9 运行以下命令。
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm sudo yum install fpart -y
-
使用以下命令运行 fpsync。
例如:
fpsync -v -n `nproc` -o "-lptgoD -v --numeric-ids --logfile /tmp/fpsync.log1” /src/path/ root@<destination_instance>:/destination/path/
注:有关更多 fpsync 选项和参数详细信息,请参阅
man fpsync
。
使用三个 Worker 节点运行 Fpsync,将数据从内部部署文件共享迁移到 OCI 文件存储服务
使用三个 worker 节点运行 fpsync,将数据从内部部署文件共享(本地磁盘、SAN 或 NAS)迁移到 OCI 文件存储服务。
下图显示了组件体系结构图。
执行相应步骤:
-
标识三个 worker 节点和一个目标节点。
确定您有权访问的三个用于挂载源文件系统的本地系统。您也可以创建和启动三个 OCI Compute VM 实例以进行测试。
标识现有 OCI VM 实例,或者创建并启动新的实例作为目标节点。
-
将源 NAS 共享挂载到三个节点。
使用
nordirplus
和nconnect=16
挂载选项,不要指定其他nfs
挂载选项。例如,在 Linux 系统上运行以下 mount 命令。
sudo mount -t nfs -o nordirplus,nconnect=16 10.x.x.x:/<EXPORT_PATH_NAME> /mnt/nfs-data
例如,运行以下命令验证挂载。
mount | grep /mnt/nfs-data
注:为了进行测试,您可以使用 OCI File Storage 创建、导出和挂载文件系统。可以在挂载中创建测试数据以尝试 fpsync。
-
选择要运行 fpsync 的节点并更新
/etc/hosts
文件。可以选择三个节点之一或其他节点来运行
fpsync
命令。运行fpsync
命令的节点称为执行节点。在将运行 fpsync 的节点上,使用首选文本编辑器将
/etc/hosts
文件更新为三个 worker 节点worker-src-1
、worker-src-2
和worker-src-3
。例如:
vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.0.0.4 worker-src-1.subnet.vcn.oraclevcn.com worker-src-1 10.0.0.5 worker-src-2 10.0.0.6 worker-src-3
-
在目标节点上挂载目标文件系统。
确定目标文件系统并将其挂载到目标节点上。或者,创建 OCI 文件存储并将其挂载到目标节点上。
-
确保已建立与 OCI 的本地连接。
使用通用网络工具(例如
ping
、traceroute
、ssh
等)验证系统、内部部署与 OCI 之间的连接。 -
在所有源节点和目标节点之间启用无密码 SSH,并验证源节点和目标节点对之间的 SSH 连接。
确定将在执行程序节点上执行
fpsync
命令的用户的公共 SSH 密钥。此密钥通常位于用户的起始目录(位于.ssh
目录下),通常名为id_rsa.pub
。通过使用cat
命令显示密钥内容、复制密钥并将其粘贴到 worker 节点上的$HOME/.ssh/authorized_keys
文件,将此密钥传播到所有 worker 节点。或者,如果启用了基于密码的 SSH,则可以使用ssh-copy-id
命令将密钥分配给每个 worker 节点和目标节点。例如:[worker-src-1 ~]$ ssh-copy-id username@worker-src-2
-
在执行器节点中运行 fpsync 命令。
注: fpsync 仅需要在执行节点上安装,执行节点将通过 SSH 通过 worker 节点将
rsync
命令运行到目标节点。例如:
fpsync -v -n X -f Y -o "-lptgoD -v --numeric-ids -e ssh -C" \ -w username@worker-src-1 -w username@worker-src-2 -w username@worker-src-3 \ -d /nfs-data/fpsync_wrkr /nfs-data/fpsync_src/ opc@worker-dest:/fpsync-fs/
注:将 X 和 Y 替换为 fpsync 选项
-n
和-f
的值。-
确定并发同步作业的值,即
-n
。- 选择
-n
值,使其等于源中所有 worker 节点的cpu_cores
数,并保留 CPU 和内存相同的目标 worker 节点数。 - 如果您有 3 个 worker 节点,每个节点具有 16 个 CPU 核心,则为 3 个 worker 节点乘以 16,
cpu_cores
= 48。
- 选择
-
确定每个同步作业要传输的文件量的值,即
-f
。- 例如,如果有两个文件夹具有较大的目录和总共 110 万个文件,则这两个文件夹包含平均文件大小为 160KB 的 ~700K 文件。
- 每个 worker 节点配置有:64GB = 6400000KB 内存,8 个 OCPU= 16
cpu_cores
,每个cpu_core
的内存为:640000000/16 = 4000000KB/cpu_core
。每个 worker 节点中的内存 = 64GB = 6400000KB。 - 计算
-f
、4000000KB/160 = 25000 的值。
-
(可选)测试环境
为了模拟本地到 OCI 的迁移,包含以下数据集的 OCI 文件存储文件系统 (Ashburn) 用作本地 NAS 共享,OCI 文件存储文件系统 (Phoenix) 用作目标。
两个区域均使用动态路由网关进行远程对等连接。
数据集目录 | 大小 | 文件计数 | 每个文件的大小 |
---|---|---|---|
目录 1 | 107.658 GiB | 110,242 | 1 MiB |
目录 2 | 1.687 GiB | 110,569 | 15 MiB |
目录 3 | 222 GiB | 111 | 2 GiB |
目录 4 | 1.265 TiB | 1,295 | 1 GiB |
目录 5 | 26.359 GiB | 1,687 | 16 MiB |
目录 6 | 105.281 MiB | 26,952 | 4 KiB |
目录 7 | 29.697 MiB | 30,410 | 1 KiB |
目录 8 | 83.124 GiB | 340,488 | 256 KiB |
目录 9 | 21.662 GiB | 354,909 | 64 KiB |
目录 10 | 142.629 GiB | 36,514 | 4 MiB |
目录 11 | 452.328 MiB | 57,898 | 8 MiB |
目录 12 | 144 GiB | 72 | 2GiB |
目录 13 | 208.500 GiB | 834 | 256 MiB |
目录 14 | 54.688 GiB | 875 | 64 MiB |
VM 实例:在阿什本和菲尼克斯区域,都使用三个 16 cpu_core
、64GB 内存、8Gbps 带宽 Linux9 VM 作为 worker 节点,使用 8 个 cpu_core
VM 作为执行器节点。
以下是所有实例具有的 TCP 设置:
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 87380 16777216
net.ipv4.tcp_window_scaling = 1
两个区域实例都挂载了相应的 OCI 文件存储文件系统,如 Run Fpsync using Three Worker Nodes to Migrate Data from On-Premises File Shares to OCI File Storage Service 一节中所述。
运行以下 fpsync
命令。X 和 Y 是 fpsync 选项。
fpsync -v -n X -f Y -o "-lptgoD -v --numeric-ids -e ssh -C" \
-w opc@worker-src-1 -w opc@worker-src-2 -w opc@worker-src-3 \
-d /fpsync-fs/fpsync_wrkr /fpsync-fs/x_region_fpsync_src/ opc@worker-dest:/fpsync-fs/
-
确定
-n
的值。Select the -n value to be equal to number of cpu_cores of all worker nodes in the source and keep as many as destination worker nodes of same CPU and memory. In this example, it is 3 worker nodes times 16 cpu_cores = 48.
-
确定
-f
的值。In this example, two folders are large directories. Of the total 1.1 million files, the two folders contain ~700K files with an average file size of 160KB. Memory in each worker node = 64GB = 64000000KB. Processes in each worker node = 8 OCPU = 16 cpu_cores. Memory per Process = 64000000/16 = 4000000KB/process. Now, an appropriate value for -f can be calculated as 4000000KB / 160 = 25000.
下表显示了 fpsync 为不同 X 和 Y 以及 rsync SSH 和压缩组合完成 225 TB 和 100 万个数据传输文件所用的时间。
fpsync 选项 | 源和目标 worker 节点上的 nfs 挂载选项 | 文件存储装载目标性能类型 | 所用时间 |
---|---|---|---|
-n 30 -f 2000 -e ssh | nconnect=16,nordirplus | 3 个标准装载目标,1:1 个映射到 worker 节点 | 237m28s |
-n 48 -f 5000 -e ssh -C | nconnect=16,nordirplus | 源和目的地 1 HPMT 40 每个 | 163m38.887s |
-n 60 -f 20000 | nconnect=16,nordirplus | 3 个标准装载目标,1:1 个映射到 worker 节点 | 124m25.435s |
-n 48 -f 400000 -e ssh -C | nconnect=16,nordirplus | 3 个标准装载目标,1:1 个映射到 worker 节点 | 122m55.458s |
-n 100 -f 200000 -e ssh | nconnect=16,nordirplus | 3 个标准装载目标,1:1 个映射到 worker 节点 | 120m44s |
-n 60 -f 200000 -e ssh | 仅 Nordirplus,无 nconnect | 3 个标准装载目标,1:1 个映射到 worker 节点 | 118m41.393s |
-n 60 -f 200000 -e ssh | nconnect=16,nordirplus | 3 个标准装载目标,1:1 个映射到 worker 节点 | 118m3.845s |
-n 48 -f 20000 -e ssh | nconnect=16,nordirplus | 源和目的地 1 HPMT 40 每个 | 113m34.011s |
-n 48 -f 200000 | nconnect=16,nordirplus | 源和目的地 1 HPMT 40 每个 | 110m15.555s |
-n 48 -f 200000 | nconnect=16,nordirplus | 源和目的地 1 HPMT 40 每个 | 109m3.472s |
我们可以看到 -n
超过 48 和 -f
超过 20000 的任何组合在跨区域的传输时间大约为 2 小时左右提供了类似的性能。即使具有高性能挂载目标 40 GBps,所用时间也没有显著缩短。
结果意味着,根据要传输的实际数据集的大小,您可以为文件系统选择多个标准或高性能挂载目标。如果源数据集主要由大文件(文件大小 >= 1M)组成,并且总数据集大小为 20TB 及以上,则高性能挂载目标是一个不错的选择。否则,具有横向扩展配置的标准挂载目标可以提供所需的性能以及经济高效。
后续步骤
转至与您的迁移需求相关的相关教程。要将数据迁移到 OCI 云存储服务,请执行以下操作:
-
使用 Rclone,请参见 Tutorial 2:Move Data into OCI Cloud Storage Services using Rclone 。
-
使用 OCI Object Storage Sync 和 S5cmd,请参阅教程 3:使用 OCI Object Storage Sync 和 S5cmd 将数据迁移到 OCI Cloud Storage Services 。
相关链接
确认
- 作者 — Vinoth Krishnamurthy(OCI 文件存储技术人员首席成员)
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Move Data into OCI Cloud Storage Services using Fpsync and Rsync
G25652-01
January 2025
Copyright ©2025, Oracle and/or its affiliates.