Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: ✔️ macchine virtuali Linux
Numero KB originale: 4038684
Note
CentOS a cui si fa riferimento in questo articolo è una distribuzione Linux e raggiungerà End Of Life (EOL). Valutare le proprie esigenze e pianificare di conseguenza. Per altre informazioni, vedere Indicazioni sulla fine della vita di CentOS.
Questo articolo fornisce una soluzione a un problema in cui la memoria massima di una macchina virtuale Linux di Azure è limitata a 64 GB in Linux con la versione del kernel precedente alla 3.10.
Sintomi
Si crea una macchina virtuale (VM) Linux con più di 64 GB di memoria in Microsoft Azure. Si scopre che la memoria allocata effettiva sulla VM Linux è di soli 64 GB.
Note
È necessario controllare la memoria disponibile all'interno della VM Linux per determinare se la memoria è stata limitata a 64 GB. Ad esempio, usa il comando free -m. Il portale di Azure mostra sempre la dimensione della memoria completa assegnata alla macchina virtuale.
Causa
Questo problema è causato da un bug nel kernel Linux nelle versioni precedenti alla 3.10. Il bug è stato risolto nel kernel Linux versione 3.10 e versioni successive.
Le macchine virtuali in Azure sono ospitate in Windows Server 2016 Hyper-V o Windows Server 2012 R2 Hyper-V. Quando la macchina virtuale è in esecuzione su un host Hyper-V di Windows Server 2012 R2, il bug non si manifesta perché la dimensione massima dello spazio degli indirizzi fisici che Hyper-V fornisce alle macchine virtuali guest è di 4 TB. Ma quando la macchina virtuale guest è in esecuzione nell'host Hyper-V di Windows Server 2016, la dimensione massima dello spazio degli indirizzi fisici viene aumentata a 16 TB. In questo scenario, il bug si manifesta e fa sì che il guest Linux visualizzi un massimo di 64 GB di memoria. Il valore di 64 GB è controllato dai valori MTRR (Memory Type Range Registers) forniti da Hyper-V al guest.
L'assegnazione di una macchina virtuale a un host Windows Server 2012 R2 o Windows Server 2016 è controllata dall'infrastruttura di Azure e non è selezionabile dall'utente. Pertanto, alcune distribuzioni potrebbero riscontrare questo problema mentre altre no.
Risoluzione
Questo bug si verifica nella versione del kernel Linux in SUSE Linux Enterprise Server (SLES) 11 SP4, Red Hat Enterprise Linux (RHEL) 6.x e CentOS 6.x. È corretto nei kernel Linux più recenti e non si verifica in SLES 12, RHEL 7.x e CentOS 7.x.
Per i kernel che hanno il bug, puoi aggirare il problema aggiungendo disable_mtrr_trim come opzione della riga di avvio del kernel. Microsoft sta collaborando con i fornitori delle nostre distribuzioni approvate per aggiornare le immagini in Azure per aggiungere disable_mtrr_trim come opzione della riga di avvio del kernel. Questa opzione disabilita l'interpretazione MTRR e rimuove il limite di 64 GB. Se crei una nuova macchina virtuale da un'immagine che è stata aggiornata per includere questa opzione della riga di avvio del kernel, non si verificherà il limite di 64 GB, indipendentemente dalla versione dell'host su cui è distribuita la macchina virtuale.
Per le macchine virtuali esistenti, è possibile aggiungere manualmente la stessa opzione della riga di avvio del kernel usando i passaggi seguenti.
Per RHEL/CentOS 6.x:ing:
Aprire il file
/boot/grub/grub.conf
in un editor di testo.Aggiungi il parametro disable_mtrr_trim alla riga di comando del kernel.
Nel file grub.conf, ci sarà una riga simile alla seguente:
kernel /vmlinuz-2.6.32-696.3.2.el6.x86_64 ro root=UUID=<ID>
Aggiungi disable_mtrr_trim come parametro separato alla fine di questa riga.
Salva e chiudi il file grub.conf.
Riavviare la macchina virtuale.
Per ulteriori informazioni, vedere Red Hat: file di configurazione del menu di GRUB.
Per SLES, fare riferimento a SUSE: avvio con GRUB.
Per Debian, fare riferimento a Debian: parametri di avvio.
Contattaci per ricevere assistenza
In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.
Dichiarazione di non responsabilità sulle informazioni di terze parti
I prodotti di terzi citati in questo articolo sono prodotti da società indipendenti da Microsoft. Microsoft non rilascia alcuna garanzia implicita o esplicita relativa alle prestazioni o all'affidabilità di tali prodotti
Dichiarazione di non responsabilità di contatti di terze parti
Microsoft fornisce informazioni di contatto di terze parti per aiutarti a trovare ulteriori informazioni su questo argomento. Queste informazioni di contatto sono soggette a modifica senza preavviso. Microsoft non garantisce l'accuratezza delle informazioni di contatto di terze parti.