注意:

使用 OCI Object Storage Sync 和 s5cmd 工具将数据迁移到 OCI Cloud Storage Services

简介

这是四个教程系列的教程 3,其中介绍了将数据迁移到 Oracle Cloud Infrastructure (OCI) 云存储服务的各种方法。该系列的设置使您可以查看教程 1:使用迁移工具将数据移动到 OCI 云存储服务,以广泛了解各种工具,然后转到与您的迁移需求相关的相关教程或文档。本教程重点介绍如何使用 OCI Object Storage Sync(os sync) 和 s5cmd 将文件系统数据(包括 OCI File Storage)迁移到 OCI Object Storage,以及从 OCI Object Storage 中迁移文件系统数据。

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 的集成

目标读者

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

目标

了解如何使用 OCI CLI、OS 同步和 s5cmd 工具将文件系统数据复制到 OCI Object Storage 和/或同步 OCI Object Storage。

先决条件

将网络文件系统和本地文件系统数据同步到 OCI 对象存储/从 OCI 对象存储同步

OCI Object Storage Sync 是 OCI 命令行界面 (CLI) 的一部分,用于将文件系统目录与存储桶中的对象同步。该命令遍历子目录,将新的和修改的文件或对象从源复制到目标,并可选择删除源中不存在的文件或对象。它是保持文件系统数据和 OCI Object Storage 存储桶同步的便捷工具。我们的测试环境发现,OCI Object Storage Sync 在混合数据集方面的性能优于其他大型文件工具(1TB 或更多)。

OCI 对象存储支持 Amazon S3 兼容 API。已经熟悉各种 Amazon S3 工具的客户可以继续使用这些工具。s5cmd 工具是一个免费的开源项目。它允许浏览和传输数据到/从 S3 兼容对象存储。它使用 Go 语言编写,并针对并行吞吐量进行了优化。在测试过程中,我们发现 s5cmd 工具最适合小文件(小于 1MB 到 30MB 的文件),并且执行了移动小文件的所有其他工具。在将数据从文件系统移动到 OCI Object Storage 时,s5cmd 工具也适用于混合数据集。

如果您的数据可以按目录或前缀组织为子集,您还可以横向扩展您的操作系统同步,并在多个 VM 上运行 s5cmd 以缩短传输时间。

使用操作系统同步进行同步

  1. 将本地文件系统数据同步到 OCI Object Storage。

    运行以下基本 os sync 命令以将源目录中的文件同步到目标存储桶中。

    oci os object sync --src-dir <path to migration-files> --bucket-name <bucket name>
    

    注:此命令可用于内部部署本地文件系统、内部部署 NFS 文件系统以及具有 OCI File Storage NFS 挂载的 OCI 计算实例,以将数据从 OCI File Storage 移动到 OCI Object Storage 桶。

  2. 将数据从 OCI Object Storage 迁移到本地文件系统。

    运行以下基本 os sync 命令以同步目标文件系统中源存储桶中的文件/对象。

    oci os object sync --dest-dir <path to migration-target directory> --bucket-name <bucket name>
    

    注:此命令可用于内部部署本地文件系统、内部部署 NFS 文件系统以及具有 OCI File Storage NFS 挂载的 OCI 计算实例,以将数据从 OCI File Storage 服务移动到 OCI Object Storage 桶中。

  3. 增加并行操作。

    默认情况下,仅并行运行 10 个操作,增加并行操作可提高数据传输速度,并消耗更多的系统资源和带宽。在我们的测试环境中,我们使用 VM.Standard.E4.Flex 和 24 个 OCPU、24Gbps 网络带宽、384GB 内存,并找到了 100 个并行操作,以最适合传输速度。较大的 VM 可以一次将此数量增加 10 个操作,直到达到最佳传输速度或达到最多 1,000 个并行传输。较小的 VM 配置应从 10 个操作开始,并以 5-10 为增量增加,直到达到良好的吞吐量。使用以下标志增加或减少并行操作。

    --parallel-operations-count <integer range>
    

    注:如果在增加并行操作后开始出现错误,特别是出现 429 "TooManyRequests" 错误,请将并行操作减少 2,直到错误停止。

  4. 使用 pattern 命令过滤匹配的文件。

    模式可用于包括或排除匹配的文件。模式命令可以在命令行上多次使用,以匹配多个模式。

    • 要包括与模式匹配的文件,请使用以下命令。

      --include
      
    • 要排除与模式匹配的文件,请使用以下命令。

      --exclude
      

    注:

    • *匹配所有内容
    • ?匹配任何单个字符
    • [sequence]匹配序列中的任何字符
    • [!sequence]匹配序列中不存在的任何字符
  5. 使用 --prefix 标志。

    使用 --src-dir 命令将文件上载到对象存储时使用的 --prefix 标志将上载对象并将目录路径作为前缀添加到对象名称。用于从 OCI 对象存储下载对象时,仅下载具有指定前缀的对象,不会显示为对象/文件名的一部分。

  6. 在运行之前验证传输。

    在开始传输之前,您可以确定哪些文件将上载/下载到 OCI Object Storage/从 OCI Object Storage 中/从 OCI Object Storage 中执行打印。使用以下标志运行命令行。

    --dry-run
    

使用 s5cmd 同步

  1. 同步和复制命令。

    • s5cmd 的 sync 选项在不修改任何源文件的情况下进行从源到目标的单向同步,并且也不会删除源上不存在的目标上的文件。添加 --delete 标志以删除目标上不存在的文件。

    • copy 命令将简单地将对象从源复制到目标。

  2. 模式匹配。

    s5cmd 工具支持用于同步和复制操作的多级通配符。这是通过以下方法实现的:列出前缀在第一个通配符之前的所有对象,然后在内存中过滤结果。

    当源是文件系统时,也会应用通配符。使用 * 字符时,有时会将其解释为通配符,用单引号将其换行以避免意外结果。

    例如,要将目录中的所有 gzip 文件复制到存储桶中,请运行以下命令。

    s5cmd cp '*.gz' s3:/<bucket name>
    
  3. 基本同步命令。

    • 将本地文件系统数据同步到 OCI Object Storage。运行以下基本 s5cmd 命令以将源目录中的文件同步到目标存储桶中。

      s5cmd sync /<path to migration-files> s3://<bucket name>
      
    • 将 OCI Object Storage 中的数据同步到本地文件系统。运行以下基本 s5cmd 命令以同步目标文件系统中源存储桶中的文件/对象。

      s5cmd sync s3:/<bucket name>/* /<path to migration-target directory>
      

    注:对于本地文件系统、本地 NFS 文件系统以及具有 OCI File Storage NFS 挂载的 OCI Compute 实例,可以使用相同的命令将数据从 OCI File Storage 移动到 OCI Object Storage 桶。

  4. 基本复制命令。

    运行以下基本 s5cmd 命令,将文件从本地文件系统源目录复制到 OCI 对象存储目标存储桶中。

    s5cmd cp /<path to migration-files> s3://<bucket name>
    

    将数据从 OCI Object Storage 复制到本地文件系统。

    s5cmd cp "s3:/<bucket name>/*" /<path to migration-target directory>
    

    注:这些命令可用于内部部署本地文件系统、内部部署 NFS 文件系统以及具有 OCI 文件存储 NFS 挂载的 OCI 计算实例,以将数据从 OCI 文件存储移动到 OCI 对象存储存储桶中。我们的测试主要使用带有 s5cmd 的 copy 命令。

  5. 增加并行度。

    缺省情况下,s5cmd 工具并行运行 256 个 Worker。根据 VM 的大小,您可能需要增加或减少并行度。在我们的测试环境中,我们使用 VM.Standard.E4.Flex 和 24 个 OCPU、24Gbps 网络带宽、384GB 内存,并找到了 1,000 个并行操作,以最适合传输速度。较大的 VM 可以一次将此数量增加 10 个操作,直到达到最佳传输速度或达到最多 1,000 个并行传输。较小的 VM 配置应从 10 个操作开始,并以 5-10 为增量增加,直到达到良好的吞吐量。使用以下标志增加或减少并行操作。

    --numworkers <interger>
    

    注:如果在增加员工数后开始出现错误,尤其是出现 429 “TooManyRequests” 的错误,则将员工数减少 2,直到错误停止发生。

    例如,将存储桶中的所有对象复制到本地文件系统目录中。

    s5cmd --numworkers 1000 cp "s3://MyBucket/*" /my/directory
    

    注意:我们测试了多达 1,500 名员工,但未发现任何重大改进。由于我们的测试发现 s5cmd 工具最适合小型文件,因此对于需要多部分上载和使用大量工作进程的文件,我们没有发现使用 concurrency 标志具有任何好处。

可选)测试环境

根据测试和客户互动提供建议。

注:包含克隆结果以提供有关使用 Rclone 的详细信息,请参阅教程 2:使用 Rclone 将数据移动到 OCI Cloud Storage Services

测试环境 1:

1 个 VM 实例 VM.Standard.E4.Flex、1 个 OCPU、1Gbps 网络带宽、16GB 内存。要模拟从 PHX NFS 到 IAD 的内部部署到 OCI 迁移,请复制数据。

数据集

测试环境 2:

VM 实例:每个测试使用 1-2 个 VM 实例,我们使用 VM.Standard.E4.Flex 和 24 个 OCPU、24Gbps 网络带宽、384GB 内存。Oracle Linux 8 用于 Linux 测试。

数据集

后续步骤

转至与您的迁移需求相关的相关教程。要将数据迁移到 OCI 云存储服务,请执行以下操作:

确认

更多学习资源

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

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