

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 NFS 文件服务器配置 AWS DataSync 传输
<a name="create-nfs-location"></a>

使用 AWS DataSync，您可以在网络文件系统 (NFS) 文件服务器和以下 AWS 存储服务之间传输数据。支持的存储服务取决于您的任务模式，如下所示：


| 基本模式 | 增强模式 | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/create-nfs-location.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/create-nfs-location.html)  | 

要设置此类传输，您需要为 NFS 文件服务器创建一个[位置](how-datasync-transfer-works.md#sync-locations)。您可以将此位置用作传输源或传输目标位置。

## 提供 DataSync 对 NFS 文件服务器的访问权限
<a name="accessing-nfs"></a>

 DataSync 要访问您的 NFS 文件服务器，您需要一个 DataSync [代理](how-datasync-transfer-works.md#sync-agents)。代理使用 NFS 协议在您的文件服务器上装载导出。请务必使用与所需任务模式相对应的代理。

**Topics**
+ [配置 NFS 导出](#accessing-nfs-configuring-export)
+ [支持的 NFS 版本](#supported-nfs-versions)

### 配置 NFS 导出
<a name="accessing-nfs-configuring-export"></a>

传输 DataSync 所需的导出取决于您的 NFS 文件服务器是源位置还是目标位置，以及文件服务器权限的配置方式。

如果您的文件服务器是源位置，则 DataSync 只需读取和遍历您的文件和文件夹即可。如果是目标位置，则 DataSync 需要 root 访问权限才能写入该位置，并对要复制的文件和文件夹设置所有权、权限和其他元数据。您可以使用 `no_root_squash` 选项为导出提供根访问权限。

以下示例介绍如何配置提供访问权限的 NFS 导出。 DataSync

**当您的 NFS 文件服务器是源位置时（根访问权限）**  
使用以下命令配置导出，该命令提供 DataSync只读权限 (`ro`) 和 root 访问权限 (`no_root_squash`)：

```
export-path datasync-agent-ip-address(ro,no_root_squash)
```

**当您的 NFS 文件服务器是目标位置时**  
使用以下命令配置导出，该命令提供 DataSync写入权限 (`rw`) 和 root 访问权限 (`no_root_squash`)：

```
export-path datasync-agent-ip-address(rw,no_root_squash)
```

**当您的 NFS 文件服务器是源位置时（没有根访问权限）**  
使用以下命令配置您的导出，该命令指定您知道将为导出提供 DataSync只读权限的 POSIX 用户 ID (UID) 和组 ID (GID)：

```
export-path datasync-agent-ip-address(ro,all_squash,anonuid=uid,anongid=gid)
```

### 支持的 NFS 版本
<a name="supported-nfs-versions"></a>

默认情况下， DataSync 使用 NFS 版本 4.1。 DataSync 还支持 NFS 4.0 和 3.x。

## 为 NFS 传输配置网络
<a name="configure-network-nfs-location"></a>

要进行 DataSync 传输，必须为几个网络连接配置流量：

1. 允许通过以下端口从 DataSync 代理到 NFS 文件服务器的流量：
   + **对于 NFS 版本 4.1 和 4.0**：TCP 端口 2049
   + **对于 NFS 版本 3.x**：TCP 端口 111 和 2049

   您网络中的其他 NFS 客户端应该能够装载您用来传输数据的 NFS 导出。无需 Kerberos 身份验证即可访问导出。

1. 为[服务端点连接](datasync-network.md)（如 VPC、公共端点或 FIPS 端点）配置流量。

1. 允许流量从 DataSync 服务传输到您要传输或传输的[AWS 存储服务](datasync-network.md#storage-service-network-requirements)。

## 创建您的 NFS 传输位置
<a name="create-nfs-location-how-to"></a>

在开始之前，请注意以下事项：
+ 您需要一个 NFS 文件服务器来传输数据。
+ 您需要一个可以[访问您的文件服务器](#accessing-nfs)的 DataSync 代理。
+  DataSync 不支持复制 NFS 版本 4 访问控制列表 (ACLs)。

### 使用控制 DataSync 台
<a name="create-nfs-location-console"></a>

1. 打开 AWS DataSync 控制台，网址为[https://console.aws.amazon.com/datasync/](https://console.aws.amazon.com/datasync/)。

1. 在左侧导航窗格中，展开**数据传输**，然后选择 **位置**和 **创建位置**。

1. 对于 **位置类型**，请选择 **网络文件系统 (NFS)**。

1. 对于**代理**，请选择可以连接到 NFS 文件服务器的 DataSync 代理。

   可以选择多个代理。有关更多信息，请参阅 [使用多个 DataSync 代理](do-i-need-datasync-agent.md#multiple-agents)。

1. 对于 **NFS 服务器**，请输入您的 DataSync代理所连接的 NFS 文件服务器的域名系统 (DNS) 名称或 IP 地址。

1. 在**装载路径**中，输入要 DataSync 装载的 NFS 导出路径。

   此路径（或路径的子目录）是传入或 DataSync 传出数据的地方。有关更多信息，请参阅 [配置 NFS 导出](#accessing-nfs-configuring-export)。

1. （可选）展开 **“其他设置”**，然后选择 DataSync 要在访问文件服务器时使用的特定 **NFS 版本**。

   有关更多信息，请参阅 [支持的 NFS 版本](#supported-nfs-versions)。

1. 或者，选择**添加标签**以标记您的 NFS 位置。

   *标签* 是帮助您管理、筛选和搜索位置的键值对。我们建议至少为您的位置创建一个名称标签。

1. 选择**创建位置**。

### 使用 AWS CLI
<a name="create-location-nfs-cli"></a>
+ 使用以下命令创建 NFS 位置。

  ```
  aws datasync create-location-nfs \
      --server-hostname nfs-server-address \
      --on-prem-config AgentArns=datasync-agent-arns \
      --subdirectory nfs-export-path
  ```

  有关创建位置的更多信息，请参阅 [提供 DataSync 对 NFS 文件服务器的访问权限](#accessing-nfs)。

  DataSync 自动选择用于从 NFS 位置读取的 NFS 版本。要指定 NFS 版本，请在 [NfsMountOptions](API_NfsMountOptions.md) API 操作中使用可选 `Version` 参数。

此命令返回 NFS 位置的 Amazon 资源名称 (ARN)，与以下所示的 ARN 类似。

```
{
    "LocationArn": "arn:aws:datasync:us-east-1:111222333444:location/loc-0f01451b140b2af49"
}
```

要确保可以挂载目录，您可以连接到与代理具有相同网络配置的任何计算机，并运行以下命令。

```
mount -t nfs -o nfsvers=<nfs-server-version <nfs-server-address:<nfs-export-path <test-folder
```

以下是 命令的示例。

```
mount -t nfs -o nfsvers=3 198.51.100.123:/path_for_sync_to_read_from /temp_folder_to_test_mount_on_local_machine
```