

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

# Amazon EBS 卷的 NVMe I/O 操作超时
<a name="timeout-nvme-ebs-volumes"></a>

大多数操作系统为提交到 NVMe 设备的 I/O 操作指定一个超时。

**Linux 实例**  
在 Linux 上，挂载到基于 Nitro 系统的实例的 EBS 卷使用操作系统提供的默认 NVMe 驱动程序。大多数操作系统为提交到 NVMe 设备的 I/O 操作指定一个超时。默认超时为 30 秒，可以使用 `nvme_core.io_timeout` 引导参数更改该超时。对于 4.6 版之前的大多数 Linux 内核版本，此参数为 `nvme.io_timeout`。

如果 I/O 延迟超过了此超时参数的值，则 Linux NVMe 驱动程序会使 I/O 失败，并将错误返回文件系统或应用程序。根据 I/O 操作，您的文件系统或应用程序可以重试错误。在某些情况下，您的文件系统可能会通过只读方式重新挂载。

为了获得与附加到 Xen 实例的 EBS 卷类似的体验，我们建议将 `nvme_core.io_timeout` 设置为可能的最大值。对于当前内核，最大值为 4294967295，而对于较早的内核，最大值为 255。根据 Linux 版本的不同，超时时间可能已设置为支持的最大值。例如，对于 Amazon Linux AMI 2017.09.01 以及更高的版本，超时时间默认设置为 4294967295。

您可以通过将高于建议最大值的值写入 `/sys/module/nvme_core/parameters/io_timeout` 并在尝试保存文件时检查数值结果超出范围错误，以此来验证您的 Linux 发行版的最大值。

**Windows 实例**  
在 Windows 上，默认超时为 60 秒，最大超时为 255 秒。您可以使用 [SCSI 微端口驱动程序的注册表项](https://learn.microsoft.com/en-us/previous-versions/windows/drivers/storage/registry-entries-for-scsi-miniport-drivers)中所述的步骤修改 `TimeoutValue` 磁盘类注册表设置。