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

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

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

現象

仮想マシンに 64 GB を超えるメモリを持つ Linux 仮想マシン (VM) をMicrosoft Azure。 Linux VM で実際に割り当てられたメモリはわずか 64 GB です。

注意

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

原因

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

Azure の VM は、Hyper-V Windows Server 2016 R2 Hyper-V Windows Server 2012ホストされます。 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) の値によって制御されます。

仮想マシン R2 または Windows Server 2012ホストWindows Server 2016割り当ては、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 は、Microsoft がサポートしている配布のベンダーと一緒に、Azure のイメージを更新して、カーネル ブート ライン disable_mtrr_trim として追加しています。 このオプションは、MTRR 解釈を無効にし、64 GB の制限を削除します。 このカーネル ブート ライン オプションを含む更新されたイメージから新しい VM を作成した場合、VM が展開されているホスト バージョンに関係なく、64 GB の制限は発生しません。

既存の VM では、次の手順を使用して、同じカーネル ブート ライン オプションを手動で追加できます。

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

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

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

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