

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

# 使用本地存储与本地存储进行传入或传出本地存储 AWS DataSync
<a name="transferring-on-premises-storage"></a>

使用 AWS DataSync，您可以在多个本地或自行管理的存储系统与以下 AWS 存储服务之间传输文件和对象：
+ [Amazon S3](create-s3-location.md)
+ [Amazon EFS](create-efs-location.md)
+ [ FSx 适用于 Windows 文件服务器的亚马逊](create-fsx-location.md)
+ [亚马逊 f FSx or Lustre](create-lustre-location.md)
+ [ FSx 适用于 OpenZFS 的亚马逊](create-openzfs-location.md)
+ [ FSx 适用于 NetApp ONTAP 的亚马逊](create-ontap-location.md)

**Topics**
+ [使用 NFS 文件服务器配置 AWS DataSync 传输](create-nfs-location.md)
+ [使用 SMB 文件服务器配置 AWS DataSync 传输](create-smb-location.md)
+ [使用 HDFS 集群配置 AWS DataSync 传输](create-hdfs-location.md)
+ [使用对象存储系统配置 DataSync 传输](create-object-location.md)

# 使用 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
```

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

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


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

要设置此类传输，您需要为 SMB 文件服务器创建一个[位置](how-datasync-transfer-works.md#sync-locations)。您可以将此位置用作传输源或传输目标位置。请务必使用与所需任务模式相对应的代理。

## 提供 DataSync 对 SMB 文件服务器的访问权限
<a name="configuring-smb"></a>

DataSync 使用 SMB 协议连接到您的文件服务器，并且可以使用 NTLM 或 Kerberos 进行身份验证。

**Topics**
+ [支持的 SMB 版本](#configuring-smb-version)
+ [使用 NTLM 身份验证](#configuring-smb-ntlm-authentication)
+ [使用 Kerberos 身份验证](#configuring-smb-kerberos-authentication)
+ [所需的权限](#configuring-smb-permissions)
+ [DFS 命名空间](#configuring-smb-location-dfs)

### 支持的 SMB 版本
<a name="configuring-smb-version"></a>

默认情况下，根据与 SMB 文件服务器的协商 DataSync 自动选择 SMB 协议的版本。

您也可以配置 DataSync 为使用特定的 SMB 版本，但我们建议只有 DataSync 在无法自动与 SMB 文件服务器协商时才这样做。 DataSync 支持 SMB 版本 1.0 及更高版本。出于安全起见，建议使用 SMB 版本 3.0.2 或更高版本。早期版本（例如 SMB 1.0）包含已知的安全漏洞，攻击者可以借此来窃取您的数据。

有关 DataSync控制台和 API 中的选项列表，请参阅下表：


| 控制台选项 | API 选项 | 说明 | 
| --- | --- | --- | 
| 自动 |  `AUTOMATIC`  |  DataSync 和 SMB 文件服务器协商它们在 2.1 和 3.1.1 之间相互支持的最高版本的 SMB。 这是默认选项，也是推荐的选项。如果您改为选择文件服务器不支持的特定版本，则可能会出现 `Operation Not Supported` 错误。  | 
|  SMB 3.0.2  |  `SMB3`  |  将协议协商限制为仅 SMB 版本 3.0.2。  | 
| SMB 2.1 |  `SMB2`  | 将协议协商限制为仅 SMB 版本 2.1。 | 
| SMB 2.0 | `SMB2_0` | 将协议协商限制为仅 SMB 版本 2.0。 | 
| SMB 1.0 | `SMB1` | 将协议协商限制为仅 SMB 版本 1.0。 | 

### 使用 NTLM 身份验证
<a name="configuring-smb-ntlm-authentication"></a>

要使用 NTLM 身份验证，您需要提供一个用户名和密码，允许您访问 DataSync 要传输到或从中传输的 SMB 文件服务器。该用户可以是文件服务器上的本地用户，也可以是 Microsoft Active Directory 中的域用户。

### 使用 Kerberos 身份验证
<a name="configuring-smb-kerberos-authentication"></a>

要使用 Kerberos 身份验证，您需要提供 Kerberos 主体、Kerberos 密钥表 (keytab) 文件和 Kerberos 配置文件，该文件允许访问 DataSync 要传输到或从中传输的 SMB 文件服务器。

**Topics**
+ [先决条件](#configuring-smb-kerberos-prerequisites)
+ [DataSync Kerberos 的配置选项](#configuring-smb-kerberos-options)

#### 先决条件
<a name="configuring-smb-kerberos-prerequisites"></a>

您需要创建几个 Kerberos 工件并配置您的网络，以便 DataSync 可以访问您的 SMB 文件服务器。
+ 使用 [ktpass](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/ktpass) 或 [kutil](https://web.mit.edu/kerberos/krb5-1.12/doc/admin/admin_commands/ktutil.html) 实用程序创建 Kerberos 的 keytab 文件。

  以下示例使用 `ktpass` 创建 keytab 文件。您指定的 Kerberos 领域 (`MYDOMAIN.ORG`) 必须采用大写字母。

  ```
  ktpass /out C:\YOUR_KEYTAB.keytab /princ HOST/kerberosuser@MYDOMAIN.ORG /mapuser kerberosuser /pass * /crypto AES256-SHA1 /ptype KRB5_NT_PRINCIPAL
  ```
+ 准备 Kerberos 配置文件 (`krb5.conf`) 的简化版本。包括有关领域、域管理服务器位置以及主机名映射到 Kerberos 领域的信息。

  验证 `krb5.conf` 内容中领域和域名的大小写格式是否正确。例如：

  ```
  [libdefaults] 
    dns_lookup_realm = true 
    dns_lookup_kdc = true 
    forwardable = true 
    default_realm = MYDOMAIN.ORG
  
  [realms] 
    MYDOMAIN.ORG = { 
      kdc = mydomain.org 
      admin_server = mydomain.org 
    }
  
  [domain_realm] 
    .mydomain.org = MYDOMAIN.ORG 
    mydomain.org = MYDOMAIN.ORG
  ```
+ 在网络配置中，确保 Kerberos 密钥分配中心（KDC）服务器端口已打开。KDC 端口通常为 TCP 端口 88。

#### DataSync Kerberos 的配置选项
<a name="configuring-smb-kerberos-options"></a>

在创建使用 Kerberos 的 SMB 位置时，需配置以下选项。


| 控制台选项 | API 选项 | 说明 | 
| --- | --- | --- | 
|  **中小型企业服务器**  |  `ServerHostName`  |  您的 DataSync代理将挂载的 SMB 文件服务器的域名。对于 Kerberos，无法指定文件服务器的 IP 地址。  | 
|  **Kerberos 主体**  |  `KerberosPrincipal`  |  Kerberos 领域中有权访问 SMB 文件服务器中文件、文件夹和文件元数据的身份。 Kerberos 主体可能看起来像 `HOST/kerberosuser@MYDOMAIN.ORG`。 主体名称区分大小写。  | 
|  **Keytab 文件**  |  `KerberosKeytab`   |  Kerberos 密钥表（keytab）文件，其中包括 Kerberos 主体和加密密钥之间的映射。  | 
|  **Kerberos 配置文件**  |  `KerberosKrbConf`  |  定义 Kerberos 领域配置的 `krb5.conf` 文件。  | 
|  **DNS IP 地址**（可选）  |  `DnsIpAddresses`  |  您的 SMB 文件服务器所属的 DNS 服务器 IPv4 的地址。 如果您的环境中有多个域，则配置此域可确保 DataSync 连接到正确的 SMB 文件服务器。  | 

### 所需的权限
<a name="configuring-smb-permissions"></a>

您提供的身份 DataSync 必须具有装载和访问您的 SMB 文件服务器的文件、文件夹和文件元数据的权限。

如果您在 Active Directory 中提供身份，则该身份必须是具有以下一种或两种用户权限的 Active Directory 组的成员（取决于[您 DataSync 要复制的元数据](configure-metadata.md)）：


| 用户权限 | 说明 | 
| --- | --- | 
|  **恢复文件和目录**（`SE_RESTORE_NAME`）  |   DataSync 允许复制对象所有权、权限、文件元数据和 NTFS 自由访问列表 () DACLs。 此用户权限通常授予**域管理员**组和**备份操作员**组（均为默认 Active Directory 组）的成员。  | 
|  **管理审计和安全日志**（`SE_SECURITY_NAME`）  |   DataSync 允许复制 NTFS 系统访问控制列表 (SACLs)。 此用户权限通常授予**域管理员**组的成员。  | 

如果您要复制 Windows， ACLs 并且要在 SMB 文件服务器和另一个使用 SMB 的存储系统（例如适用于 Windows 文件服务器的 Amazon 或 FSx ONTAP）之间 FSx 进行传输，则您提供的身份 DataSync 必须属于同一 Active Directory 域或者它们的域之间有 Active Directory 信任关系。

### DFS 命名空间
<a name="configuring-smb-location-dfs"></a>

DataSync 不支持 Microsoft 分布式文件系统 (DFS) 命名空间。我们建议您在创建 DataSync 位置时改为指定底层文件服务器或共享。

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

在开始之前，您需要一个要从中传输数据的 SMB 文件服务器。

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

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

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

1. 对于 **位置类型**，选择 **Server Message Block (SMB) (服务器消息块 (SMB))**。

   您可在稍后将此位置配置为源或目标。

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

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

1. 对**于 SMB 服务器**，请输入您的 DataSync 代理将挂载的 SMB 文件服务器的域名或 IP 地址。

   对于此设置，请记住以下几点：
   + 您无法指定 IP 版本 6 (IPv6) 地址。
   + 如果使用的是 Kerberos 身份验证，则必须指定域名。

1. 在 “**共享名称**” 中，输入 SMB 文件服务器导出的共享名称，用于读 DataSync 取或写入数据。

   您可以在共享路径中包含子目录（例如，‭`/path/to/subdirectory`）。确保网络中的其他 SMB 客户端也可以挂载此路径。

   要复制子目录中的所有数据， DataSync 必须能够装载 SMB 共享并访问其所有数据。有关更多信息，请参阅 [所需的权限](#configuring-smb-permissions)。

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

   默认情况下，根据与 SMB 文件服务器的协商 DataSync 自动选择版本。有关信息，请参阅[支持的 SMB 版本](#configuring-smb-version)。

1. 对于**身份验证类型**，选择 **NTLM** 或 **Kerberos**。

1. 根据您的身份验证类型，执行以下操作之一：

------
#### [ NTLM ]
   + 对于 **用户**，输入可装载 SMB 文件服务器并有权访问传输中涉及文件和文件夹的用户名。

     有关更多信息，请参阅 [所需的权限](#configuring-smb-permissions)。
   + 对于**密码**，输入可以挂载 SMB 文件服务器并有权访问传输过程中涉及的文件和文件夹的用户的密码。
   + 或者，对于 **域**，输入 SMB 文件服务器所属的 Windows 域名。

     如果您的环境中有多个域，则配置此设置 DataSync 可确保连接到正确的 SMB 文件服务器。

------
#### [ Kerberos ]
   + 对于 **Kerberos 主体**，请指定 Kerberos 领域中有权访问 SMB 文件服务器中文件、文件夹和文件元数据的主体。

     Kerberos 主体可能看起来像 `HOST/kerberosuser@MYDOMAIN.ORG`。

     主体名称区分大小写。如果您为此设置指定的主体与您用于创建 keytab 文件的主体不完全匹配，则 DataSync任务执行将失败。
   + 对于 **Keytab 文件**，请上传一个包含 Kerberos 主体和加密密钥之间映射关系的 keytab 文件。
   + 对于 **Kerberos 配置文件**，请上传一个定义 Kerberos 领域配置的 `krb5.conf` 文件。
   + （可选）对于 **DNS IP 地址**，请为 SMB 文件服务器所属的 DNS 服务器最多指定两个 IPv4地址。

     如果您的环境中有多个域，则配置此参数 DataSync 可确保连接到正确的 SMB 文件服务器。

------

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

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

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

### 使用 AWS CLI
<a name="create-location-smb-cli"></a>

以下说明介绍如何使用 NTLM 或 Kerberos 身份验证来创建 SMB 位置。

------
#### [ NTLM ]

1. 复制以下 `create-location-smb` 命令。

   ```
   aws datasync create-location-smb \
       --agent-arns datasync-agent-arns \
       --server-hostname smb-server-address \
       --subdirectory smb-export-path \
       --authentication-type "NTLM" \
       --user user-who-can-mount-share \
       --password user-password \
       --domain windows-domain-of-smb-server
   ```

1. 对于`--agent-arns`，请指定可以连接到 SMB 文件服务器的 DataSync 代理。

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

1. 对于`--server-hostname`，请指定要装载 DataSync 代理的 SMB 文件服务器的域名或 IPv4 地址。

1. 对于`--subdirectory`，请指定 SMB 文件服务器导出的共享的名称，该共享 DataSync将在其中读取或写入数据。

   您可以在共享路径中包含子目录（例如，‭`/path/to/subdirectory`）。确保网络中的其他 SMB 客户端也可以挂载此路径。

   要复制子目录中的所有数据， DataSync 必须能够装载 SMB 共享并访问其所有数据。有关更多信息，请参阅 [所需的权限](#configuring-smb-permissions)。

1. 对于 `--user`，指定可挂载 SMB 文件服务器并有权访问传输中涉及文件和文件夹的用户名。

   有关更多信息，请参阅 [所需的权限](#configuring-smb-permissions)。

1. 对于 `--password`，指定可以挂载 SMB 文件服务器并有权限访问传输中涉及的文件和文件夹的用户的密码。

1. （可选）对于 `--domain`，指定 SMB 文件服务器所属的 Windows 域名。

   如果您的环境中有多个域，则配置此设置 DataSync 可确保连接到正确的 SMB 文件服务器。

1. （可选）如果 DataSync 要使用特定的 SMB 版本，请添加该`--version`选项。有关更多信息，请参阅 [支持的 SMB 版本](#configuring-smb-version)。

1. 运行 `create-location-smb` 命令。

   如果命令成功，您将收到一条响应，显示您创建位置的 ARN。例如：

   ```
   {
       "arn:aws:datasync:us-east-1:123456789012:location/loc-01234567890example"
   }
   ```

------
#### [ Kerberos ]

1. 复制以下 `create-location-smb` 命令。

   ```
   aws datasync create-location-smb \
       --agent-arns datasync-agent-arns \
       --server-hostname smb-server-address \
       --subdirectory smb-export-path \
       --authentication-type "KERBEROS" \
       --kerberos-principal "HOST/kerberosuser@EXAMPLE.COM" \
       --kerberos-keytab "fileb://path/to/file.keytab" \
       --kerberos-krb5-conf "file://path/to/krb5.conf" \
       --dns-ip-addresses array-of-ipv4-addresses
   ```

1. 对于`--agent-arns`，请指定可以连接到 SMB 文件服务器的 DataSync 代理。

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

1. 对于`--server-hostname`，请指定您的 DataSync 代理将装载的 SMB 文件服务器的域名。

1. 对于`--subdirectory`，请指定 SMB 文件服务器导出的共享的名称，该共享 DataSync将在其中读取或写入数据。

   您可以在共享路径中包含子目录（例如，‭`/path/to/subdirectory`）。确保网络中的其他 SMB 客户端也可以挂载此路径。

   要复制子目录中的所有数据， DataSync 必须能够装载 SMB 共享并访问其所有数据。有关更多信息，请参阅 [所需的权限](#configuring-smb-permissions)。

1. 对于 Kerberos 选项，执行下列操作：
   + `--kerberos-principal`：指定 Kerberos 领域中有权访问 SMB 文件服务器中文件、文件夹和文件元数据的主体。

     Kerberos 主体可能看起来像 `HOST/kerberosuser@MYDOMAIN.ORG`。

     主体名称区分大小写。如果您为此选项指定的主体与您用于创建密钥表文件的主体不完全匹配，则 DataSync任务执行将失败。
   + `--kerberos-keytab`：指定一个包含 Kerberos 主体和加密密钥之间映射关系的 keytab 文件。
   + `--kerberos-krb5-conf`：指定一个定义 Kerberos 领域配置的 `krb5.conf` 文件。
   + （可选）`--dns-ip-addresses`：为您的 SMB 文件服务器所属的 DNS 服务器最多指定两个 IPv4 地址。

     如果您的环境中有多个域，则配置此参数 DataSync 可确保连接到正确的 SMB 文件服务器。

1. （可选）如果 DataSync 要使用特定的 SMB 版本，请添加该`--version`选项。有关更多信息，请参阅 [支持的 SMB 版本](#configuring-smb-version)。

1. 运行 `create-location-smb` 命令。

   如果命令成功，您将收到一条响应，显示您创建位置的 ARN。例如：

   ```
   {
       "arn:aws:datasync:us-east-1:123456789012:location/loc-01234567890example"
   }
   ```

------

# 使用 HDFS 集群配置 AWS DataSync 传输
<a name="create-hdfs-location"></a>

使用 AWS DataSync，您可以使用基本模式任务在 Hadoop 分布式文件系统 (HDFS) 集群和以下 AWS 存储服务之一之间传输数据：
+ [Amazon S3](create-s3-location.md)
+ [Amazon EFS](create-efs-location.md)
+ [ FSx 适用于 Windows 文件服务器的亚马逊](create-fsx-location.md)
+ [亚马逊 f FSx or Lustre](create-lustre-location.md)
+ [ FSx 适用于 OpenZFS 的亚马逊](create-openzfs-location.md)
+ [ FSx 适用于 NetApp ONTAP 的亚马逊](create-ontap-location.md)

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

## 提供 DataSync 对 HDFS 集群的访问权限
<a name="accessing-hdfs"></a>

要连接到 HDFS 集群，请 DataSync 使用尽可能靠近 HDFS 集群[部署的基本模式代理代理](deploy-agents.md)。该 DataSync代理充当 HDFS 客户端，与集群 DataNodes 中的 NameNodes 和进行通信。

启动传输任务时，会 DataSync NameNode 查询群集上文件和文件夹的位置。如果您将 HDFS 位置配置为源位置，则会从集群 DataNodes 中 DataSync 读取文件和文件夹数据，并将这些数据复制到目标。如果您将 HDFS 位置配置为目标位置，则 DataSync 会将文件和文件夹从源位置写入集群 DataNodes 中。

### 身份验证
<a name="accessing-hdfs-authentication"></a>

连接到 HDFS 集群时， DataSync 支持简单身份验证或 Kerberos 身份验证。要使用简单身份验证，请提供对 HDFS 集群具有读写权限的用户的用户名。要使用 Kerberos 身份验证，请提供 Kerberos 配置文件、Kerberos 密钥表（密钥表）文件和 Kerberos 主体名称。Kerberos 主体的凭证必须位于提供的密钥表文件中。

### 加密
<a name="accessing-hdfs-encryption"></a>

使用 Kerberos 身份验证时， DataSync 支持在 DataSync 代理和 HDFS 集群之间传输的数据时对其进行加密。使用 HDFS 集群上的保护质量 (QOP) 配置设置，并在创建 HDFS 位置时指定 QOP 设置，从而加密数据。QOP 配置包括数据传输保护和远程过程调用 (RPC) 保护设置。

**DataSync 支持以下 Kerberos 加密类型：**
+ `des-cbc-crc`
+ `des-cbc-md4`
+ `des-cbc-md5`
+ `des3-cbc-sha1`
+ `arcfour-hmac`
+ `arcfour-hmac-exp`
+ `aes128-cts-hmac-sha1-96`
+ `aes256-cts-hmac-sha1-96`
+ `aes128-cts-hmac-sha256-128`
+ `aes256-cts-hmac-sha384-192`
+ `camellia128-cts-cmac`
+ `camellia256-cts-cmac`

您还可以使用透明数据加密 (TDE) 将 HDFS 集群配置为静态加密。使用简单身份验证时，对启用 TDE 的集群进行 DataSync 读取和写入。如果您使用将数据复制 DataSync 到启用 TDE 的集群，请先在 HDFS 集群上配置加密区域。 DataSync 不创建加密区域。

## 不支持的 HDFS 功能
<a name="hdfs-unsupported-features"></a>

目前不支持以下 HDFS 功能： DataSync
+ 使用 Kerberos 身份验证时的透明数据加密 (TDE)
+ 配置多个 NameNodes
+ 通过 HTTPS 的 Hadoop HDFS (httpFS)
+ POSIX 访问控制列表 () ACLs
+ HDFS 扩展属性 (xattrs)
+ 使用 Apache 的 HDFS 集群 HBase

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

您可以使用您的位置作为 DataSync转账的来源或目的地。

**开始之前**：通过执行以下操作验证代理与 Hadoop 集群之间的网络连接：
+ 测试对 [本地、自我管理和其他云存储的网络要求](datasync-network.md#on-premises-network-requirements) 中列出的 TCP 端口的访问权限。
+ 测试本地代理与 Hadoop 集群之间的访问权限。有关说明，请参阅[验证代理与存储系统的连接](test-agent-connections.md#self-managed-storage-connectivity)。

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

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

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

1. 对于 **位置类型**，选择 **Hadoop Distributed File System (HDFS)**。

   您可在稍后将此位置配置为源或目标。

1. 对于**代理**，请选择可以连接到 HDFS 集群的代理。

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

1. 对于 **NameNode**，请提供 HDFS 群集的主 NameNode群集的域名或 IP 地址。

1. 在 **“文件夹**” 中，输入 HDFS 集群上 DataSync 要用于数据传输的文件夹。

   如果您的 HDFS 位置是源，请将此文件夹中的文件 DataSync 复制到目标。如果您的位置是目的地，则 DataSync会将文件写入此文件夹。

1. 要设置 **区块大小**或 **复制因子**，请选择 **其他设置**。

   默认块大小为 128MiB。您提供的块大小必须是 512 字节的倍数。

   传输到 HDFS 集群 DataNodes 时，默认重复因子为三。

1. 在 **安全**部分中，选择 HDFS 群集上使用的 **身份验证类型**。
   + **简单** - 对于 **用户**，在 HDFS 集群上指定具有以下权限的用户名（取决于您的用例）：
     + 如果您计划将此位置用作源位置，请指定仅具有读取权限的用户。
     + 如果您计划将此位置用作目标位置，请指定具有读写权限的用户。

     您可以选择为 HDFS 集群的密钥管理服务器（KMS）指定 URI。
   + **Kerberos** – 指定有权访问您的 HDFS 集群的 Kerberos **主体**。接下来，提供包含所提供的 Kerberos 主体的**KeyTab文件**。然后，提供 **Kerberos 配置文件**。最后，在 **RPC 保护**和 **数据传输保护**下拉列表中指定传输中加密保护的类型。

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

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

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

### 使用 AWS CLI
<a name="create-location-hdfs-cli"></a>

1. 复制以下 `create-location-hdfs` 命令。

   ```
   aws datasync create-location-hdfs --name-nodes [{"Hostname":"host1", "Port": 8020}] \
       --authentication-type "SIMPLE|KERBEROS" \
       --agent-arns [arn:aws:datasync:us-east-1:123456789012:agent/agent-01234567890example] \
       --subdirectory "/path/to/my/data"
   ```

1. 在`--name-nodes`参数中，指定 HDFS 集群的主集群的主机名或 IP 地址 NameNode 以及 NameNode 正在监听的 TCP 端口。

1. 对于 `--authentication-type` 参数，指定连接 Hadoop 集群时使用的身份验证类型。您可以指定 `SIMPLE` 或 `KERBEROS`。

   如果您采用 `SIMPLE` 身份验证，请使用 `--simple-user` 参数指定用户的用户名。如果您采用 `KERBEROS` 身份验证，请使用 `--kerberos-principal`、`--kerberos-keytab` 和`--kerberos-krb5-conf` 参数。有关更多信息，请参阅 [create-location-hdfs](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/datasync/create-location-hdfs.html)。

1. 对于`--agent-arns`参数，请指定可以连接到您的 HDFS DataSync 集群的代理的 ARN。

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

1. （可选）在`--subdirectory`参数中，在 HDFS 集群上指定 DataSync 要用于数据传输的文件夹。

   如果您的 HDFS 位置是源，请将此文件夹中的文件 DataSync 复制到目标。如果您的位置是目的地，则 DataSync会将文件写入此文件夹。

1. 运行 `create-location-hdfs` 命令。

   如果命令成功，您将收到一条响应，显示您创建位置的 ARN。例如：

   ```
   {
       "arn:aws:datasync:us-east-1:123456789012:location/loc-01234567890example"
   }
   ```

# 使用对象存储系统配置 DataSync 传输
<a name="create-object-location"></a>

使用 AWS DataSync，您可以使用基本模式任务在对象存储系统和以下 AWS 存储服务之一之间传输数据：
+ [Amazon S3](create-s3-location.md)
+ [Amazon EFS](create-efs-location.md)
+ [ FSx 适用于 Windows 文件服务器的亚马逊](create-fsx-location.md)
+ [亚马逊 f FSx or Lustre](create-lustre-location.md)
+ [ FSx 适用于 OpenZFS 的亚马逊](create-openzfs-location.md)
+ [ FSx 适用于 NetApp ONTAP 的亚马逊](create-ontap-location.md)

要设置此类传输，您需要为对象存储系统创建一个[位置](how-datasync-transfer-works.md#sync-locations)。您可以将此位置用作传输源或传输目标位置。在本地对象存储之间传输数据需要使用基本模式 DataSync 代理。

## 先决条件
<a name="create-object-location-prerequisites"></a>

您的对象存储系统必须与以下 [Amazon S3 API 操作](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Operations.html)兼容 DataSync 才能连接到该系统：
+ `AbortMultipartUpload`
+ `CompleteMultipartUpload`
+ `CopyObject`
+ `CreateMultipartUpload`
+ `DeleteObject`
+ `DeleteObjects`
+ `DeleteObjectTagging`
+ `GetBucketLocation`
+ `GetObject`
+ `GetObjectTagging`
+ `HeadBucket`
+ `HeadObject`
+ `ListObjectsV2`
+ `PutObject`
+ `PutObjectTagging`
+ `UploadPart`

## 创建您的对象存储传输位置
<a name="create-object-location-how-to"></a>

在开始之前，您需要拥有计划向其传入数据或从中传出数据的对象存储系统。

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

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

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

1. 对于 **位置类型**，选择 **对象存储**。

   您可在稍后将此位置配置为源或目标。

1. 对于 **服务器**，提供对象存储服务器的域名或 IP 地址。

1. 对于 **存储桶名称**，输入传输中涉及的对象存储桶的名称。

1. 对于 **文件夹**，请输入对象前缀。

   DataSync 仅复制带有此前缀的对象。

1. 如果传输需要代理，请选择**使用代理**，然后选择连接到您的对象存储系统的 DataSync 代理。

   有些传输不需要代理。在其他情况中，可能需要使用多个代理。有关更多信息，请参阅[不需要 DataSync 代理的情况](do-i-need-datasync-agent.md#when-agent-not-required)和[使用多个 DataSync 代理](do-i-need-datasync-agent.md#multiple-agents)。

1. 要配置与对象存储服务器的连接，请展开 **其他设置**并执行以下操作：

   1. 对于 **服务器协议**，选择 **HTTP** 或 **HTTPS**。

   1. 对于 **服务器端口**，请使用默认端口（HTTP 为 **80**，HTTPS 为 **443**），或者根据需要指定自定义端口。

   1. 对于**证书**，如果对象存储系统使用私有或自签名证书颁发机构（CA），请选择**选择文件**，并指定带有完整证书链的单个 `.pem` 文件。

      证书链可能包括：
      + 对象存储系统的证书
      + 所有中间证书（如果有）
      + 签名 CA 的根证书

      您可以将证书串联到一个 `.pem` 文件中（在进行 base64 编码前，文件最大长度可以为 32768 字节）。以下示例 `cat` 命令创建了一个包含三个证书的 `object_storage_certificates.pem` 文件：

      ```
      cat object_server_certificate.pem intermediate_certificate.pem ca_root_certificate.pem > object_storage_certificates.pem
      ```

1. 如果需要凭证才能访问对象存储服务器，请选择**需要凭证**，然后输入用于访问存储桶的**访问密钥**。然后，要么直接输入**密钥**，要么指定包含该 AWS Secrets Manager 密钥的密钥。有关更多信息，请参阅[为存储位置提供凭证](https://docs.aws.amazon.com/datasync/latest/userguide/location-credentials.html)。

   访问密钥和密钥可以分别是用户名和密码。

1. 或者，选择 **添加标签**以标记您的对象存储位置。

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

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

### 使用 AWS CLI
<a name="create-location-object-cli"></a>

1. 复制以下 `create-location-object-storage` 命令：

   ```
   aws datasync create-location-object-storage \
       --server-hostname object-storage-server.example.com \
       --bucket-name your-bucket \
       --agent-arns arn:aws:datasync:us-east-1:123456789012:agent/agent-01234567890deadfb
   ```

1. 在命令中指定以下必需的参数：
   + `--server-hostname` – 指定您的对象存储服务器的域名或 IP 地址。
   + `--bucket-name` — 指定您要向其传输或从其传输的对象存储服务器上的存储桶的名称。

1. 或者，在命令中添加以下任意参数：
   + `--agent-arns`— 指定要连接到对象存储服务器的 DataSync代理。
   + `--server-port` – 指定对象存储服务器接受入站网络流量的端口（例如，端口 `443`）。
   + `--server-protocol` – 指定对象存储服务器通信时使用的协议（`HTTP` 或 `HTTPS`）。
   + `--access-key` – 如果需要凭证来向对象存储服务器进行身份验证，则指定访问密钥（例如，用户名）。
   + `--secret-key` – 如果需要凭证来向对象存储服务器进行身份验证，则指定私有密钥（例如，密码）。

     您还可以使用 AWS Secrets Manager提供其他参数来保护密钥。有关更多信息，请参阅[为存储位置提供凭证](https://docs.aws.amazon.com/datasync/latest/userguide/location-credentials.html)。
   + `--server-certificate`— 如果您的对象存储系统使用私有或自签名证书颁发机构 (CA)，则指定一个证书链， DataSync 以便在对象存储系统中进行身份验证。您必须指定具有完整证书链的单个 `.pem` 文件（例如，`file:///home/user/.ssh/object_storage_certificates.pem`）。

     证书链可能包括：
     + 对象存储系统的证书
     + 所有中间证书（如果有）
     + 签名 CA 的根证书

     您可以将证书串联到一个 `.pem` 文件中（在进行 base64 编码前，文件最大长度可以为 32768 字节）。以下示例 `cat` 命令创建了一个包含三个证书的 `object_storage_certificates.pem` 文件：

     ```
     cat object_server_certificate.pem intermediate_certificate.pem ca_root_certificate.pem > object_storage_certificates.pem
     ```
   + `--subdirectory` – 指定对象存储服务器的对象前缀。

     DataSync 仅复制带有此前缀的对象。
   + `--tags` – 指定表示要添加到位置资源的标签的键值对。

     标签可帮助您管理、筛选和搜索资源。我们建议为您的位置创建一个名称标签。

1. 运行 `create-location-object-storage` 命令。

   您会收到一条回复，表明您刚刚创建的位置 ARN。

   ```
   {
       "LocationArn": "arn:aws:datasync:us-east-1:123456789012:location/loc-01234567890abcdef"
   }
   ```