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

阿里云 ECS 实例

您需要将您的 ECS 实例按照以下方法将您的文件夹共享出来:
说明 文件同步只支持专有网络下的 ECS 实例数据同步,经典网络不支持。
  • Windows 系统
    若您的 ECS 实例是 Windows 系统,请参照以下步骤操作:
    1. 将您需要同步的数据放在一个文件夹内,并将该文件夹共享。您可按照您的系统版本搜索设置文件共享的相关文档进行配置。
    2. 修改 Windows 防火墙和杀毒软件设置,允许该实例所在专有网络 VPC 内的所有 IP 地址可以访问实例的 445 端口(若防火墙和杀毒软件未开启,请跳过此步骤)。
    3. 添加阿里云 ECS 安全组规则,允许该实例所在 VPC 网络中的所有 IP 可以访问实例的 445 端口。
  • Linux 系统
    若您的 ECS 实例是 Linux 系统,请参照以下步骤操作:
    1. 启用 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