注意:
- 本教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure 免费套餐。
- 它对 Oracle Cloud Infrastructure 身份证明、租户和区间使用示例值。完成实验室后,请使用特定于云环境的那些值替换这些值。
使用 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 Object Storage Sync (os sync) 是 Oracle Cloud Infrastructure 命令行界面 (OCI CLI) 的一部分,用于将文件系统目录与存储桶中的对象同步。该命令遍历子目录,将新的和修改的文件或对象从源复制到目标,并可选择删除源中不存在的文件或对象。
-
s5cmd 工具是一个免费的开源项目。通过 s5cmd,您可以浏览数据并将其传输到与 S3 兼容的对象存储(包括 OCI 对象存储)或从文件系统数据(包括 OCI 文件存储)传输。它以 Go 语言编写。
确定需要迁移的数据量,以及切换到新 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。
-
使用带有各种参数和选项的
os sync
命令。 -
运行 s5cmd 工具以进行数据迁移和同步的各种方法。
先决条件
-
OCI 账户。
-
OCI 上的 VM 实例用于部署迁移工具或系统,您可以在其中部署和使用迁移工具。
-
OCI CLI 安装在主目录中名为
.oci
的子目录中的工作配置文件中。有关详细信息,请参阅设置配置文件。 -
访问 OCI 对象存储桶。
-
OCI 中的用户有权使用 OCI Object Storage,有权管理存储桶和对象,或至少管理 1 个存储桶或隔间的 Object-family。有关更多信息,请参见 Common Policies 和 Policy Reference 。
-
创建、导出和装载 OCI 文件存储的用户权限,或对已在 VM 上装载的 OCI 文件存储装载目标、用于向其复制数据的其他网络文件系统 (Network File System,NFS) 装载或本地文件系统的访问权限。有关更多信息,请参见 Manage File Storage Policy 。
-
熟悉在 Mac OS、Linux、Berkeley Software Distribution (BSD) 或 Windows PowerShell、命令提示符或 bash 上使用终端或 shell 接口。
-
查看将数据迁移到 OCI 云存储的迁移基础知识,以使用 os 同步和 s5cmd 工具安装 OCI CLI。
-
要了解我们可以使用的迁移工具,请参阅教程 1:使用迁移工具将数据迁移到 OCI 云存储服务。
将网络文件系统和本地文件系统数据同步到 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 以缩短传输时间。
使用操作系统同步进行同步
-
将本地文件系统数据同步到 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 桶。
-
将数据从 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 桶中。
-
增加并行操作。
默认情况下,仅并行运行 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,直到错误停止。
-
使用 pattern 命令过滤匹配的文件。
模式可用于包括或排除匹配的文件。模式命令可以在命令行上多次使用,以匹配多个模式。
-
要包括与模式匹配的文件,请使用以下命令。
--include
-
要排除与模式匹配的文件,请使用以下命令。
--exclude
注:
*
:匹配所有内容?
:匹配任何单个字符[sequence]
:匹配序列中的任何字符[!sequence]
:匹配序列中不存在的任何字符
-
-
使用
--prefix
标志。使用
--src-dir
命令将文件上载到对象存储时使用的--prefix
标志将上载对象并将目录路径作为前缀添加到对象名称。用于从 OCI 对象存储下载对象时,仅下载具有指定前缀的对象,不会显示为对象/文件名的一部分。 -
在运行之前验证传输。
在开始传输之前,您可以确定哪些文件将上载/下载到 OCI Object Storage/从 OCI Object Storage 中/从 OCI Object Storage 中执行打印。使用以下标志运行命令行。
--dry-run
使用 s5cmd 同步
-
同步和复制命令。
-
s5cmd 的
sync
选项在不修改任何源文件的情况下进行从源到目标的单向同步,并且也不会删除源上不存在的目标上的文件。添加--delete
标志以删除目标上不存在的文件。 -
copy
命令将简单地将对象从源复制到目标。
-
-
模式匹配。
s5cmd 工具支持用于同步和复制操作的多级通配符。这是通过以下方法实现的:列出前缀在第一个通配符之前的所有对象,然后在内存中过滤结果。
当源是文件系统时,也会应用通配符。使用
*
字符时,有时会将其解释为通配符,用单引号将其换行以避免意外结果。例如,要将目录中的所有 gzip 文件复制到存储桶中,请运行以下命令。
s5cmd cp '*.gz' s3:/<bucket name>
-
基本同步命令。
-
将本地文件系统数据同步到 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 桶。
-
-
基本复制命令。
运行以下基本
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 命令。
-
增加并行度。
缺省情况下,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 迁移,请复制数据。
数据集
-
数据集 1:
总大小 文件计数 文件大小范围 3TB 3 1TB 方法 至 - 自 Time 命令 标记 os 同步 将 PHX 文件转换为对象 IAD 123m17.102s NA --parallel-operations-count 100
s5cmd 将 PHX 文件转换为对象 IAD 239m20.625s 复制 run commands.txt
,默认运行--numworkers 256
旋风 将 PHX 文件转换为对象 IAD 178m27.101s 复制 --transfers=100 --oos-no-check-bucket --fast-list --checkers 64 --retries 2 --no-check-dest
注:我们的测试显示
os sync
对此数据集运行速度最快。 -
数据集 2:
总大小 文件计数 文件大小范围 9.787GB 20,000 1MB 方法 至 - 自 Time 命令 标记 s5cmd 将 PHX 文件转换为对象 IAD 1m12.746s 复制 默认运行 --numworkers 256
os 同步 将 PHX 文件转换为对象 IAD 2m48.742s NA --parallel-operations-count 1000
旋风 将 PHX 文件转换为对象 IAD 1m52.886s 复制 --transfers=500 --oos-no-check-bucket --no-check-dest
注:我们的测试显示 s5cmd 对此数据集表现最佳。
测试环境 2:
VM 实例:每个测试使用 1-2 个 VM 实例,我们使用 VM.Standard.E4.Flex
和 24 个 OCPU、24Gbps 网络带宽、384GB 内存。Oracle Linux 8 用于 Linux 测试。
数据集
-
数据集 1:
14 个主目录,具有以下文件计数和大小。
数据集目录 大小 文件计数 每个文件的大小 目录 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 注:
- 这 14 个目录在 2 个 VM 实例之间拆分。
- 每个 VM 运行 7 个命令/进程,每个目录运行 1 个命令/进程,除非另有说明。
方法 至 - 自 Time 命令 标志/注释 s5cmd 将 PHX 文件转换为对象 IAD 54m41.814s 复制 --numworkers 74
os 同步 将 PHX 文件转换为对象 IAD 65m43.200s NA --parallel-operations-count 50
旋风 将 PHX 文件转换为对象 IAD 111m59.704s 复制 --oos-no-check-bucket --no-check-dest --ignore-checksum --oos-disable-checksum --transfers 50
注意:我们的测试显示 s5cmd 运行速度最快,与 Rclone 相比,OS 同步性能非常好。
后续步骤
转至与您的迁移需求相关的相关教程。要将数据迁移到 OCI 云存储服务,请执行以下操作:
-
使用 Rclone,请参见 Tutorial 2:Move Data into OCI Cloud Storage Services using Rclone 。
-
使用 Fpsync 和 Rsync 进行文件系统数据迁移,请参阅教程 4:使用 Fpsync 和 Rsync 将数据移动到 OCI Cloud Storage Services for File System Data Migrations 。
相关链接
确认
- 作者 — Melinda Centeno(OCI Object Storage 高级首席产品经理)
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Move Data into OCI Cloud Storage Services using OCI Object Storage Sync and the s5cmd Tool
G25643-01
January 2025
Copyright ©2025, Oracle and/or its affiliates.