注意:

使用 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 工作负载)到超字节级数据湖。

确定需要迁移的数据量,以及切换到新 OCI 存储平台的停机时间。批量迁移是将迁移细分为可管理增量的一个不错选择。通过批量迁移,您可以跨不同窗口为特定应用程序安排停机时间。一些客户可以在 2-4 天内灵活地在安排的维护窗口中执行一次性迁移。OCI FastConnect 可用于在 OCI 与您的环境之间创建专用连接,端口速度从 1G 到 400G,从而加快数据传输过程。OCI FastConnect 可与 Megaport 和 ConsoleConnect 等合作伙伴解决方案集成,以创建与数据中心或云到云互连的专用连接,从而更直接地将数据从其他云供应商迁移到 OCI 云存储服务。有关详细信息,请参阅 FastConnect 与 Megaport Cloud Router 的集成

Rsync 和 Fpsync 的区别

目标读者

DevOps 工程师、开发人员、OCI 云存储管理员和用户、IT 管理人员、OCI 超级用户和应用管理员。

目标

了解如何使用 rsync 和 fpsync 将数据复制并同步到 OCI 云存储服务:

先决条件

将数据迁移到 OCI 文件存储

Fpsync 和 rsync 可用于将文件系统数据(OCI File Storage 服务、OCI Block Volumes 服务、OCI File Storage with Lustre、本地文件系统和本地网络文件系统 (NFS) 迁移到其他文件系统存储类型(包括 OCI File Storage)。

使用 Rsync 迁移数据

  1. 将 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/
    
  2. 并行运行多个 rsync 进程。

    • 可以使用 findxargs 命令运行多个 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。

  1. 在 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
    
  2. 使用以下命令运行 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 文件存储服务。

下图显示了组件体系结构图。

组件体系结构图

执行相应步骤:

  1. 标识三个 worker 节点和一个目标节点。

    确定您有权访问的三个用于挂载源文件系统的本地系统。您也可以创建和启动三个 OCI Compute VM 实例以进行测试。

    标识现有 OCI VM 实例,或者创建并启动新的实例作为目标节点。

  2. 将源 NAS 共享挂载到三个节点。

    使用 nordirplusnconnect=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。

  3. 选择要运行 fpsync 的节点并更新 /etc/hosts 文件。

    可以选择三个节点之一或其他节点来运行 fpsync 命令。运行 fpsync 命令的节点称为执行节点。

    在将运行 fpsync 的节点上,使用首选文本编辑器将 /etc/hosts 文件更新为三个 worker 节点 worker-src-1worker-src-2worker-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
    
  4. 在目标节点上挂载目标文件系统。

    确定目标文件系统并将其挂载到目标节点上。或者,创建 OCI 文件存储并将其挂载到目标节点上。

  5. 确保已建立与 OCI 的本地连接。

    使用通用网络工具(例如 pingtraceroutessh 等)验证系统、内部部署与 OCI 之间的连接。

  6. 在所有源节点和目标节点之间启用无密码 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
    
  7. 在执行器节点中运行 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/

下表显示了 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 云存储服务,请执行以下操作:

确认

更多学习资源

浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心