Поделиться через


Максимальная память виртуальной машины Linux Azure ограничена 64 ГБ.

Область применения: ✔️ виртуальные машины Linux

Исходный номер базы знаний: 4038684

Примечание.

CentOS, на который ссылается в этой статье, является дистрибутивом Linux и достигнет конца жизни (EOL). Думайте об использовании и планировании соответствующим образом. Дополнительные сведения см. в руководстве centOS End Of Life.

В этой статье описывается решение проблемы, в которой максимальная память виртуальной машины Linux Azure ограничена 64 ГБ в Linux с версией ядра до 3.10.

Симптомы

Вы создаете виртуальную машину Linux, которая имеет более 64 ГБ памяти в Microsoft Azure. Вы обнаружите, что фактически выделенная память на виртуальной машине Linux составляет всего 64 ГБ.

Примечание.

Необходимо проверить доступную память на виртуальной машине Linux, чтобы определить, ограничена ли память 64 ГБ. Например, используйте команду free -m . портал Azure всегда отображает полный размер памяти, назначенный виртуальной машине.

Причина

Эта проблема вызвана ошибкой ядра Linux в версиях до 3.10. Эта ошибка исправлена в ядрах Linux версии 3.10 и более поздних версий.

Виртуальные машины в Azure размещаются в Windows Server 2016 Hyper-V или Windows Server 2012 R2 Hyper-V. Если виртуальная машина запущена на узле Windows Server 2012 R2 Hyper-V, ошибка не проявляется, так как максимальный размер физического адресного пространства, который Hyper-V предоставляет гостевым виртуальным машинам, составляет 4 ТБ. Но если гостевая виртуальная машина работает на узле Hyper-V Windows Server 2016, максимальный размер физического адресного пространства поднимается до 16 ТБ. В этом сценарии манифесты ошибок и это приводит к тому, что гость Linux отображает не более 64 ГБ памяти. Значение 64 ГБ управляется значениями диапазонов диапазонов памяти (MTRR), предоставляемыми Hyper-V гостевым гостям.

Назначение виртуальной машины в узел Windows Server 2012 R2 или Windows Server 2016 управляется инфраструктурой Azure и не может быть выбран пользователем. Поэтому некоторые развертывания могут столкнуться с этой проблемой, а другие — нет.

Разрешение

Эта ошибка возникает в версии ядра Linux в SUSE Linux Enterprise Server (SLES) 11 с пакетом обновления 4 (SP4), Red Hat Enterprise Linux (RHEL) 6.x и CentOS 6.x. Исправлено в более новых ядрах Linux и не происходит в SLES 12, RHEL 7.x и CentOS 7.x.

Для ядер, имеющих ошибку, можно обойти проблему, добавив disable_mtrr_trim в качестве параметра загрузки ядра. Корпорация Майкрософт работает с поставщиками утвержденных дистрибутивов, чтобы обновить образы в Azure, чтобы добавить disable_mtrr_trim в качестве параметра загрузки ядра. Этот параметр отключает интерпретацию MTRR и удаляет ограничение в 64 ГБ. Если вы создаете новую виртуальную машину из образа, который был обновлен, чтобы включить этот параметр загрузки ядра, вы не будете работать с ограничением в 64 ГБ, независимо от версии узла, на которой развернута виртуальная машина.

Для существующих виртуальных машин можно вручную добавить тот же параметр начальной строки ядра, выполнив следующие действия.

  • Для 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. Перезапустите виртуальную машину.

    Дополнительные сведения см. в разделе "Red Hat: ФАЙЛ конфигурации меню GRUB".

  • Сведения о SLES см. в статье SUSE: загрузка с помощью GRUB.

  • Для Debian см. раздел Debian: Параметры загрузки.

Свяжитесь с нами для получения помощи

Если у вас есть вопросы или помощь, создайте запрос на поддержку или попросите сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.

Заявление об отказе от ответственности за сведения о продуктах сторонних производителей

В этой статье упомянуты программные продукты независимых производителей. Корпорация Microsoft не дает никаких гарантий, подразумеваемых и прочих, относительно производительности и надежности этих продуктов.

Отказ от ответственности стороннего контакта

Корпорация Майкрософт предоставляет контактные данные сторонних производителей в целях получения дополнительных сведений по данной теме. Эти контактные данные могут быть изменены без предварительного уведомления. Корпорация Майкрософт не гарантирует точность контактных данных сторонних производителей.