使用迁移工具将数据迁移到 OCI 云存储服务
简介
这是四个教程系列的教程 1,其中展示了将数据迁移到 Oracle Cloud Infrastructure (OCI) 云存储服务的各种方法。该系列已设置,因此您可以查看本第一个教程,以全面了解各种工具,然后继续阅读与迁移需求相关的相关教程或文档。
OCI 为客户提供高性能计算和低成本的云存储选件。通过按需本地存储、对象存储、文件存储、块存储和归档存储,Oracle 可以满足关键存储负载要求和用例。
OCI 云存储服务提供快速、安全和持久的云存储选项,可满足企业的所有需求。从高性能选项开始,例如 OCI File Storage with Lustre 和 OCI Block Volumes 服务;从 OCI File Storage 服务到具有高性能挂载目标的完全托管 EB 级文件系统;再到具有高持久性和可扩展性的 OCI Object Storage。我们的解决方案可以满足您的需求,从性能密集型应用(例如 AI/ML 工作负载)到 EB 级数据湖。
许多客户发现需要将数据从本地、其他提供商或 OCI 云存储服务之间传输到 OCI 云存储服务。根据源、目标和数据传输方向,完成迁移的最佳方法可能会有所不同。在 OCI 中确定数据源和目标的基础知识后,您必须决定迁移路径和需要使用的工具。让我们的实践经验指导您使用合适的迁移工具以及如何使用它。本教程 1 系列中将向您介绍各种工具,以及它们最适合迁移过程的位置。
确定需要迁移的数据量以及可切换到新 OCI 存储平台的停机时间。批迁移是将迁移细分为可管理的增量的一个好选择。通过批处理迁移,您可以跨不同窗口为特定应用程序安排停机时间。某些客户可以灵活地在 2-4 天的预定维护窗口内执行一次性迁移。OCI FastConnect 可用于在 OCI 与您的环境之间创建专用连接,端口速度从 1G 到 400G,从而加快数据传输过程。OCI FastConnect 可与 Megaport 和 ConsoleConnect 等合作伙伴解决方案集成,以创建与数据中心或云到云互连的专用连接,从而将数据更直接地从其他云供应商迁移到 OCI 云存储服务。有关详细信息,请参阅 FastConnect 与 Megaport Cloud Router 集成。
目标读者
DevOps 工程师、开发人员、OCI 云存储管理员和用户、IT 经理、OCI 高级用户和应用管理员。
目标
了解如何使用各种工具将数据复制并同步到 OCI 云存储服务中:
-
确定常用的迁移工具。
-
了解用于将文件系统数据(本地、NAS、云托管)迁移到 OCI 云存储服务的各种工具。
-
了解哪种工具最适合各种用例。
Prerequisites
-
了解您的数据迁移集、总体大小以及文件或对象的外观(很少有大型文件、许多小型文件等)。
-
在 OCI 云存储服务(对象存储、文件存储或块存储卷)中,存储应落地。
-
您的时间线以及是否要执行批量或增量(批量)迁移。
迁移工具
我们的客户体验和测试可帮助您了解哪个迁移工具最适合您的场景。我们建议您对示例数据集进行概念验证和测试,以验证数据集的最佳迁移方法。我们将探讨常见的迁移工具,以将数据从内部部署和其他云提供商迁移到 OCI 或在 OCI 云存储服务中。测试结果是从示例数据集共享的,因此您可以推断工具对数据集的性能。
-
Rclone(克隆): Rclone 是一个开源命令行实用程序,用于将数据迁移到云或在云存储供应商之间迁移。克隆可用于执行一次性迁移以及在源存储和目标存储之间进行定期同步。克隆可以向对象存储、文件存储、挂载的驱动器以及 70 种受支持的存储类型迁移数据。OCI Object Storage 作为 Rclone 后端提供商原生受支持。可以使用参数选项扩展和扩展克隆进程,以提高传输性能。克隆具有复制和同步等选项,可分别一次性传输数据和定期传输数据。有关更多信息,请参见 Install Rclone 。
-
Flexify IO : Flexify IO 是专注于对象存储的第三方,易于使用的迁移工具。Flexify 可与 S3 兼容的云(OCI、AWS、GCP、Azure 等)和本地(Minio、Dell EMC ECS 等)对象存储协同工作。只需登录到 Flexify management 并配置凭证/访问密钥,然后通过图形用户界面 (graphical user interface,GUI) 设置迁移。Flexify IO 的水平扩展算法将自动扩展速度与连接速度一样快,并且存储将允许。Flexify 还与 OCI 合作伙伴 Megaport 等网络即服务 (NaaS) 提供商集成,可以按需预配/取消预配快速连接。有关详细信息,请查看在云之间迁移数据和 Megaport 和 Flexify IO 解决方案。
-
Resilio Active Anywhere : Resilio 是基于代理的第三方数据传输应用程序。它是一个丰富的图形用户界面 (GUI),可以很好地控制传输作业以及可视化性能指标。该软件在 Oracle Cloud Marketplace 中提供,并已从 Resilio 获得安装许可。Resilio 可以在一对多、多对一或多对多网格中以任意方向在固定时间范围内同步文件,从而实现数据集的全局存在。有关详细信息,请参阅使用 Resilio Connect 迁移到 OCI 存储服务并在 OCI 存储服务之间进行数据迁移和 Resilio Active Anywhere 。
-
Open Source Linux Sync Utilities::rsync 和 fpsync。
-
Rsync:基于 Unix 的通用工具,用于在源路径和目标路径之间执行一次性复制或定期同步。
-
Fpsync:用于执行并行同步的开源工具。它使用下面的 rsync、tar 或 rclone,并在上面运行一个并行包装器。您可以选择 rsync、tar 或 rclone 作为基础同步工具。
-
-
使用文件存储并行工具: OCI File Storage 提供了一个并行工具包,可与文件系统协同工作。它可与 Linux 开发人员系统信息库一起使用,可以直接从 yum 系统信息库安装。该软件包包含三个分别与标准 Linux 实用程序 cp、tar 和 rm 等效的 parcp、parter 和 param 工具。
-
OCI Command Line Interface Object Storage Sync : OCI Object Storage Sync (os sync) 是 OCI 命令行界面 (Command Line Interface,CLI) 的一部分,用于将文件系统目录与存储桶中的对象同步。该命令将遍历子目录,将新的和已修改的文件或对象从源复制到目标,并根据需要删除源中不存在的文件或对象。它可以运行多达 1,000 个并行操作,具体取决于主机资源。
-
OCI 对象存储批量复制 Python API :以下链接是使用适用于 OCI 的 python API 批量复制脚本的示例。API 可用于编写脚本,例如使用并行线程将对象从一个存储桶复制到另一个存储桶的示例脚本。有关使用示例脚本的更多信息,请参见 Use Oracle Cloud Infrastructure Object Storage Python Utilities for Bulk Operations 。
-
S3 Compatible tool (s5cmd) :s5cmd 是一个开源工具,可用于将本地文件系统和 NAS 存储(内部部署和 OCI 中的)迁移到 OCI Object Storage 或将其同步。它还可用于在同一区域内将数据存储桶迁移到存储桶。
作业的正确工具
在进行迁移时,有许多工具可供选择,同时研究它们可能是压倒性的。根据迁移的起源、目的地、迁移方向、用户体验和用户环境,最佳迁移工具会有所不同。
下表提供了常见迁移方案的建议,包括迁移内部部署数据、将数据从其他云供应商迁移到 OCI、将 OCI 云存储数据从一个区域复制到另一个区域、复制某个区域内的 OCI 云存储数据以及将 OCI 文件存储数据复制到 OCI 对象存储。
| 迁移数据自 | 将数据迁移到 | 推荐工具 | 说明 | 文档/教程链接 |
|---|---|---|---|---|
| 内部部署文件系统 | OCI 对象存储 | 1. s5cmd(小/混合文件) 2。OCI Object Storage Sync(几个大文件) 3。克隆(混合) 4。Resilio Active Anywhere |
使用该工具最适合您的数据结构,您感觉使用起来很舒服。应查看 FastConnect 以缩短传输时间。 | S5cmd 和对象存储同步教程、 克隆教程、 Resilio Active Anywhere |
| 另一个云供应商对象或 Blob 存储 | OCI 对象存储 | 1. Flexify IO 2. 克隆 |
对 S3 兼容的供应商以及需要支持的 GUI 界面时使用 Flexify IO。 当您舒适地尝试和切换各种设置以及支持 70 多个不同云供应商(S3 兼容和非 S3 兼容对象存储)时,可使用 Rclone。 |
Flexify IO migrate between clouds 、克隆教程 |
| OCI 对象存储 | 其他区域中的 OCI 对象存储 | 1. 对象复制 2。OCI Object Storage 批量复制 Python API 3。Flexify IO 4. 克隆 |
使用原生对象复制适用于当前为空的新存储桶的精确副本,使用 OCI 对象存储批量复制 Python API、Flexify IO 或 Rclone 来初始化已具有对象的源存储桶的副本,或者当您希望在目标上保留对象时。 | 对象存储复制文档、 使用 Oracle Cloud Infrastructure Object Storage Python Utilities 进行批量操作、 Flexify IO 、 克隆教程 |
| OCI 对象存储 | 其他租户中的 OCI 对象存储(相同或不同区域) | 1.OCI Object Storage 批量复制 Python API 2。Flexify IO 3. 克隆 |
OCI Object Storage 批量复制 Python API 的先决条件:使用跨租户 IAM 策略启用跨租户复制。有关更多信息,请参见 Accessing Object Storage Resources Across Tenancies 。 | Use Oracle Cloud Infrastructure Object Storage Python Utilities for Bulk Operations 、 Flexify IO 、 Rclone Tutorial |
| OCI 文件存储 | OCI 对象存储 | 1. s5cmd(小/混合文件) 2。对象存储同步(少量大文件) 3。克隆(混合) 4。Resilio Active Anywhere |
使用该工具最适合您的数据结构,您感觉使用起来很舒服。 | S5cmd 和对象存储同步教程、 克隆教程、 Resilio Active Anywhere |
| 内部部署文件系统 | OCI 文件存储 | 1. fpsync (Linux) 和 CIFS + fpsync (Windows) 2。Resilio Active Anywhere |
确保在源实例和目标实例之间建立网络连接。 | Fpsync 文档、 fpsync 教程、 Resilio Active Anywhere |
| 其他云供应商本地磁盘或文件存储 | OCI 文件存储 | 1. fpsync (Linux) 和 CIFS + fpsync (Windows) 2。Resilio Active Anywhere |
确保在源实例和目标实例之间建立网络连接。应查看 FastConnect 以缩短传输时间。 | Fpsync 文档、 fpsync 教程、 Resilio Active Anywhere |
| OCI 文件存储 | 其他区域中的 OCI 文件存储 | 1. 文件系统复制 2. 与实例到实例流同步 3。Resilio Active Anywhere |
如果使用复制,请参见复制的限制和注意事项,或者如果使用实例到实例流,请确保在源实例和目标实例之间建立网络连接。 | Fpsync 文档、 fpsync 教程、 文件系统复制文档、 Resilio Active Anywhere |
| OCI 文件存储 | 同一可用性域中的 OCI 文件存储 | 1. 文件系统复制 2。Using File Storage Parallel Tools: parcp 3. Resilio Active Anywhere |
如果使用复制,请参见复制的 Limitations and Considerations ,或者如果使用 parcp,请确保源文件系统和目标文件系统都已挂载到实例中。 | File System Replication 、 Using File Storage Parallel Tools:parcp 、 Resilio Active Anywhere |
| 本地部署,另一家云供应商 | OCI 对象存储或 OCI 文件存储 | Resilio Active Anywhere 平台 | 当您需要多向同步数据、支持白手套服务和 GUI 界面时,可使用 Resilio Active Anywhere 平台。Resilio 已经过 OCI 云存储服务产品团队的验证,可在 Oracle Cloud Marketplace 中使用。 | 有关使用其平台的更多信息,请联系 Resilio 团队。 |
注:迁移工具系列不包括 OCI Object Storage 或 OCI File System Replication、OCI Object Storage Bulk Copy Python API、Flexify 和 Resilio。有关更多信息,请参见“相关链接”。
后续步骤
转至与您的迁移需求相关的教程。要将数据迁移到 OCI 云存储服务,请执行以下操作:
-
使用 Rclone,请参阅教程 2:使用 Rclone 将数据迁移到 OCI Cloud Storage Services 。
-
Using OCI Object Storage Sync and S5cmd, see Tutorial 3: Move Data into OCI Cloud Storage Services using OCI Object Storage Sync and S5cmd.:w
-
使用 Fpsync 和 Rsync 进行文件系统数据迁移,请参见教程 4:使用 Fpsync 将数据迁移到 OCI 云存储服务,使用 Rsync 进行文件系统数据迁移。
(可选)测试环境
根据测试和客户互动提出建议。
测试环境 1:
1 个 VM 实例 VM.Standard.E4.Flex、1 个 OCPU、1Gbps 网络带宽和 16GB 内存。模拟本地到 OCI 的迁移,将数据从 PHX NFS 复制到 IAD。
数据集
- 数据集 1:将数据从 NFS 挂载的文件系统迁移到 OCI 对象存储。
数据集总大小:3TB,包含 3 个文件,每个文件 1TB。
| 方法 | 至自 | Time | 命令 | 标记 |
|---|---|---|---|---|
| os 同步 | NFS/文件 PHX 到对象 IAD | 123m17.102s | NA | --parallel-operations-count 100 |
| s5cmd | NFS/文件 PHX 到对象 IAD | 239m20.625s | 复制 | run commands.txt,缺省运行 --numworkers 256 |
| 克隆 | NFS/文件 PHX 到对象 IAD | 178m27.101s | 复制 | --transfers=100 --oos-no-check-bucket --fast-list --checkers 64 --retries 2 --no-check-dest |
注:我们的测试显示
os sync对此数据集运行速度最快。
- 数据集 2:将数据从 NFS 挂载的文件系统迁移到 OCI Object Storage
数据集总大小:9.787GB,包含 20,000 个文件,每个文件 20MB
| 方法 | 至自 | Time | 命令 | 标记 |
|---|---|---|---|---|
| s5cmd | NFS/文件 PHX 到对象 IAD | 1m12.746s | 复制 | 缺省运行 --numworkers 256 |
| os 同步 | NFS/文件 PHX 到对象 IAD | 2m48.742s | NA | --parallel-operations-count 1000 |
| 克隆 | NFS/文件 PHX 到对象 IAD | 1m52.886s | 复制 | --transfers=500 --oos-no-check-bucket --no-check-dest |
注:我们的测试显示
s5cmd对此数据集的性能最佳。
测试环境 2:
VM 实例:每个测试都使用 2 个 VM 实例,我们使用 VM.Standard.E4.Flex 和 24 个 OCPU、24Gbps 网络带宽和 384GB 内存。Oracle Linux 8 用于 Linux 测试。Flexify IO 不使用 VM 实例。
用于测试的数据集:具有以下文件计数和大小的 14 个主目录,总计为 2.25TiB。
| 数据集目录 | 大小 | 文件计数 | 每个文件的大小 |
|---|---|---|---|
| 目录 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 | NFS/文件 PHX 到对象 IAD | 54m41.814s | 复制 | --numworkers 74 |
| os 同步 | NFS/文件 PHX 到对象 IAD | 65m43.200s | NA | --parallel-operations-count 50 |
| 克隆 | NFS/文件 PHX 到对象 IAD | 111m59.704s | 复制 | --oos-no-check-bucket --no-check-dest --ignore-checksum --oos-disable-checksum --transfers 50 |
| 克隆 | 对象 PHX 与对象 IAD | 28m55.663s | 复制 | --oos-no-check-bucket --no-check-dest --ignore-checksum --oos-disable-checksum --transfers 400,在 2 个 VM 中运行相同的命令,以实现 800 次传输的并发 |
| python 批量复制脚本 | 对象 PHX 与对象 IAD | 25m43.715s | Default | 1 个 VM,50 个 worker,100,000 个文件一次排队 |
| 弹性 IO | 对象 PHX 与对象 IAD | 20m27s | 复制 | 默认为 10 个引擎/插槽 |
| 弹性 IO | 对象 PHX 与对象 IAD | 16m12s | 复制 | 20 个引擎/插槽,这可以通过“高级设置”提出 |
s5cmd 和 os sync 命令优于文件系统/NFS 到对象存储。Flexify IO 和批量复制脚本仅关注对象存储(存储桶到存储桶)传输,未针对 NFS 迁移进行测试。
只有 Flexify IO、rclone 和 python 批量复制脚本能够跨区域执行存储桶到存储桶的传输,因此没有针对其他工具进行测试。Flexify IO 在跨区域的对象存储迁移方面表现最佳,python 批量复制脚本的性能优于 rclone。需要注意的是,Flexify IO 适用于 S3 兼容的对象存储,python 批量复制脚本仅适用于 OCI 对象存储,rclone 支持许多后端和云提供商。
使用 rclone 进行小规模测试,将数据从 Microsoft Azure Blob Storage、Amazon Simple Storage Service (Amazon S3) 和 Google Cloud Platform Cloud Storage 传输到 OCI Object Storage,以验证该工具是否适用于这些类型的传输。有关详细信息,请参阅使用 Rclone 将数据迁移到云中的对象存储。
FlexifyIO 用于将此数据集从 AWS us-east-2 迁移到 OCI 阿什本区域,仅使用 23m51s 表示 2.25TiB,默认值为 10 个引擎/插槽,可以添加其他引擎/插槽以提高性能。
测试环境 3:
VM 实例:每个测试都使用 1-2 个 VM 实例,我们使用 VM.Standard.E4.Flex 和 24 个 OCPU、24Gbps 网络带宽和 384GB 内存。Oracle Linux 8 用于 Linux 测试。所有测试都是桶对桶。Flexify IO 不使用 VM 实例。
| 总大小 | 文件计数 | 文件大小范围 |
|---|---|---|
| 7.74 TiB | 1,000,000 | 30 MiB |
| 方法 | 至自 | Time | 命令 | 标记 | 说明 | |
|---|---|---|---|---|---|---|
| 克隆 | Object-to-Object IAD -> IAD | 18h39m11.4s | 复制 | --oos-no-check-bucket --fast-list --no-traverse --transfers 500 --oos-chunk-size 10Mi |
1 个 VM,由于文件计数过高并列出对源的调用,速度非常慢 | |
| 克隆 | Object-to-Object IAD -> IAD | 55m8.431s | 复制 | --oos-no-check-bucket --no-traverse --transfers 500 --oos-chunk-size 10Mi --files-from <file> |
2 个 VM,每个 VM 传输 500 个,对象/文件列表一次提供 1,000 个文件,可防止在源和目标上列出,并提高性能 | |
| python 批量复制脚本 | Object-to-Object IAD -> IAD | 28m21.013s | NA | Default | 1 个 VM,50 个 worker,100,000 个文件一次排队 | |
| python 批量复制脚本 | 对象到对象 IAD -> IAD | NA | NA | Default | 2 个 VM,每个 VM 50 个 worker,一次排队 100,000 个文件。收到 429 个错误,脚本挂起且无法完成 | |
| 弹性 IO | Object-to-Object IAD -> IAD | 39m19s | 复制 | Default | 默认为 10 个引擎/插槽 | |
| 弹性 IO | 对象到对象 IAD -> IAD | 21m37s | 复制 | 20 个引擎/插槽 | 设置为 20 个引擎/插槽,这可以通过“高级设置”引发 | |
| s5cmd | Object-to-Object IAD -> IAD | 14m10.864s | 复制 | 默认值(256 名员工) | 1 个 VM | NA |
| s5cmd | Object-to-Object IAD -> IAD | 7m50.013s | 复制 | 默认值 | 2 个 VM,每个 VM 256 个 worker | 以 1 个 VM 的一半时间运行 |
| s5cmd | 对象到对象 IAD -> IAD | 3m23.382s | 复制 | --numworkers 1000 |
1 个 VM,1000 个 Worker | 在多个测试中,我们发现这是使用 s5cmd 对此数据集的最佳运行 |
| 克隆 | Object-to-Object IAD -> PHX | 184m36.536s | 复制 | --oos-no-check-bucket --no-traverse --transfers 500 --oos-chunk-size 10Mi --files-from <file> |
2 个 VM,每个 VM 传输 500 个,对象/文件列表一次提供 1,000 个文件 | |
| python 批量复制脚本 | Object-to-Object IAD -> PHX | 35m31.633s | NA | Default | 1VM,50 个 Worker,一次排队 100,000 个文件 | |
| 弹性 IO | Object-to-Object IAD -> PHX | 21m17s | 复制 | 20 个引擎/插槽 | 设置为 20 个引擎/插槽,这可以通过“高级设置”引发 |
对于大文件计数和小文件,s5cmd 命令始终以最佳方式运行。s5cmd 受限,因为它只能在同一租户和同一区域内执行桶对桶的复制。
Flexify IO 是此迁移数据集的推荐工具,因为它性能良好,支持各种 S3 兼容的对象存储类型。提升 Flexify IO 的引擎/插槽计数后,迁移时间下降。
请注意,在将文件馈送到命令后以及从扩展到其他 VM 时,rclone 会得到很大的改进。克隆的运行速度可能比其他工具慢,但它是它支持的各种平台中最通用的,以及它可以执行的迁移类型。
OCI Object Storage Bulk Copy Python API 只能使用 OCI Native CopyObject API,并且只能在受限之前获得最多 50 个工作进程的并发,对于此数据集,其性能通常相当出色。
IAD 到 PHX 的测试仅针对在 IAD 到 IAD 中效果最佳的测试,并且没有重新运行有问题的测试。s5cmd 未针对 IAD 运行到 PHX,因为它只能在同一区域中执行桶对桶的复制。
相关链接
-
教程 3:使用 OCI Object Storage Sync 和 S5cmd 将数据迁移到 OCI Cloud Storage Services
-
使用 Oracle Cloud Infrastructure Object Storage Python 实用程序执行批量操作
确认
-
作者 — Vinoth Krishnamurthy(OCI File Storage 技术人员首席成员),Melinda Centeno(OCI Object Storage 高级首席产品经理)
-
贡献者 — Ashutosh Mate(OCI Object Storage 高级首席产品经理)Aboo Valappil(OCI File and Block Storage 技术人员顾问)
更多学习资源
通过 docs.oracle.com/learn 浏览其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Use Migration Tools to Move Data into OCI Cloud Storage Services
G25559-02