启动与虚拟机故障

在 Azure 平台上,Linux 虚拟机的 RAM 最大限制为 64 GB。 - Virtual Machines

· 52CE 我爱测

适用于:✔️ Linux VM 原始 KB 数: 4038684 注意 本文中引用的 CentOS 是 Linux 分发版,将达到生命周期结束(EOL)。 请相应地考虑使用和规划。 有关详细信息,请参阅 CentOS 生命周期指南(/zh-cn/azure/virtual-machines/workloads/centos/centos-end-of-life)。 总结 本文提供了解决方案,针对 Azure Linux 虚拟机在内核版本低于 3.10 的

适用于:✔️ Linux VM

原始 KB 数: 4038684

注意

本文中引用的 CentOS 是 Linux 分发版,将达到生命周期结束(EOL)。 请相应地考虑使用和规划。 有关详细信息,请参阅 CentOS 生命周期指南。

总结

本文提供了解决方案,针对 Azure Linux 虚拟机在内核版本低于 3.10 的 Linux 系统中,其最大内存被限制为 64 GB 的问题。

现象

你在 Microsoft Azure 上创建了一台具有超过 64GB 内存的 Linux 虚拟机 (VM)。 你会发现 Linux VM 上实际分配的内存只有 64 GB。

注意

必须检查 Linux VM 中的可用内存,以确定内存是否限制为 64 GB。 例如,使用 免费的 -m 命令。 Azure门户始终显示分配给 VM 的完整内存大小。

原因

此问题是由 3.10 之前的版本中 Linux 内核中的 bug 引起的。 该 bug 已在 Linux 内核版本 3.10 及更高版本中修复。

Azure中的 VM 托管在 Windows Server 2016 Hyper-V 或 Windows Server 2012 R2 Hyper-V上。 VM 在 Windows Server 2012 R2 Hyper-V 主机上运行时,该 bug 不会显示,因为Hyper-V提供给来宾 VM 的最大物理地址空间大小为 4 TB。 但是,当来宾 VM 在Windows Server 2016 Hyper-V主机上运行时,最大物理地址空间大小将增加到 16 TB。 在此场景中,bug 表现会导致 Linux 客户机看到最多 64 GB 内存。 64 GB 值由Hyper-V提供给来宾的内存类型范围寄存器(MTRR)值控制。

将 VM 分配到 Windows Server 2012 R2 或 Windows Server 2016 主机由 Azure 基础结构控制,用户无法选择。 因此,某些部署可能会遇到此问题,而另一些部署则不会。

解决方法

此 bug 发生在 SUSE Linux Enterprise Server (SLES) 11 SP4、Red Hat Enterprise Linux (RHEL) 6.x 和 CentOS 6.x 的 Linux 内核版本中。 它在较新的 Linux 内核中已修复,并且不会在 SLES 12、RHEL 7.x 和 CentOS 7.x 中发生。

对于存在 bug 的内核,可以通过将 disable_mtrr_trim 添加到内核启动行选项来解决该问题。 Microsoft正在与经官方认可的分发版供应商合作,更新Azure映像,添加 disable_mtrr_trim 作为内核启动行选项。 此选项禁用 MTRR 解释并删除 64 GB 限制。 如果从已更新为包含此内核启动行选项的映像创建新的 VM,则无论部署 VM 的主机版本如何,都不会遇到 64 GB 的限制。

对于现有 VM,可以使用以下步骤手动添加相同的内核启动行选项。

  • 对于 RHEL/CentOS 6.x:ing:

    1. 在文本编辑器中打开 /boot/grub/grub.conf 文件。

    2. 将参数 disable_mtrr_trim 添加到内核命令行。

      在 grub.conf 文件中,会有如下所示的行:

      kernel /vmlinuz-2.6.32-696.3.2.el6.x86_64 ro root=UUID=<ID>

      将 disable_mtrr_trim 添加为此行末尾的单独参数。

    3. 保存并关闭 grub.conf 文件。

    4. 重启 VM。

    有关详细信息,请参阅 Red Hat:GRUB 菜单配置文件。

  • 对于 SLES,请参阅 SUSE:使用 GRUB 启动。

  • 对于 Debian,请参阅 Debian:启动参数。

第三方信息免责声明

本文讨论的第三方产品由独立于Microsoft的公司制造。 Microsoft对这些产品的性能或可靠性不作任何默示或其他保证。

第三方联系人免责声明

Microsoft提供第三方联系信息,可帮助你查找有关本主题的其他信息。 此联系信息可能会更改,恕不另行通知。 Microsoft不能保证第三方联系信息的准确性。

资料来源与适用范围

资料来源
微软官方 Linux 虚拟机排障文档
适用范围
Azure Linux 虚拟机;按正文发行版、内核及代理版本
内容语言
中文;命令、路径和错误标识保留技术原文
本地收录日期
2026-10-26
授权说明
CC BY 4.0

正文与所需资源由本站本地存储。查看来源及更新记录 ↗

请按适用版本和实际日志确认原因;本站没有对每一种系统或设备逐项执行文中的操作。