Azure Linux 仮想マシンの最大メモリは 64 GB に制限されています

注:

この記事で参照されている CentOS は Linux ディストリビューションであり、End Of Life (EOL) に到達します。 使用を検討し、それに応じて計画します。 詳細については、「 CentOS End Of Life ガイダンス」を参照してください。

この記事では、Azure Linux 仮想マシンの最大メモリが 3.10 より前のカーネル バージョンの Linux で 64 GB に制限される問題の解決策を示します。

元の製品バージョン: Linux を実行している仮想マシン
元の KB 番号: 4038684

現象

Microsoft Azure で 64 GB を超えるメモリを持つ Linux 仮想マシン (VM) を作成します。 Linux VM 上の実際に割り当てられたメモリは 64 GB のみです。

注:

Linux VM 内で使用可能なメモリをチェックして、メモリが 64 GB に制限されているかどうかを判断する必要があります。 たとえば、 free -m コマンドを使用します。 Azure portalは、VM に割り当てられているフル メモリ サイズを常に表示します。

原因

この問題は、3.10 より前のバージョンの Linux カーネルのバグが原因で発生しています。 このバグは、Linux カーネル バージョン 3.10 以降のバージョンで修正されています。

Azure の VM は、Windows Server 2016 Hyper-V または Windows Server 2012 R2 Hyper-V でホストされます。 VM が Windows Server 2012 R2 Hyper-V ホストで実行されている場合、Hyper-V がゲスト VM に提供する物理アドレス空間の最大サイズは 4 TB であるため、バグは発生しません。 ただし、ゲスト VM が Hyper-V ホストWindows Server 2016実行されている場合、最大物理アドレス空間サイズは 16 TB に引き上げられます。 このシナリオでは、バグ がマニフェストされ、Linux ゲストに最大 64 GB のメモリが表示されます。 64 GB の値は、Hyper-V がゲストに提供するメモリ型範囲レジスタ (MTRR) の値によって制御されます。

Windows Server 2012 R2 または Windows Server 2016 ホストへの VM の割り当ては、Azure インフラストラクチャによって制御され、ユーザーが選択することはできません。 そのため、一部のデプロイではこの問題が発生する場合もあれば、発生しないデプロイもあります。

解決方法

このバグは、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 では発生しません。

バグがあるカーネルの場合は、カーネルブートラインオプションとして 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: ブート パラメーターに関するページを参照してください。

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。

サードパーティの情報に関する免責事項

この資料に記載されているサードパーティ製品は、マイクロソフトと関連のない他社の製品です。 明示的か黙示的かにかかわらず、これらの製品のパフォーマンスや信頼性についてマイクロソフトはいかなる責任も負わないものとします。

サードパーティのお問い合わせ窓口に関する免責事項

Microsoft では、このトピックに関する追加情報を見つけるのに役立つサード パーティの連絡先情報を提供しています。 将来予告なしに変更されることがあります。 Microsoft は、第三者の連絡先情報の正確性を保証しません。