对AWSDataSync传输问题进行故障排除 - AWS DataSync

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

对AWSDataSync传输问题进行故障排除

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

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

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

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

创建 NFS 或 SMB 位置时,配置DataSync要使用的协议版本。有关更多信息配置来自 NFS 文件服务器的AWS DataSync传输,请参配置来自 SMB 文件服务器的AWS DataSync传输阅。

要采取的行动 (DataSyncAPI)

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

以下示例AWS 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"

以下示例AWS CLI命令创建使用 SMB 版本 3DataSync 装载的 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)中删除任务的网络接口,则会发生问题问题。如果您的任务已安排或已排队,则如果任务缺少传输数据所需的网络接口,则该任务将失败。

要采取的操作

问题问题问题问题问题问题问题问题问题问题问题问题问题问题问题问题问题问题问题问题问题问题问题

  • 手动重启任务。执行此操作时,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 文件服务器的AWS DataSync传输

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

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

如果您执行了这些操作,但代理仍然无法装载 NFS 服务器并导出,请向Support 人员打开AWS支持频道。有关如何打开支持渠道的信息,请参阅通过以下方式向您的代理人寻求帮助AWS 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 (脱机),则代理未连接。有关如何测试网络连接的信息,请参阅测试您的代理与的连接AWS

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

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

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

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

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

要采取的操作

你不必做任何事情。继续等待 “准备中” 状态更改为 “正在”。如果状态仍未更改,请联系AWS 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>

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

验证任务需要多长时间?

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

要采取的操作

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

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

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

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

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

有关使用 Amazon S3 进行跨账户转账的完整说明,请参阅以下教程:

从 Google 云存储分区传输时我的任务失败

由于使用 Amazon S3 APIDataSync 与 Google Cloud Storage 通信,因此存在一个限制,如果您尝试复制对象标签,可能会导致DataSync任务失败。以下与该问题相关的消息出现在您的CloudWatch日志中:

[警告] 无法读取文件/y our-bucket /your- object的元数据:S3 获取对象标记失败:在不标记的情况下继续操作

为防止出现这种情况,请在配置任务设置时取消选择 “复制对象标签” 选项。

我的任务开始和结束时间与日志不符

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

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

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

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

  • 来自DataSync代理的网络流量

  • 亚马逊EventBridge活动

Error: SyncTaskDeletedByUser

在自动执行某些DataSync工作流程时,您可能会意外地看到此错误。例如,也许你有一个脚本在任务执行完成或进入队列之前删除你的任务。

要修复此问题,请重新配置您的自动化,以使这些类型的操作不会重叠。

Error: NoMem

您尝试传输的数据集可能太大DataSync。如果您看到此错误,请联系 AWS Support 中心

Error: FsS3UnableToConnectToEndpoint

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

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

Error: FsS3HeadBucketFailed

DataSync无法访问您要传输到或传出的 S3 存储桶。使用 Amazon S3 HeadBucket操作检查是否DataSync有权访问存储桶。