对Amazon DataSync 位置和任务问题进行故障排除 - Amazon DataSync
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

对Amazon DataSync 位置和任务问题进行故障排除

以下主题描述了Amazon DataSync 地点和任务的常见问题以及如何解决这些问题。

DataSync 如何配置为使用特定的 NFS 或 SMB 版本来挂载我的文件共享?

对于支持网络文件系统 (NFS) 或服务器消息块 (SMB) 的位置, DataSync 默认情况下为您选择协议版本。您也可以使用 DataSync 控制台或 API 自己指定版本。

要采取的操作(DataSync 控制台)

创建 NFS 或 SMB 位置时,配置 DataSync 要使用的协议版本。有关更多信息,请参阅请参阅为创建 NFS 位置Amazon DataSync为创建 SMB 位置Amazon DataSync

要采取的行动 (DataSync API)

创建或更新 NFS 或 SMB 位置时,请指定Version参数。例如,请参阅 CreateLocationNfsCreateLocationSmb

以下示例Amazon CLI命令创建了一个使用 NFS 版本 4.0 进行 DataSync 装载的 NFS 位置。

$ aws datasync create-location-nfs --server-hostname your-server-address \ --on-prem-config AgentArns=your-agent-arns \ --subdirectory nfs-export-path \ --mount-options Version="NFS4_0"

以下示例Amazon CLI命令创建使用 SMB 版本 3 DataSync 装载的 SMB 位置。

$ aws datasync create-location-smb --server-hostname your-server-address \ --on-prem-config AgentArns=your-agent-arns \ --subdirectory smb-export-path \ --mount-options Version="SMB3"

错误: SyncOption 值无效。选项: TransferMode,PreserveDeletedFiles,值:全部,删除。

当您创建或编辑 DataSync 任务时,选择 “传输所有数据” 选项并取消选择 “保留已删除的文件” 选项时,就会出现此错误。当你传输所有数据时, DataSync 不会扫描你的目标位置,也不知道要删除什么。

我的任务一直因EniNotFound错误而失败

如果您删除虚拟私有云 (VPC irtual Private Cloud) 中的一个任务网络接口,就会发生此错误。如果您的任务已安排或已排队,则如果任务缺少传输数据所需的网络接口,则该任务将失败。

要采取的操作

您可通过以下几种方式解决此问题:

  • 手动重启任务。执行此操作时, DataSync 将创建运行任务所需的任何缺失的网络接口。

  • 如果您需要清理 VPC 中的资源,请确保不要删除与仍在使用的 DataSync 任务相关的网络接口。

    要查看分配给任务的网络接口,请执行以下操作之一:

    • 使用该DescribeTask操作。您可以在SourceNetworkInterfaceArnsDestinationNetworkInterfaceArns响应元素中查看网络接口。

    • 在 Amazon EC2 控制台中,搜索您的任务 ID(例如task-f012345678abcdef0)以查找其网络接口。

  • 考虑不要自动运行任务。这可能包括禁用任务排队或调度(通过 DataSync 或自定义自动化)。

我的任务因DataSync 当前不支持服务器端 NFSv4 ID 映射错误而失败

如果您的传输中涉及的文件系统使用 NFS 版本 4 ID 映射( DataSync 不支持此功能),则可能会出现此错误。

要采取的操作

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

  • 为使用 NFS 版本 3 的文件系统创建新 DataSync 位置。

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

重试传输。任何一个选项都应该解决问题。

我的任务状态为不可用,表示存在装载错误

DataSync 如果您的代理无法装载 NFS 位置,则表示您的任务不可用。

要采取的操作

首先,确保您指定的 NFS 服务器和导出均有效。如果它们无效,请删除任务,使用正确的 NFS 服务器创建新的任务,然后导出。有关更多信息,请参阅为创建 NFS 位置Amazon DataSync

如果 NFS 服务器和导出均有效,则通常表明出现以下两种问题之一。防火墙禁止代理挂载 NFS 服务器,或者 NFS 服务器未配置为允许代理挂载它。

确保代理和 NFS 服务器之间没有防火墙。然后,确保 NFS 服务器配置为允许代理挂载任务中指定的导出端。有关网络和防火墙要求的信息,请参阅Amazon DataSync网络要求

如果您执行了这些操作,但代理仍然无法装载 NFS 服务器并导出,请向Support 人员打开Amazon支持频道。有关如何打开支持渠道的信息,请参阅通过以下方式向您的代理人寻求帮助Amazon Web Services Support

我的任务失败,出现 “无法分配内存” 错误

当你的 DataSync 任务因出现 “无法分配内存” 错误而失败时,它可能意味着几件不同的事情。

要采取的操作

请尝试以下操作,直到您不再看到问题为止:

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

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

如果错误涉及 NFS 服务器或 Hadoop 分布式文件系统 (HDFS) 集群,请使用以下步骤解决错误。

要采取的行动 (NFS)

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

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

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

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

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

要采取的操作 (HDFS)

确保您的 HDFS 集群允许代理与集群 NameNode 和 DataNode 端口通信。在大多数集群中,您可以在以下配置文件中找到集群使用的端口号。

  1. 要找到端 NameNode 口,请查看fs.defaultfs.default.name属性下的core-site.xml文件(取决于 Hadoop 发行版)。

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

我的任务执行处于启动状态,但似乎什么也没发生

当无法指示指定的源代理开始任务时,您的任务执行 DataSync 可能会停留在启动状态。出现该问题通常是因为,代理已关闭电源或断开网络连接。

要采取的操作

确保代理已连接,并且状态为 ONLINE (联机)。如果状态为 OFFLINE (脱机),则代理未连接。有关如何测试网络连接的信息,请参阅测试您的代理与 DataSync 端点的连接

接下来,确保代理的电源已开启。否则,请打开同步代理电源。

如果代理已开机且任务仍处于启动状态,则代理与之间的网络连接问题 DataSync 是最有可能的问题。检查网络和防火墙设置,以确保代理可以连接到 DataSync。

如果您执行了这些操作但问题仍未解决,请通过以下方式打开支持频道Amazon Web Services Support。有关如何打开支持渠道的信息,请参阅通过以下方式向您的代理人寻求帮助Amazon Web Services Support

我的任务执行处于准备状态很长时间了

处于 “准备中” 状态 DataSync 的时间取决于源文件系统和目标文件系统中的文件数量以及这些文件系统的性能。任务启动时, DataSync 执行递归目录列表以发现源和目标文件系统中的所有文件和文件元数据。这些列表用于查找差异和确定要复制的内容。此过程通常需要几分钟到几小时不等。有关更多信息,请参阅开始你的Amazon DataSync任务

要采取的操作

你不必做任何事情。继续等待 “准备中” 状态更改为 “正在”。如果状态仍未更改,请联系Amazon Web Services Support。

我的任务因权限被拒绝错误而失败

如果配置 NFS 服务器并启用 root_squashall_squash,并且您的文件没有所有读取访问权限,则可能会显示“permissions denied (权限被拒绝)”错误消息。

要采取的操作

要修复此问题,您可以使用 no_root_squash 配置 NFS 导出。或者,您可以确保要传输的所有文件的权限允许所有用户具有读取权限。通过执行上述任一操作,将允许代理读取这些文件。要使代理能够访问目录,您还必须启用全部执行访问权限。

要确保可以挂载目录,首先连接到与代理具有相同网络配置的任何计算机。然后运行以下 CLI 命令。

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

如果您执行了这些操作但问题仍未解决,请联系Amazon Web Services Support。

验证我运行的任务需要多长时间?

处于 “验证” 状态 DataSync 的时间取决于许多因素。其中包括源和目标文件系统中的文件数、所有文件的总大小以及这些文件系统的性能。默认情况下,将在选项设置中启用 Verification mode (验证模式)。 DataSync 执行的验证包括对所有文件内容进行 SHA256 校验和以及对所有文件元数据的精确比较。

要采取的操作

你不必做任何事情。继续等待 “正在验证” 状态完成。如果状态仍未更改,请联系Amazon Web Services Support。

转移到另一个 S3 存储桶时,我的任务失败Amazon Web Services 账户

与同一资源之间的 DataSync 传输不同Amazon Web Services 账户,将数据复制到不同资源的 S3 存储桶Amazon Web Services 账户需要一些额外的步骤。

  • 如果您的 DataSync 任务因与 S3 存储桶权限相关的错误而失败:创建任务时,请确保Amazon Web Services Management Console使用您在目标 S3 存储桶策略中指定的相同 IAM 角色登录。(注意:这不是授予写入S3 存储桶的 DataSync 权限的 IAM 角色。

  • 如果您还将数据复制到另一个存储桶中Amazon Web Services 区域并出现 S3 终端节点连接错误:在目标 S3 存储桶所在的区域中创建 DataSync 任务。

我的任务执行时间与日志不符

您在 DataSync 控制台中看到的任务执行开始和结束时间可能因您在与传输相关的其他地方看到的时间戳而有所不同。这是因为控制台没有考虑任务执行在启动或排队状态下所花费的时间。

例如,您的亚马逊 CloudWatch 日志可能表明您的任务执行结束时间晚于 DataSync 控制台中显示的时间。您可能会注意到以下领域存在类似的差异:

  • 传输中涉及的文件系统或对象存储系统的日志

  • DataSync 写入的 Amazon S3 对象的上次修改日期

  • 来自 DataSync 代理的网络流量

  • 亚马逊 EventBridge 活动