问题排查 - FSx for Lustre
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

问题排查

使用以下信息可帮助您解决在使用 Amazon FSx for Lustre 时可能遇到的问题。

文件系统装载立即失败

文件系统挂载命令立即失败。下面的代码显示了一个示例。

mount.lustre: mount fs-0123456789abcdef0.fsx.us-east-1.aws@tcp:/fsx at /lustre failed: No such file or directory Is the MGS specification correct? Is the filesystem name correct?

如果您没有使用正确的,则会出现此错误。mountname使用安装持久性或暂存 2 文件系统时的值mount命令。你可以获取mountname来自响应的值describe-file-systems Amazon CLI命令或DescribeFileSystemsAPI 操作。

文件系统挂起然后失败并出现超时错误

文件系统挂载命令挂起一两分钟,然后失败,并显示超时错误。

下面的代码显示了一个示例。

sudo mount -t lustre file_system_dns_name@tcp:/mountname /mnt/fsx [2+ minute wait here] Connection timed out

出现此错误的原因可能是 Amazon EC2 实例或文件系统的安全组配置不正确。

要采取的操作

确保文件系统的安全组具有中指定的入站规则Amazon VPC 安全组.

自动挂载失败,实例无响应

在某些情况下,文件系统的自动装载可能会失败,并且您的 Amazon EC2 实例可能会停止响应。

如果_netdev没有宣布选项。如果_netdev丢失,您的 Amazon EC2 实例可能会停止响应。出现该结果是因为,需要在计算实例启动其网络后初始化网络文件系统。

要采取的操作

如果出现此问题,请与Amazon Web Services Support.

系统启动期间文件系统装载失败

系统启动期间文件系统装载失败。使用自动安装/etc/fstab. 如果未装载文件系统,系统日志中会出现实例启动时间范围的以下错误。

LNetError: 3135:0:(lib-socket.c:583:lnet_sock_listen()) Can't create socket: port 988 already in use LNetError: 122-1: Can't start acceptor on port 988: port already in use

当端口 988 不可用时,可能会出现此错误。当实例配置为挂载 NFS 文件系统时,NFS 挂载可能会将其客户端端口绑定到端口 988

要采取的操作

你可以通过调整 NFS 客户端来解决这个问题noresvportnoauto在可能的情况下挂载选项

使用 DNS 名称挂载文件系统失败

错误配置的域名服务 (DNS) 名可能会导致文件系统装载失败,如以下情况所示。

方案 1: 使用域名服务 (DNS) 名称的文件系统挂载失败。下面的代码显示了一个示例。

sudo mount -t lustre file_system_dns_name@tcp:/mountname /mnt/fsx mount.lustre: Can't parse NID 'file_system_dns_name@tcp:/mountname'

要采取的操作

检查您的虚拟私有云 (VPC) 配置。如果使用自定义 VPC,请确保已启用 DNS 设置。有关更多信息,请参阅 Amazon VPC 用户指南中的在您的 VPC 中使用 DNS

在中指定 DNS 名称mount命令,请执行以下操作:

  • 确保 Amazon EC2 实例与用于 Lustre 文件系统的 Amazon FSx 位于同一 VPC 中。

  • 在配置为使用由 Amazon 提供的 DNS 服务器的 VPC 内 Connect 您的 Amazon EC2 实例。有关更多信息,请参阅 Amazon VPC 用户指南中的 DHCP 选项集

  • 确保连接的 Amazon EC2 实例的 Amazon VPC 已启用 DNS 主机名。有关更多信息,请参阅 。更新您的 VPC 的 DNS 支持中的Amazon VPC User Guide.

方案 2: 使用域名服务 (DNS) 名称的文件系统挂载失败。下面的代码显示了一个示例。

mount -t lustre file_system_dns_name@tcp:/mountname /mnt/fsx mount.lustre: mount file_system_dns_name@tcp:/mountname at /mnt/fsx failed: Input/output error Is the MGS running?

要采取的操作

确保客户端的 VPC 安全组应用了正确的出站流量规则。此建议适用,尤其是如果您没有使用默认安全组,或者您修改了默认安全组时。有关更多信息,请参阅 Amazon VPC 安全组

你无法访问你的文件系统

无法访问文件系统的潜在原因有很多,每个原因都有自己的解决方案,如下所示。

已删除附加到文件系统 elastic network interface 的弹性 IP 地址

Amazon FSx 不支持从公共互联网访问文件系统。Amazon FSx 会自动分离附加到文件系统的 elastic network interface 的任何弹性 IP 地址,该地址是可从 Internet 访问的公有 IP 地址。

修改或删除了文件系统 elastic network interface

您不得修改或删除文件系统的 elastic network interface。修改或删除网络接口可能会导致永久丢失您的 VPC 和文件系统之间的连接。创建一个新的文件系统,不要修改或删除 FSx elastic network interface。有关更多信息,请参阅 使用 Amazon VPC 进行文件系统访问控制

在创建数据存储库关联时,无法验证对 S3 存储桶的访问权限

从 Amazon FSx 控制台或使用create-data-repository-associationCLI 命令 (创建数据库协会是等效的 API 操作)失败,并显示如下错误消息。

Amazon FSx is unable to validate access to the S3 bucket. Ensure the IAM role or user you are using has s3:Get*, s3:List* and s3:PutObject permissions to the S3 bucket prefix.
注意

使用 Amazon FSx 控制台或创建链接到数据存储库(S3 存储桶或前缀)的 Scratch 1、Scratch 2 或持久 1 文件系统时,也可能会出现上述错误create-file-systemCLI 命令 (CreateFileSystem是等效的 API 操作)。

要采取的操作

如果 FSx for Lustre 文件系统与 S3 存储桶位于同一账户中,则此错误意味着您用于创建请求的 IAM 角色没有访问 S3 存储桶的必要权限。确保 IAM 角色具有在错误消息中列出的权限。这些权限支持 Amazon FSx for Lustre 服务相关角色,该角色用于代表您访问指定的 Amazon S3 存储桶。

如果 fSx for Lustre 文件系统与 S3 存储桶(跨账户案例)位于不同的账户中,除了确保您使用的 IAM 角色具有所需的权限之外,S3 存储桶策略还应配置为允许来自创建 FSx for Lustre 的账户的访问权限。下面是示例存储桶策略,

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::file_system_account_ID:root" }, "Action": "s3:*", "Resource": [ "arn:aws:s3:::bucket_name", "arn:aws:s3:::bucket_name/*" ] } ] }

有关 S3 跨账户存储桶权限的更多信息,请参阅示例 2:授予跨账户存储桶权限的存储桶中的Amazon Simple Storage Service 用户指南.

无法创建链接到 S3 存储桶的文件系统

如果创建链接到 S3 存储桶的新文件系统失败,并显示类似于以下内容的错误消息。

User: arn:aws:iam::012345678901:user/username is not authorized to perform: iam:PutRolePolicy on resource: resource ARN

如果您尝试在没有必要的 IAM 权限的情况下创建链接到 Amazon S3 存储桶的文件系统,则可能会发生此错误。所需的 IAM 权限支持 Amazon FSx for Lustre 服务相关角色,该角色用于代表您访问指定的 Amazon S3 存储桶。

要采取的操作

确保您的 IAM 实体(用户、组或角色)具有创建文件系统的适当权限。这样做包括添加支持 Amazon FSx for Lustre 服务相关角色的权限策略。有关更多信息,请参阅 添加在 Amazon S3 中使用数据存储库的权限

有关服务相关角色的更多信息,请参阅 对 Amazon FSx for Lustre 使用服务相关角色

排查错误配置的链接 S3 存储桶

在某些情况下,Lustre 文件系统的链接 S3 存储桶的 FSx 可能配置错误的数据存储库生命周期状态。

可能的原因

如果 Amazon FSx 没有必要的,则会出现此错误。Amazon Identity and Access Management访问链接数据存储库所需的 (IAM) 权限。所需的 IAM 权限支持 Amazon FSx for Lustre 服务相关角色,该角色用于代表您访问指定的 Amazon S3 存储桶。

要采取的操作

  1. 确保您的 IAM 实体(用户、组或角色)具有创建文件系统的适当权限。这样做包括添加支持 Amazon FSx for Lustre 服务相关角色的权限策略。有关更多信息,请参阅 添加在 Amazon S3 中使用数据存储库的权限

  2. 使用 Amazon FSx CLI 或 API 刷新文件系统AutoImportPolicy使用update-file-systemCLI 命令 (更新文件系统是等效的 API 操作),如下所示。

    aws fsx update-file-system \ --file-system-id fs-0123456789abcdef0 \ --lustre-configuration AutoImportPolicy=the_existing_AutoImportPolicy

有关服务相关角色的更多信息,请参阅 对 Amazon FSx for Lustre 使用服务相关角色

可能的原因

如果链接的 Amazon S3 数据存储库具有与 Amazon FSx 事件通知配置重叠的事件通知配置的现有事件通知配置(s3:ObjectCreated:*s3:ObjectRemoved:*)。

如果链接 S3 存储桶上的 Amazon FSx 事件通知配置被删除或修改,也可能发生这种情况。

要采取的操作

  1. 删除链接 S3 存储桶上使用 FSx 事件配置使用的其中一种或两种事件类型的任何现有事件通知,s3:ObjectCreated:*s3:ObjectRemoved:*.

  2. 请确保您链接的 S3 存储桶中有一个带有名称的 S3 事件通知配置FSx,事件类型s3:ObjectCreated:*s3:ObjectRemoved:*,然后使用发送到 SNS 主题ARN:topic_arn_returned_in_API_response.

  3. 使用 Amazon FSx CLI 或 API 在 S3 存储桶上重新应用 FSx 事件通知配置,以刷新文件系统AutoImportPolicy. 使用update-file-systemCLI 命令 (更新文件系统是等效的 API 操作),如下所示。

    aws fsx update-file-system \ --file-system-id fs-0123456789abcdef0 \ --lustre-configuration AutoImportPolicy=the_existing_AutoImportPolicy

排查存储问题

在某些情况下,您的文件系统可能会遇到存储问题。你可以通过使用lfs命令,例如lfs migrate命令。

由于存储目标没有空间而导致写入错误

您可以使用lfs df -h命令,如中所述文件系统存储布局. 这些区域有:filesystem_summary字段报告文件系统存储的总使用情况。

如果文件系统磁盘使用率为 100%,请考虑增加文件系统的存储容量。有关更多信息,请参阅 管理存储和吞吐量容量

如果文件系统存储使用率不是 100%,但仍然出现写错误,那么正在写入的文件可能会在已满的 OST 上条带化。

要采取的操作

如果你的许多 OST 已满,请增加文件系统的存储容量。通过按照OST 上的存储不平衡部分。

OST 上的存储不平衡

Amazon FSx for Lustre 在 OST 之间均匀分配新的文件条带。但是,由于 I/O 模式或文件存储布局,您的文件系统可能仍会失衡。因此,一些存储目标可能已满,而另一些存储目标仍然相对空。

要采取的操作

  1. 启动相对较大的客户端实例(例如 Amazon EC2c5n.4xlarge要挂载到文件系统的实例类型)。

  2. 在运行之前migrate命令,首先在每个客户端实例上运行以下命令以加快该过程:

    sudo lctl set_param 'mdc.*.max_rpcs_in_flight=60' sudo lctl set_param 'mdc.*.max_mod_rpcs_in_flight=59'
  3. 启动屏幕会话并运行以下脚本。确保更改以下变量:

    • 替换中的值OSTS用你的 OST 的价值观。

    • 为提供一个整数值nproc以设置要 parallel 行运行的 max-procs 进程的数量。例如,Amazon EC2c5n.4xlarge实例类型有 16 个 vCPUs,因此您可以使用16(或值 < 16)nproc.

    • 在中提供挂载目录路径mnt_dir_path.

    # find all OSTs with usage above a certain threshold; for example, greater than or equal to 85% full for OST in $(lfs df -h |egrep '( 8[5-9]| 9[0-9]|100)%'|cut -d' ' -f1); do echo ${OST};done|tr '\012' ',' # customer can also just pass OST values directly to OSTS variable OSTS='dzfevbmv-OST0000_UUID,dzfevbmv-OST0002_UUID,dzfevbmv-OST0004_UUID,dzfevbmv-OST0005_UUID,dzfevbmv-OST0006_UUID,dzfevbmv-OST0008_UUID' nproc=<Run up to max-procs processes if client is c5n.4xlarge with 16 vcpu, this value can be set to 16> mnt_dir_path=<mount dir, e.g. '/my_mnt'> lfs find ${mnt_dir_path} --ost ${OSTS}| xargs -P ${nproc} -n2 lfs migrate -E 1g -c 1 -E -1 -c5

备注

  • 如果您注意到对文件系统的读取性能有影响,则可以通过使用ctrl-c或 kill -9,并减少线程数量(nprocvalue) 回到较低的数字(例如 8),然后恢复迁移文件。

  • 这些区域有:lfs migrate命令将在客户端工作负载也打开的文件上失败。它会抛出错误并移动到下一个文件;因此,如果有许多文件被访问,脚本将无法迁移任何文件,并且随着迁移进度非常缓慢而反映出来。

  • 您可以使用下列方法之一监控 OST 使用情况:

    • 在客户端挂载时,运行以下命令来监控 OST 使用情况,并查找使用率超过 85% 的 OST:

      lfs df -h |egrep '( 8[5-9]| 9[1-9]|100)%'
    • 查看 Amazon CloudWatch 指标,OST FreeDataStorageCapacity,检查Minimum. 如果你的脚本发现的 OST 已满 85% 以上,那么当指标接近 15% 时,请使用ctrl-c要么kill -9停止迁移。

  • 您还可以考虑更改文件系统或目录的条带配置,以便新文件在多个存储目标之间进行条带化。有关更多信息,请参阅中的在文件系统中对数据进行条带化.