文档首页/ 迁移中心 MGC/ 最佳实践/ 存储迁移相关最佳实践/ 通过HTTP迁移Ceph存储数据到华为云OBS
更新时间:2024-08-13 GMT+08:00
分享

通过HTTP迁移Ceph存储数据到华为云OBS

本文介绍如何使用迁移中心(MgC)的存储迁移工作流,实现通过HTTP协议将Ceph存储的数据迁移至华为云对象存储服务(OBS)的方法。

支持的区域

当前支持以下区域(Region):

  • 华北-北京四
  • 华北-乌兰察布一
  • 华南-广州
  • 华东-上海一
  • 华南-广州-友好用户环境
  • 华东-青岛
  • 西南-贵阳

单个对象大小不能超过:500 MB x 10000 = 4.76837158203125 TB,否则可能会导致迁移失败。

准备工作

  • 华为账号准备

    使用MgC之前,您需要拥有一个华为账号或一个可用于访问MgC的IAM用户,并获取账号/IAM用户的访问密钥(AK/SK)。获取方法请参考准备工作

  • 创建迁移项目

    在MgC控制台为本次迁移创建独立的项目,方法请参考项目管理

  • 创建目的端OBS桶

    在华为云创建一个用于存放URL列表文件和接收源端数据的OBS标准存储桶,区域选择您希望迁移到的目的端区域。创建方法请参考创建桶

    如果使用IAM用户进行迁移,该IAM用户需要拥有目的端桶的读写权限。授权方法请参考对单个IAM用户授予桶的读写权限

  • 创建集群

    通过集群可以创建Master节点、迁移节点和列举节点,确保存储工作流的顺利运行。创建方法请参考创建集群

步骤一:生成Ceph文件共享下载链接

以下步骤中提到的bucket01、http://100.93.xxx.xx:7480等应替换为您实际的Ceph S3存储桶名称和Ceph RGW服务的Web访问地址和端口。

示例中的以下参数,请替换为实际值:

  • <BUCKET-NAME>:存储桶名称。
  • < FILE-NAME >:创建的json文件名。
  • <DOMAIN>:Ceph RGW(RADOS Gateway)服务的实际域名或IP地址。
  • <PORT>:Ceph RGW服务的实际访问端口号。

如果您要迁移的桶数据可以直接通过浏览器访问,请跳过步骤1,直接进行步骤2.操作

  1. 查看源端桶是否已经设置了访问策略,命令格式如下:

    s3cmd info s3://<BUCKET-NAME> 
    • 如果返回结果中Policy参数值为“none”,代表没有设置桶的访问策略。请执行步骤2

    • 如果返回结果中Policy参数值有配置信息,请拷贝策略信息并保存,用于数据迁移完成后恢复到此策略。

  2. 在安装s3cmd工具的服务器上,打开文本编辑器,创建一个xxx.json文件(名称自定义),其中包含S3存储桶策略,允许从指定的S3存储桶中获取对象。将以下内容复制并粘贴到编辑器中,替换 <BUCKET-NAME> 为实际的S3存储桶名称,保存创建的json文件并退出编辑器。

    {
            "Statement": [{
                    "Effect": "Allow" ,
                    "Principal": "*",
                    "Action": "s3:GetObject",
                    "Resource": "arn:aws:s3::: <BUCKET-NAME>/*"
            }]
    }

    更多参数设置请参考Amazon S3 存储桶策略的示例

  3. 使用 s3cmd 命令行工具设置存储桶策略,允许公开访问存储桶中的文件。命令格式如下:

    s3cmd setpolicy <FILE-NAME>.json s3://<BUCKET-NAME> 

    其中 <FILE-NAME>替换为步骤2.创建的json文件名称,<BUCKET-NAME> 替换为实际的S3存储桶名称。

  4. 使用以下命令列出存储桶中的所有文件,并将结果导出到文本文件:

    s3cmd ls -r s3://<BUCKET-NAME> >> <FILE-URL>.txt

    其中 <BUCKET-NAME> 替换为实际的S3存储桶名称,<FILE-URL>替换为您希望保存文件列表的本地文件名(例如:s3url.txt)。

  5. 打开生成的列表文件(在本文示例中为s3url.txt),您将看到桶内所有文件的共享s3地址列表。将“s3://及其之前的所有参数”替换为“http://<DOMAIN>:<PORT>/”,以生成可通过浏览器访问的URL(即文件共享下载链接)。在浏览器中输入此URL,如果能够成功访问文件,则说明设置正确。如果访问被拒绝(AccessDenied),则需要重新执行步骤1.~步骤4.设置访问策略。

    例如:Ceph RGW服务的实际域名或IP(DOMAIN)为“100.93.xxx.xx”,端口号(PORT)为“7480”,存储桶名为“bucket01”,桶中有2个文件(dragon.png, index.html),生成的共享s3地址列表为:
    2024-07-26 03:09         3987  s3://bucket01/dragon.png
    2024-07-26 02:01         1701  s3://bucket01/index.html
    将“ s3://及其之前的所有参数”替换为“http://<DOMAIN>:<PORT>/”,即“日期...s3://”替换为“http://100.93.xxx.xxx:7480”,生成的URL列表为:
    http://100.93.xxx.xxx:7480/bucket01/dragon.png
    http://100.93.xxx.xxx:7480/bucket01/index.html

  6. 根据上一步的方法和要求,将列表文件中的所有共享s3地址替换为URL地址。如果列表文件中的s3地址较多,可以使用文本编辑器(如NotePad++)进行批量替换。
  7. 根据MgC的要求,编辑URL列表文件内容,使其包含文件的共享下载链接和文件名,格式为:

    <SHARED-URL> <FILE-NAME>

    共享下载链接和文件名之间用制表符(Tab键)隔开,子文件夹的文件名需要包含子文件夹名称。关于URL列表文件的更多要求和限制,请查看存储迁移的约束与限制有哪些?

    例如:
    http://100.93.xxx.xxx:7480/bucket01/dragon.png dragon.png
    http://100.93.xxx.xxx:7480/bucket01/index.html index.html

  8. 按要求编辑完所有URL链接并检查无误后,保存该URL列表文件。

步骤二:上传URL列表文件至OBS桶

  1. 登录OBS管理控制台,在左侧导航栏选择“桶列表”。
  2. 在桶列表中,单击创建的目的端OBS桶,进入“对象”页面。
  3. 单击“新建文件夹”,在“文件夹名称”中输入自定义名称(例如:cephUrl),单击“确定”。
  4. 单击上一步创建的文件夹名称,进入该文件夹,单击“上传对象”,系统弹出“上传对象”对话框。
  5. 通过以下任意方式,将待迁移对象的URL列表文件(在本文示例中为s3url.txt)上传至文件夹。

    • 拖拽URL列表文件至“上传对象”区域框内,单击“上传”。
    • 单击“上传对象”区域框内的“添加文件”,选择URL列表文件进行添加,单击“上传”。

步骤三:创建存储迁移工作流

  1. 登录迁移中心管理控制台
  2. 在左侧导航栏选择“实施>迁移工作流”,进入迁移工作流页面。在页面左上角的当前项目下拉列表中选择在完成准备工作时所创建的迁移项目
  3. 单击页面右上角的“创建迁移工作流”按钮,进入选择模板页面。

  4. 选择存储迁移标准模板,单击“开始配置”按钮,进行工作流配置。

  5. 根据表1,配置基础信息参数。

    表1 基础信息参数配置说明

    参数

    说明

    名称

    用户自定义。

    区域

    在下拉菜单中选择创建的目的端桶所在区域。

    描述

    用户自定义。

    集群

    选择在完成准备工作时,创建的集群作为迁移集群。

  6. 根据表2表3,配置源端、目的端信息。

    表2 源端信息参数说明

    参数

    说明

    数据站点类型

    选择“HTTP/HTTPS数据源”。

    列表路径

    填写在步骤二存放URL列表文件的文件夹名称(在本文示例中为cephUrl/),注意要在文件夹名称后面加上“/”

    表3 目的端信息参数说明

    参数

    说明

    数据站点类型

    选择“华为云OBS”.

    AK

    输入华为云迁移账号的访问密钥和私有密钥。该账号需要拥有目的端桶的读写权限。

    SK

    选择创建的目的端OBS桶

    对象存储终端地址

    输入目的端桶所在区域的终端节点(Endpoint)信息。

    例如:目的端桶所在区域为华北-北京四,则输入“obs.cn-north-4.myhuaweicloud.com”。

    说明:

    可在OBS桶的基本信息查看。

    指定前缀

    可选参数。将对象迁移到指定前缀,例如:源端对象路径为/A/B/C.txt,目的端前缀配置为/D,迁移后目的端对象路径为/D/A/B/C.txt。详细介绍请参考

    设置“保存到指定前缀”参数中的功能介绍

  7. 根据表4,进行迁移配置。

    表4 迁移配置参数说明

    参数

    子参数

    说明

    迁移任务类型

    列表迁移

    通过列表文件过滤迁移,只迁移列表文件中的对象。

    并发子任务数

    -

    用户自定义。配置的数目不能超过可用迁移节点数x10。例如:可用的迁移节点数为2,则最大子任务数配置数目需要≤20。

    同名覆盖方式

    不覆盖

    对于源端和目的端存在的同名文件,跳过源端文件,保留目的端文件。

    直接覆盖

    对于源端和目的端存在的同名文件,源端文件直接覆盖目的端文件。

    条件覆盖

    对于源端和目的端存在的同名文件,保留最后修改时间较新的文件;如果最后修改时间相同,比较文件大小,大小不同则源端覆盖目的端文件;如果最后修改时间和大小都相同,则跳过。

    清理集群

    -

    选择工作流是否创建清理集群步骤。

    • 勾选,迁移工作流将自动创建清理集群步骤,您还可以继续配置是否删除NAT网关、安全组、VPCEP服务等。
    • 不勾选,迁移工作流不创建清理集群步骤。

  8. (可选)根据表5,配置高级选项。

    表5 高级选项参数说明

    参数

    说明

    目的端存储类型

    选择迁移到华为云OBS后,对象的存储类型。存储策略说明请参见存储类型介绍

    KMS加密

    • 不勾选,迁移后对象状态与源端保持一致。
    • 勾选,所有对象在迁移到OBS桶后都将被加密存储。
    说明:
    • 使用KMS服务端加密可能会降低迁移速率10%左右。
    • 目的端桶所在区域支持KMS加密时,此参数才可用。

    过滤配置

    通过黑、白名单以及时间段过滤迁移文件。过滤策略详细介绍请参见过滤策略说明

    SMN消息发送配置

    选择是否使用SMN消息通知功能,该功能可以通知您迁移任务的结果。

    • 不勾选,不接收SMN消息。
    • 勾选,接收SMN消息。选择SMN主题,会向该主题的订阅者发送消息;选择消息发送语言;选择发送消息的触发条件,支持同时勾选。

    流量控制

    设置迁移任务在指定时段的最大流量带宽。

    • 不勾选,不进行流量控制。
    • 勾选,进行流量控制。分别设置“开始时间”、“结束时间”和“限速”数值。
      例如:设置开始时间08:00、结束时间12:00、限速为20 MB/s,当迁移任务运行到(08:00~12:00)该时间段时,最大迁移速度将限制为20 MB/s。该时间段以外,迁移速度不做限制。
      说明:
      • 限速的数值范围:0~1048576 MB/s 。
      • 最多可以创建5条记录。
      • 时区时间以目的端Region的当地时间为准。

    定时迁移

    设置迁移任务在指定时间内迁移。

    • 不勾选,手动启动/暂停迁移任务。
    • 勾选,设置任务在指定时间范围内进行迁移,指定时间以外则暂停迁移。

      例如:

      • 设置开始时间08:00、结束时间12:00,则迁移任务会在每天早晨08:00至中午12:00该时间段进行迁移。该时间段以外,则迁移任务暂停。
      • 设置开始时间12:00、结束时间08:00,则迁移任务会在每天中午12:00至次日早晨08:00该时间段进行迁移。该时间段以外,则迁移任务暂停。

  9. 工作流配置完成后,单击“下一步:确认并创建”按钮,进入确认并创建页面。
  10. 确认配置信息无误后,单击“确认创建工作流”,弹出启动工作流窗口,单击“确认”按钮,立即运行工作流。
  11. 在工作流列表,单击工作流名称,进入工作流详情页面,可以查看该迁移工作流的配置信息资源迁移进度

步骤四:恢复桶的访问策略

迁移完成后,恢复源端桶的访问策略。

  • 如果在步骤1.中执行命令的返回结果为 Policy: none,请执行如下命令,删除添加的公开访问策略:
    s3cmd delpolicy s3://<BUCKET-NAME> 
  • 如果在步骤1.中执行命令的返回结果包含访问策略,请按以下步骤恢复。
    1. 执行如下命令,删除添加的公开访问策略:
      s3cmd delpolicy s3://<BUCKET-NAME> 
    2. 执行如下命令,恢复访问策略为保存的原有策略。
      s3cmd setpolicy <保存的原策略>.json s3://<BUCKET-NAME>

相关文档