

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

# 对 DataSync 位置问题进行故障排除
<a name="troubleshooting-storage-issues"></a>

使用以下信息来帮助您解决 AWS DataSync 营业地点问题。其中一些问题可能包括：
+ NFS 位置的权限和挂载错误
+ 文件所有权问题
+ 访问使用 Kerberos 身份验证的 SMB 位置时出现问题
+ 对象存储的权限与访问问题，例如 Amazon S3 和 Microsoft Azure Blob 位置

## 我的任务失败，出现 NFS 权限被拒绝错误
<a name="task-permission-denied"></a>

如果用 `root_squash` 或 `all_squash` 配置 NFS 服务器，并且您的文件没有所有读取访问权限，则可能会显示“权限被拒绝”错误消息。

**要采取的操作**  
要修复此问题，请用 `no_root_squash` 配置 NFS 导出，或者确保要传输的所有文件的权限允许所有用户进行读取访问。

 DataSync 要访问目录，还必须启用所有执行访问权限。要确保可以挂载目录，首先连接到与代理具有相同网络配置的任何计算机。然后运行以下 CLI 命令：

`mount -t nfs -o nfsvers=<your-nfs-server-version> <your-nfs-server-name>:<nfs-export-path-you-specified> <new-test-folder-on-your-computer>`

如果问题仍未解决，请联系[AWS 支持 中心](https://console.aws.amazon.com/support/home#/)。

## 我的任务失败，出现 NFS 挂载错误
<a name="onpremise-location-stuck-mounting"></a>

在运行涉及 NFS 文件服务器位置的 DataSync 任务时，您可能会看到以下错误：

Task failed to access location loc-1111222233334444a: x40016: mount.nfs: Connection timed out

**要采取的操作**  
在错误得到解决之前，请执行以下操作：

1. 确保您在 DataSync所在位置指定的 NFS 文件服务器和导出文件有效。如果无效，请删除您的位置和任务，然后创建使用有效 NFS 文件服务器和导出的新位置和任务。有关更多信息，请参阅 [使用控制 DataSync 台](create-nfs-location.md#create-nfs-location-console)。

1. 检查代理和 NFS 文件服务器之间的防火墙配置。有关更多信息，请参阅 [本地、自我管理和其他云存储的网络要求](datasync-network.md#on-premises-network-requirements)。

1. 确保代理可以访问 NFS 文件服务器并挂载导出。有关更多信息，请参阅 [提供 DataSync 对 NFS 文件服务器的访问权限](create-nfs-location.md#accessing-nfs)。

1. 如果您仍然看到错误，请使用打开支持频道 支持。有关更多信息，请参阅 [我不知道我的代理出了什么问题。有人能帮我吗？](troubleshooting-datasync-agents.md#enable-support-access)。

## 我的任务失败，出现 Amazon EFS 挂载错误
<a name="troubleshoot-efs-mount-target"></a>

在运行涉及 Amazon EFS 位置的 DataSync 任务时，您可能会看到以下错误：

Task failed to access location loc-1111222233334444a: x40016: Failed to connect to EFS mount target with IP: 10.10.1.0.

如果您使用自己的位置配置的 Amazon EFS 文件系统的挂载路径被更新或删除，则可能会发生这种情况。 DataSync 不知道文件系统中的这些变化。

**要采取的操作**  
删除您的位置和任务，并使用新的挂载路径[创建新的 Amazon EFS 位置](create-efs-location.md#create-efs-location-how-to)。

## NFS 传输未保留文件所有权
<a name="nfs-id-mapping"></a>

传输完成后，您可能会注意到 DataSync 目标位置的文件具有不同的用户 IDs (UIDs) 或组 IDs (GIDs)，而不是源位置的相同文件。例如，目标位置中文件的 UID 可能是 `65534`、`99` 或 `nobody`。

如果传输中涉及的文件系统使用 NFS 版本 4 ID 映射（该功能 DataSync 不支持），则可能会发生这种情况。

**要采取的操作**  
您有几种方法可以解决此问题：
+ 为使用 NFS 版本 3（而不是版本 4）的文件系统创建一个新位置。
+ 在文件系统上禁用 NFS 版本 4 ID 映射。

重试传输。无论哪种方法都应解决问题。

## 我的任务无法访问使用 Kerberos 的 SMB 位置
<a name="task-fails-smb-location-kerberos"></a>

DataSync 使用 [Kerberos 身份验证的 SMB 位置出现错误通常与您的位置与 Kerber](create-smb-location.md#configuring-smb-kerberos-authentication) os 配置不匹配有关。也可能存在网络问题。

**无法访问位置**  
以下错误表示 SMB 位置或 Kerberos 设置可能存在配置问题：  

```
Task failed to access location
```
**验证以下各项**：  
+ 您为所在位置指定的 SMB 文件服务器是一个域名。对于 Kerberos，无法指定文件服务器的 IP 地址。
+ 您为所在位置指定的 Kerberos 主体与用于创建 Kerberos 密钥表（keytab）文件的主体相匹配。主体名称区分大小写。
+ 自创建 keytab 文件以来，Kerberos 主体的映射用户密码未出现更改。如果密码更改（由于密码轮换或其他原因），则任务执行可能会失败，并出现以下错误消息：

  Task failed to access location loc-1111222233334444a: x40015: kinit: Preauthentication failed while getting initial credentials

**无法连接到 KDC 领域**  
以下错误表示存在网络问题：  

```
kinit: Cannot contact any KDC for realm 'MYDOMAIN.ORG' while getting initial credentials"
```
**验证以下各项**：  
+ 您提供的 Kerberos 配置文件 (`krb5.conf`) 包含有关您的 K DataSync erberos 领域的正确信息。有关示例 `krb5.conf` 文件，请参阅 [Kerberos 身份验证的先决条件](create-smb-location.md#configuring-smb-kerberos-prerequisites)。
+ Kerberos 密钥分配中心（KDC）的服务器端口已打开。KDC 端口通常为 TCP 端口 88。
+ 网络上的 DNS 配置。

## 我的任务因 input/output 错误而失败
<a name="sync-io-error"></a>

如果您的存储系统未能通过 DataSync 代理 I/O 请求，则会收到一条 input/output 错误消息。常见原因包括服务器磁盘故障、防火墙配置更改或网络路由器故障。

如果错误涉及 NFS 文件服务器或 Hadoop Distributed File System（HDFS）集群，请跟随以下步骤来解决错误。

**采取的操作（NFS）**  
首先检查 NFS 文件服务器的日志和指标，以确定问题是否始于 NFS 服务器。如果是，请解决该问题。

接下来，检查网络配置是否尚未更改。要检查 NFS 文件服务器的配置是否正确以及是否 DataSync 可以访问它，请执行以下操作：

1. 在与代理相同的网络子网上设置另一个 NFS 客户端。

1. 在客户端上装载您的共享。

1. 验证客户端可以成功地读取和写入共享。

**采取的操作（HDFS）**  
在解决错误之前，请执行以下操作：

1. 确保您的 HDFS 集群允许您的 DataSync 代理与集群 NameNode 和 DataNode 端口通信。

   在大多数集群中，您可以在以下配置文件中找到集群使用的端口号：
   + 要找到 NameNode 端口，请在`fs.default`或`fs.default.name`属性下的`core-site.xml`文件中查找（取决于 Hadoop 发行版）。
   + 要找到端 DataNode 口，请在`dfs.datanode.address`属性下的`hdfs-site.xml`文件中查找。

1. 在您的 `hdfs-site.xml` 文件中，验证您的 `dfs.data.transfer.protection` 属性是否只有一个值。例如：

   ```
   <property>
      <name>dfs.data.transfer.protection</name>
      <value>privacy</value>
   </property>
   ```

## 错误：`FsS3UnableToConnectToEndpoint`
<a name="troubleshoot-fss3unabletoconnecttoendpoint"></a>

DataSync 无法连接到你的 [Amazon S3 地点](create-s3-location.md)。这可能意味着无法访问该位置的 S3 存储桶，或者该位置的配置不正确。

在解决问题之前，请执行以下操作：
+ 检查是否 DataSync 可以[访问您的 S3 存储桶](create-s3-location.md#create-s3-location-access)。
+ 使用 DataSync 控制台或 [DescribeLocationS3](https://docs.aws.amazon.com/datasync/latest/userguide/API_DescribeLocationS3.html) 操作确保位置配置正确。

## 错误：`FsS3HeadBucketFailed`
<a name="troubleshoot-fss3headbucketfailed"></a>

DataSync 无法访问您要传入或传出的 S3 存储桶。使用 Amazon S3 [HeadBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html)操作检查是否 DataSync有权访问存储桶。如果您需要调整权限，请参阅 [提供 DataSync 对 S3 存储桶的访问权限](create-s3-location.md#create-s3-location-access)。

## 任务因 `Unable to list Azure Blobs on the volume root` 错误而失败
<a name="troubleshoot-azure-blob-storage-list-volume-root"></a>

如果您的 DataSync 转移任务因`Unable to list Azure Blobs on the volume root`错误而失败，则可能是您的共享访问签名 (SAS) 令牌或Azure存储帐户的网络存在问题。

**要采取的操作**  
尝试以下操作并再次运行任务，直到问题得到解决：
+ 确保您的 [SAS 令牌](creating-azure-blob-location.md#azure-blob-sas-tokens)具有访问您的 Microsoft Azure Blob Storage 的相应权限。
+ 如果您在中运行 DataSync 代理Azure，请将您的存储帐户配置为允许从代理所在的虚拟网络进行访问。
+ 如果您在 Amazon EC2 上运行代理，请将 Azure 存储防火墙配置为允许从代理的公有 IP 地址进行访问。

有关如何配置 Azure 存储账户网络的信息，请参阅[Azure Blob Storage 文档](https://learn.microsoft.com/en-us/azure/storage/common/storage-network-security)。

## 错误：`FsAzureBlobVolRootListBlobsFailed`
<a name="troubleshoot-fsazureblobvolrootlistblobsfailed"></a>

 DataSync 用于访问您的共享访问签名 (SAS) 令牌Microsoft Azure Blob Storage没有 “列表” 权限。

要解决问题，请使用具有列表权限的令牌[更新您的位置](creating-azure-blob-location.md#azure-blob-update-location)，然后尝试重新运行任务。

## 错误：`SrcLocHitAccess`
<a name="troubleshoot-srclochitaccess"></a>

DataSync 无法访问您的来源位置。检查是否 DataSync 有权访问该地点，然后尝试再次运行您的任务。

## 错误：`SyncTaskErrorLocationNotAdded`
<a name="troubleshoot-synctaskerrorlocationnotadded"></a>

DataSync 无法访问您的位置。检查是否 DataSync 有权访问该地点，然后尝试再次运行您的任务。

## 错误：`S3 location creation failed with (InvalidRequestException) when calling the CreateLocationS3 operation`
<a name="troubleshoot-403-error"></a>

此错误可能与 IAM 权限、Amazon S3 存储桶策略、 AWS KMS 权限或其他权限问题有关。如果遇到此错误，请使用以下信息进行故障排除：
+ 《Amazon Simple Storage Service 用户指南》**中的[排查 Amazon S3 中的拒绝访问（403 禁止）错误](https://docs.aws.amazon.com/AmazonS3/latest/userguide/troubleshoot-403-errors.html)。
+ [如何解决来自 Amazon S3 的 403 访问被拒绝错误？](https://repost.aws/knowledge-center/s3-troubleshoot-403) on AWS re:Post

## S3 源位置的任务失败并显示 `HeadObject` 或 `GetObjectTagging` 错误
<a name="troubleshoot-getobjecttagging"></a>

**与 `HeadObject` 或 `GetObjectTagging` 相关的错误**  
如果您要 IDs 从 S3 存储桶传输具有特定版本的对象，则可能会看到与`HeadObject`或相关的错误`GetObjectTagging`。例如，以下是与 `GetObjectTagging` 相关的错误：

```
[WARN] Failed to read metadata for file /picture1.png (versionId: 111111): S3 Get Object Tagging Failed
[ERROR] S3 Exception: op=GetObjectTagging photos/picture1.png, code=403, type=15, exception=AccessDenied, 
msg=Access Denied req-hdrs: content-type=application/xml, x-amz-api-version=2006-03-01 rsp-hdrs: content-type=application/xml, 
date=Wed, 07 Feb 2024 20:16:14 GMT, server=AmazonS3, transfer-encoding=chunked, 
x-amz-id-2=IOWQ4fDEXAMPLEQM+ey7N9WgVhSnQ6JEXAMPLEZb7hSQDASK+Jd1vEXAMPLEa3Km, x-amz-request-id=79104EXAMPLEB723
```

如果您看到其中任何一个错误，请验证用于访问您的 DataSync S3 源位置的 IAM 角色是否具有以下权限：
+ `s3:GetObjectVersion`
+ `s3:GetObjectVersionTagging`

如果您需要更新角色，使其具有这些权限，请参阅 [为创建 IAM 角色 DataSync 以访问您的 Amazon S3 位置](create-s3-location.md#create-role-manually)。