准备工作

更新时间:
重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

本文介绍数据迁移之前的准备工作。

步骤一:共享文件夹

您需要将您的ECS实例按照以下方法将文件夹共享出来:

说明
  • 在线数据迁移只支持专有网络下的ECS实例数据迁移,经典网络不支持。

  • 以下步骤仅供您参考。

  • Windows系统

    若您的ECS实例是Windows系统,请参照以下步骤操作:

    1. 将您需要迁移的数据放在一个文件夹内,并将该文件夹共享。您可按照您的系统版本搜索设置文件共享的相关文档进行配置。

      例如此处共享dir文件夹下的subdir子文件夹,则共享目录的路径为\\主机名称\dir\subdir。在创建源地址时,子目录配置为/dir/subdir

    2. 修改Windows防火墙和杀毒软件设置,允许该实例所在专有网络VPC内的所有IP地址可以访问实例的445端口(若防火墙和杀毒软件未开启,请跳过此步骤)。

    3. 添加阿里云ECS安全组规则,允许该实例所在VPC网络中的所有IP可以访问实例的445端口。

  • Linux系统

    若您的ECS实例是Linux系统,请参照以下步骤操作:

    1. 启用NFS服务,并将待迁移的文件夹共享。具体操作,请参见启用NFS服务(若您的系统已启用NFS服务,请跳过此步骤)。

      例如此处共享data文件夹,则共享目录的路径为/data。在创建源地址时,子目录配置为/data

    2. 修改Linux防火墙设置,放通NFS服务的端口。您可以使用rpcinfo -p localhost命令查看需放通的portmappermountdnfs服务的相关端口,具体操作,请参见防火墙配置(如果防火墙未开启,请跳过此步骤)。

    3. 添加阿里云ECS安全组规则,允许该实例所在VPC网络中的所有IP可以访问实例的NFS服务相关端口。

      警告

      为了您的数据安全,请不要将NFS服务端口开放给外网访问。

步骤二:创建目标存储空间

创建目标存储空间,用于存放迁移的数据。具体操作,请参见创建存储空间

步骤三:创建用于迁移数据的RAM用户

为了保证数据安全,推荐您创建RAM用户并按照最小权限原则对该RAM用户进行授权后用于迁移数据。

  1. 登录RAM控制台

  2. 在左侧导航栏,选择身份管理 > 用户

  3. 用户页面,单击创建用户

  4. 创建用户页面的用户账号信息区域,输入登录名称显示名称

  5. 访问方式区域,选中控制台访问OpenAPI调用访问。并保存生成的账号、密码、AccessKey IDAccessKey Secret。

    • 控制台访问:设置控制台密码、需要重置密码和MFA多因素认证。

    • OpenAPI调用访问:自动为RAM用户生成访问密钥(AccessKey),支持通过API或其他开发工具进行访问。

步骤四:RAM用户添加权限

创建RAM用户成功后,在用户页面,单击目标RAM用户操作列的添加权限

  • 系统策略:管理闪电立方(MGW)的权限(AliyunMGWFullAccess)

  • 自定义策略:

    授予RAM用户对存放迁移后数据的Bucket的完全控制权限

    说明
    • 以下权限策略仅供您参考,其中mybucket为存放迁移后数据的Bucket名称,请根据实际值替换。

    • 关于OSS权限策略的更多信息,请参见RAM Policy常见示例

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "oss:*",
                "Resource": [
                    "acs:oss:*:*:mybucket",
                    "acs:oss:*:*:mybucket/*"
                ]
            }
        ]
    }

附录:使用NFS服务

使用NFS服务前,您需要启用此服务,并在防火墙上开放NFS的端口。

重要

以下命令只能由root用户来执行,root用户拥有超级管理员权限,请谨慎操作。

  • 假设要把/data目录共享出来做为迁移数据源,请按照以下步骤配置:

    1. 启用NFS文件系统。

      [root@test ~]# yum install -y nfs-utils
    2. /data文件夹设置共享。在/etc/exports文件中添加/data *(rw,no_root_squash,insecure)

      [root@test ~]# vi /etc/exports
      
      #若mountd端口大于1024,则需要加入'insecure':
      /data *(rw,no_root_squash,insecure)
                                      
      说明

      请严格按照/etc/exports文件格式进行配置,您可执行man 5 exports命令查看具体的格式要求。

      如果配置错误,会导致客户端中挂载文件系统失败。

    3. 启动NFS服务。

      [root@test ~]# systemctl start nfs.service
    4. 检查NFS服务显示如下状态,表示服务已正常。

      [root@test ~]# systemctl status nfs.service
      â- nfs-server.service - NFS server and services
      Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)
      Active: active (exited) since Thu 2018-12-06 15:47:03 CST; 58s ago
      Process: 10641 ExecStartPost=/bin/sh -c if systemctl -q is-active gssproxy; then systemctl restart gssproxy ; fi (code=exited, status=0/SUCCESS)
      Process: 10623 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
      Process: 10621 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
      Main PID: 10623 (code=exited, status=0/SUCCESS)
      CGroup: /system.slice/nfs-server.service
      
      
      Dec 06 15:47:03 test systemd[1]: Starting NFS server and s...
      Dec 06 15:47:03 test systemd[1]: Started NFS server and se...
      Hint: Some lines were ellipsized, use -l to show in full.
    5. 添加开机启动。

      [root@test ~]# systemctl enable nfs.service
    6. 检查rpcbind服务显示如下状态,表示服务已正常。

      [root@test ~]# systemctl status rpcbind.service
      â- rpcbind.service - RPC bind service
      Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled)
      Active: active (running) since Thu 2018-12-06 15:47:03 CST; 7min ago
      Main PID: 10598 (rpcbind)
      CGroup: /system.slice/rpcbind.service
      └─10598 /sbin/rpcbind -w
      
      
      Dec 06 15:47:03 test systemd[1]: Starting RPC bind service...
      Dec 06 15:47:03 test systemd[1]: Started RPC bind service.
      Hint: Some lines were ellipsized, use -l to show in full.
  • CentOS 7版本的ECS实例默认使用firewall防火墙,您可以使用systemctl status firewalld命令来查看firewall防火墙是否处于开启状态。如果您使用的是iptables防火墙,请使用相应iptables命令参照下文firewall防火墙配置方式开放NFS服务所需端口。firewall防火墙配置步骤如下:

    1. 查看NFS需要开放的端口。

      [root@test ~]# rpcinfo -p localhost
         program vers proto   port  service
          100000    4   tcp    111  portmapper
          100000    3   tcp    111  portmapper
          100000    2   tcp    111  portmapper
          100000    4   udp    111  portmapper
          100000    3   udp    111  portmapper
          100000    2   udp    111  portmapper
          100024    1   udp  50382  status
          100024    1   tcp  59133  status
          100005    1   udp  20048  mountd
          100005    1   tcp  20048  mountd
          100005    2   udp  20048  mountd
          100005    2   tcp  20048  mountd
          100005    3   udp  20048  mountd
          100005    3   tcp  20048  mountd
          100003    3   tcp   2049  nfs
          100003    4   tcp   2049  nfs
          100227    3   tcp   2049  nfs_acl
          100003    3   udp   2049  nfs
          100003    4   udp   2049  nfs
          100227    3   udp   2049  nfs_acl
          100021    1   udp  37473  nlockmgr
          100021    3   udp  37473  nlockmgr
          100021    4   udp  37473  nlockmgr
          100021    1   tcp  37688  nlockmgr
          100021    3   tcp  37688  nlockmgr
          100021    4   tcp  37688  nlockmgr
    2. 防火墙规则中新增开放portmappermountdnfs服务的相关端口:tcpudp协议的111、20048、2049三个端口。

      说明

      因为mountd服务使用的是一个随机端口,您需要先通过以下两种方式获取 mountd服务端口后再配置防火墙:

      • 使用rpcinfo -p localhost命令查看mountd服务当前使用的端口。

      • 通过修改/etc/sysconfig/nfs文件中的MOUNTD_PORT=xxx,将mountd服务端口固定。

    3. 依次添加防火墙策略。

      [root@test ~]# firewall-cmd --zone=public --add-port=111/tcp --permanent
      success
      [root@test ~]# firewall-cmd --zone=public --add-port=20048/tcp --permanent
      success
      [root@test ~]# firewall-cmd --zone=public --add-port=2049/tcp --permanent
      success
      [root@test ~]# firewall-cmd --zone=public --add-port=111/udp --permanent
      success
      [root@test ~]# firewall-cmd --zone=public --add-port=20048/udp --permanent
      success
      [root@test ~]# firewall-cmd --zone=public --add-port=2049/udp --permanent
      success
    4. 重新载入防火墙规则。

      [root@test ~]# firewall-cmd --reload
      success