排查 DataSync 位置的相关问题 - AWS DataSync

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

排查 DataSync 位置的相关问题

以下信息可帮助您解决与 AWS DataSync 位置相关的问题。其中一些问题可能包括:

  • NFS 位置的权限和挂载错误

  • 文件所有权问题

  • 访问使用 Kerberos 身份验证的 SMB 位置时出现问题

  • 对象存储的权限与访问问题,例如 Amazon S3 和 Microsoft Azure Blob 位置

我的任务失败,出现 NFS 权限被拒绝错误

如果用 root_squashall_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 支持 中心

我的任务失败,出现 NFS 挂载错误

在运行涉及 NFS 文件服务器位置的 DataSync 任务时,可能会出现以下错误:

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

要采取的操作

在错误得到解决之前,请执行以下操作:

  1. 确保在 DataSync 位置中指定的 NFS 文件服务器和导出有效。如果无效,请删除您的位置和任务,然后创建使用有效 NFS 文件服务器和导出的新位置和任务。有关更多信息,请参阅 使用 DataSync 控制台

  2. 检查代理和 NFS 文件服务器之间的防火墙配置。有关更多信息,请参阅 本地、自我管理和其他云存储的网络要求

  3. 确保代理可以访问 NFS 文件服务器并挂载导出。有关更多信息,请参阅 提供 DataSync 对 NFS 文件服务器的访问权限

  4. 如果您仍然看到错误,请打开与 支持 的支持通道。有关更多信息,请参阅 我不知道我的代理出了什么问题。有人能帮我吗?

我的任务失败,出现 Amazon EFS 挂载错误

在运行涉及 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 位置

NFS 传输未保留文件所有权

传输后,您可能会发现 DataSync 目标位置中的文件与源位置中的相同文件具有不同的用户 ID(UID)或组 ID(GID)。例如,目标位置中文件的 UID 可能是 6553499nobody

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

要采取的操作

您有几种方法可以解决此问题:

  • 为使用 NFS 版本 3(而不是版本 4)的文件系统创建一个新位置。

  • 在文件系统上禁用 NFS 版本 4 ID 映射。

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

我的任务无法访问使用 Kerberos 的 SMB 位置

使用 Kerberos 身份验证的 SMB 位置出现的 DataSync 错误通常与相应位置和 Kerberos 配置不匹配有关。也可能存在网络问题。

无法访问位置

以下错误表示 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"

请验证以下内容

  • 为 DataSync 提供的 Kerberos 配置文件 (krb5.conf) 包含有关 Kerberos 领域的正确信息。有关示例 krb5.conf 文件,请参阅 Kerberos 身份验证的先决条件

  • Kerberos 密钥分配中心(KDC)的服务器端口已打开。KDC 端口通常为 TCP 端口 88。

  • 网络上的 DNS 配置。

我的任务因输入/输出错误而失败

如果您的存储系统未能响应 DataSync 代理的 I/O 请求,则可能会收到输入/输出错误消息。常见原因包括服务器磁盘故障、防火墙配置更改或网络路由器故障。

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

采取的操作(NFS)

首先检查 NFS 文件服务器的日志和指标,以确定问题是否始于 NFS 服务器。如果是,请解决该问题。

接下来,检查网络配置是否尚未更改。要检查 NFS 文件服务器是否已正确配置并且 DataSync 可以访问,请执行以下操作:

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

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

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

采取的操作(HDFS)

在解决错误之前,请执行以下操作:

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

    在大多数集群中,您可以在以下配置文件中找到集群使用的端口号:

    • 要查找 NameNode 端口,请在 fs.default 或者 fs.default.name 属性下的文件 core-site.xml 中查找(取决于 Hadoop 发行版本)。

    • 要找到 DataNode 端口,请在 dfs.datanode.address 属性下的文件 hdfs-site.xml 中查找。

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

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

错误:FsS3UnableToConnectToEndpoint

DataSync 无法连接到您的 Amazon S3 位置。这可能意味着无法访问该位置的 S3 存储桶,或者该位置的配置不正确。

在解决问题之前,请执行以下操作:

错误:FsS3HeadBucketFailed

DataSync 无法访问您正在传入或传出的 S3 存储桶。使用 Amazon S3 HeadBucket 操作检查 DataSync 是否有权访问存储桶。如果您需要调整权限,请参阅 提供 DataSync 对 S3 存储桶的访问权限

任务因 Unable to list Azure Blobs on the volume root 错误而失败

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

要采取的操作

尝试以下操作并再次运行任务,直到问题得到解决:

  • 确保您的 SAS 令牌具有访问您的 Microsoft Azure Blob Storage 的相应权限。

  • 如果您在 Azure 中运行 DataSync 代理,请将您的存储账户配置为允许从代理所在的虚拟网络进行访问。

  • 如果您在 Amazon EC2 上运行代理,请将 Azure 存储防火墙配置为允许从代理的公有 IP 地址进行访问。

有关如何配置 Azure 存储账户网络的信息,请参阅Azure Blob Storage 文档

错误:FsAzureBlobVolRootListBlobsFailed

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

要解决问题,请使用具有列表权限的令牌更新您的位置,然后尝试重新运行任务。

错误:SrcLocHitAccess

DataSync 无法访问您的源位置。检查 DataSync 是否有访问位置的权限,然后尝试重新运行任务。

错误:SyncTaskErrorLocationNotAdded

DataSync 无法访问您的位置。检查 DataSync 是否有访问位置的权限,然后尝试重新运行任务。

错误:S3 location creation failed with (InvalidRequestException) when calling the CreateLocationS3 operation

此错误可能与 IAM 权限、Amazon S3 存储桶策略、AWS KMS 权限或其他权限问题相关。如果遇到此错误,请使用以下信息进行故障排除:

S3 源位置的任务失败并显示 HeadObjectGetObjectTagging 错误

HeadObjectGetObjectTagging 相关的错误

如果要从 S3 存储桶中传输具有特定版本 ID 的对象,可能会看到与 HeadObjectGetObjectTagging 相关的错误。例如,以下是与 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 位置