本文介绍文件同步之前的准备工作。

阿里云 ECS 实例

您需要将您的 ECS 实例按照以下方法将您的文件夹共享出来:
说明 文件同步只支持专有网络下的 ECS 实例数据同步,经典网络不支持。
  • Windows 系统
    若您的 ECS 实例是 Windows 系统,请参照以下步骤操作:
    1. 将您需要同步的数据放在一个文件夹内,并将该文件夹共享。您可按照您的系统版本搜索设置文件共享的相关文档进行配置。
    2. 修改 Windows 防火墙和杀毒软件设置,允许该实例所在专有网络 VPC 内的所有 IP 地址可以访问实例的 445 端口(若防火墙和杀毒软件未开启,请跳过此步骤)。
    3. 添加阿里云 ECS 安全组规则,允许该实例所在 VPC 网络中的所有 IP 可以访问实例的 445 端口。
  • Linux 系统
    若您的 ECS 实例是 Linux 系统,请参照以下步骤操作:
    1. 启用 NFS 服务,并将待同步的文件夹共享。步骤请参考:启用 NFS 服务(若您的系统已启用 NFS 服务,请跳过此步骤)。
    2. 修改 Linux 防火墙设置,放通 NFS 服务的端口。您可以使用 rpcinfo -p localhost 命令查看需放通的 portmappermountdnfs 服务的相关端口,详情请参见:防火墙配置(若防火墙未开启,请跳过此步骤)。
    3. 添加阿里云 ECS 安全组规则,允许该实例所在 VPC 网络中的所有 IP 可以访问实例的 NFS 服务相关端口。
      警告 为了您的数据安全,请不要将 NFS 服务端口开放给外网访问。

阿里云对象存储 OSS

创建目标存储空间,用于存放同步的数据。详情请参见创建存储空间

创建 RAM 子账号并授予相关权限

请按照如下创建 RAM 子账号并授予相关权限。

  1. 登录RAM控制台
  2. 单击人员管理 > 用户 > 新建用户
  3. 勾选控制台密码登录编程访问,然后填写用户账号信息。
  4. 保存生成的账号、密码、AccessKeyID 和 AccessKeySecret。
  5. 勾选用户登录名称,单击添加权限,授予子账号管理对象存储 OSS 权限(AliyunOSSFullAccess)、管理文件存储 NAS 权限 (AliyunNASFullAccess)、以及管理混合云备份服务 HBR 权限(AliyunHbrFullAccess)。授予页面如下图所示:
  6. 授权完成后,单击左侧主菜单栏的概览,单击用户登录地址链接,使用刚创建的 RAM 子账号的用户名和密码进行登录。

附录:使用 NFS 服务

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

假设要把 /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 服务的相关端口:tcp 和 udp 协议的 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