AWS announces preview of AWS Interconnect - multicloud
AWS announces AWS Interconnect – multicloud (preview), providing simple, resilient, high-speed private connections to other cloud service providers. AWS Interconnect - multicloud is easy to configure and provides high-speed, resilient connectivity with dedicated bandwidth, enabling customers to interconnect AWS networking services such as AWS Transit Gateway, AWS Cloud WAN, and Amazon VPC to other cloud service providers with ease.
如何对 EC2 Linux 实例的状态检查失败问题进行故障排除?
我的 Amazon Elastic Compute Cloud (Amazon EC2) Linux 实例无法访问,并且其状态检查失败。
简短描述
Amazon EC2 使用三种状态检查来监控 EC2 实例的运行状况。
系统状态检查
系统状态检查会检测实例底层硬件的问题。如果由于网络、硬件或软件问题,底层硬件无响应或无法访问,则系统状态检查便会失败。
实例状态检查
当您无法访问实例时,实例状态检查将失败。实例状态检查可能由于以下原因而失败:
- 操作系统 (OS) 无法启动
- Amazon Elastic Block Store (Amazon EBS) 卷无法正确挂载
- CPU 和内存已耗尽
- 内核崩溃
- 网络故障
- 根 EBS 卷参数节流
附加的 EBS 状态检查
附加的 EBS 状态检查用于监控附加到实例的 EBS 卷是否可以访问,以及是否可以完成 I/O 操作。有关详细信息,请参阅附加的 EBS 状态检查。
解决方法
要查看是实例状态检查失败还是系统状态检查失败,请查看实例的状态检查指标。
如果系统状态检查失败,请参阅为什么我的 EC2 Linux 实例未能通过系统状态检查?
如果实例状态检查失败,请检查实例的系统日志以查看失败的原因。然后,选择以下解决方法选项之一来解决问题。
**重要事项:**以下某些解决方法要求您先停止实例,然后再启动实例。停止实例时,实例存储卷中的数据会丢失。如果您的实例没有 EBS 支持的卷,请在停止实例之前备份数据。此外,在停止并启动实例后,实例的公共 IPv4 地址可能会更改。要保留相同的公共 IPv4 地址,请使用弹性 IP 地址。有关详细信息,请参阅停止和启动 Amazon EC2 实例。
操作系统无法启动
如果系统日志包含启动错误,请参阅如何对因操作系统问题而未能通过实例状态检查的 EC2 Linux 实例进行故障排除?
EBS 卷无法正确挂载
挂载点故障可能会导致实例状态检查失败。
挂载点故障输出示例:
[FAILED] Failed to mount / See 'systemctl status mnt-nvme0n1p1.mount' for details. [DEPEND] Dependency failed for Local File Systems.
有关这些错误的详细信息,请参阅为什么在尝试启动 EC2 Linux 实例时,它会进入紧急模式?此外,请参阅如何对因操作系统问题而未能通过实例状态检查的 EC2 Linux 实例进行故障排除?
当您将实例类型从 Xen 更改为基于 Nitro 的实例时,卷挂载可能会失败。挂载失败是因为 EBS 卷在基于 Nitro 的实例上暴露为 NVMe 块设备。例如,设备名称为 /dev/nvme0n1 和 /dev/nvme1n1。您在块设备映射中指定的设备名称将被重命名为 NVMe 设备名称。例如,/dev/nvme[0-26]n1。
**注意:**块设备驱动程序分配 NVMe 设备名称的顺序可能与您在块设备映射中指定的顺序不同。为避免在基于 Nitro 的实例上挂载失败,最佳做法是使用标签或 UUID 作为设备名称。有关详细信息,请参阅 Make an Amazon EBS volume available for use(使 Amazon EBS 卷可供使用)。
CPU 和内存已耗尽
CPU 利用率高
如果 CPUUtilization 指标等于或接近 100%,则表明实例没有足够的计算容量来运行内核。
对于 T2 或 T3 实例,请检查 Amazon CloudWatch CPU 积分指标,以查看 CPU 积分是否等于或接近零。如果 CPU 积分为零,则 CPUUtilization 指标将显示实例的基准性能处于饱和稳定状态。例如,基准性能可能为 20% 或 40%。如果 CPU 利用率等于或接近 100%,或者 T2 或 T3 实例已达到饱和稳定状态,则状态检查会因资源过度使用而显示为失败。
要解决此问题,请参阅如何对因资源过度使用而未通过状态检查的 EC2 Linux 实例进行故障排除?
块设备错误、软件错误或内核崩溃会导致 CPU 使用率异常激增。如果 CPU 利用率为 100%,请检查系统日志中是否存在块设备或内存问题错误,或其他异常系统错误。然后,重启或者停止并启动实例。
内存不足
内存压力过高会导致实例状态检查失败。在以下示例日志摘录中,操作系统内存不足,OOM-killer 已启动。要解决此错误,请停止内存消耗最多的进程。
[115879.769795] Out of memory: kill process 20273 (httpd) score 1285879 or a child [115879.769795] Killed process 1917 (php-cgi) vsz:467184kB, anon-rss:101196kB, file-rss:204kB
默认情况下,EC2 实例内存和磁盘指标不会发送到 CloudWatch。有关详细信息,请参阅 Collect metrics, logs, and traces with the CloudWatch agent(使用 CloudWatch 代理收集指标、日志和跟踪信息)。
要排查并解决内存不足问题,请将实例升级到更大的实例类型。或者,向实例添加交换存储空间以缓解内存压力。有关详细信息,请参阅如何分配内存以在 Amazon EC2 实例中用作交换文件?此外,请参阅如何在硬盘上使用分区在 Amazon EC2 实例上分配内存作为交换空间?
磁盘已满错误
如果系统日志中包含磁盘已满错误,则表明由于根设备已满,实例处于紧急模式。
系统日志示例:
$: sudo service apache2 restart Error: No space left on device $: sudo /etc/init.d/mysql restart [....] Restarting mysql (via systemctl): mysql.serviceError: No space left on device $: df -h / Filesystem Size Used Avail Use% Mounted on /dev/root 7.7G 7.7G 0 100% /
有关详细信息,请参阅如何对因资源过度使用而未通过状态检查的 EC2 Linux 实例进行故障排除?此外,请参阅如果我收到错误消息,提示我文件系统没有剩余空间,我应该如何增加 EBS 卷的大小?
内核崩溃
当内核在操作过程中检测到内部致命错误时,就会发生内核崩溃。如果内核未正确加载,则会在操作系统启动期间出现此错误。内核加载失败会导致实例启动失败。
内核崩溃错误输出示例:
Linux version 2.6.16-xenU (builder@xenbat.amazonsa) (gcc version 4.0.1 20050727 (Red Hat4.0.1-5)) #1 SMP Mon May 28 03:41:49 SAST 2007 Kernel command line: root=/dev/sda1 ro 4 Registering block device major 8 Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(8,1)
有关信息,请参阅如何解决 EC2 实例的“Kernel panic - not syncing”错误?此外,请参阅更新导致我的 EC2 实例无法重启时,如何恢复到已知的稳定内核?
网络故障
您的网络可能由于以下原因而出现故障:
- 实例上未安装 cloud-init 包。
- cloud-init 包用于在启动时更新网络配置。
要更正此错误并在您的实例上安装 cloud-init 包,请在您的终端中运行以下命令。
Amazon、Amazon Linux 2、Amazon Linux 2023 或 RedHat 操作系统:
sudo yum install cloud-init -y
Ubuntu 或 Debian 操作系统:
sudo apt install cloud-init -y
MAC 地址硬编码在配置文件中
硬编码的 MAC 地址位于 Linux 配置文件和 udev 配置文件中。您可以在以下位置找到日志文件:
- /etc/udev/rules.d/
- /etc/udev/rules.d/70-persistent-net.rules
- /etc/udev/rules.d/80-net-name-slot.rules
要解决由硬编码的 MAC 地址引起的网络问题,请删除条目或配置文件,然后运行以下命令:
sudo mv /etc/udev/rules.d/70-persistent-net.rules /root/
移动配置文件后,重启网络服务,以确保获取新的 MAC 地址。
IP 地址硬编码在网络配置文件中
当您从具有静态配置 IP 地址的实例创建亚马逊机器映像 (AMI) 时,配置文件将包含硬编码的 IP 地址。要更正此错误,请将您的网络接口设置为使用 DHCP。
**注意:**您无法更新已经存在的 AMI。在创建新的 AMI 之前,您必须将网络接口设置为使用 DHCP。
缺少 ENA 或 Intel 增强型网络驱动程序
有关缺少弹性网络适配器 (ENA) 或 Intel 增强型网络驱动程序的详细信息,请参阅 Amazon EC2 实例上的增强联网功能。
网络接口在启动时被自动重命名
要停用可预测的网络接口重命名,请向内核命令行中添加 net.ifnames=0。要使用占位符,您必须使用 ENA 激活增强联网功能,并重新构建或更新 grub 配置文件。
根 EBS 卷参数节流
当根 EBS 卷参数被节流时,实例可能会因无法访问且无响应而导致状态检查失败。
当 EBS 卷的每秒进行 I/O 操作的次数 (IOPS) 或吞吐量超过已配置的限制时,可能会发生节流。由于 EBS 卷节流导致性能下降,实例可能会变得无响应或无法访问。
要解决 EBS 卷节流问题,请完成以下步骤:
- 监控并分析 CloudWatch 指标,例如卷队列长度、卷读/写操作以及卷读/写字节数。有关详细信息,请参阅如何使用 CloudWatch 指标来计算我的 EBS 卷提供的平均吞吐量和平均 IOPS 数量?
- 停止并启动实例,或重启实例,以暂时解决该问题。
- 为 EBS 卷配置更多的 IOPS 或吞吐量。或者,升级到更适合您的工作负载的 EBS 卷类型和大小。有关详细信息,请参阅请求修改 Amazon EBS 卷。
相关信息
对状态检查失败的 Amazon EC2 Linux 实例进行故障排除
为什么我的 EC2 Windows 实例因系统状态检查失败或状态检查 0/2 而关闭?

