Convertire macchine virtuali Linux e Windows da SCSI a NVMe

Azure macchine virtuali supportano due interfacce del controller di archiviazione: Small Computer System Interface (SCSI) e NVM Express (NVMe). SCSI è uno standard legacy che fornisce connettività fisica e trasferimento di dati tra computer e dispositivi periferici. NVMe offre connettività simile, ma è un'interfaccia più veloce ed efficiente per il trasferimento dei dati tra server e sistemi di archiviazione.

Questo articolo illustra come convertire una macchina virtuale Azure da un controller disco SCSI a NVMe usando Azure Boost e lo script di conversione NVMe Azure. Lo stesso script e procedura si applicano a:

  • Macchine virtuali Linux e Windows.
  • Macchine virtuali con o senza dischi dati e un disco temporaneo.

Azure continua a supportare l'interfaccia SCSI nelle offerte di macchine virtuali che forniscono l'archiviazione SCSI. Tuttavia, non tutte le nuove serie di macchine virtuali includono SCSI come opzione in futuro.

Cosa cambia per la macchina virtuale?

La modifica dell'interfaccia host da SCSI a NVMe non modifica l'archiviazione remota (disco del sistema operativo o dischi dati). Cambia il modo in cui il sistema operativo usa i dischi.

Disco SCSI VM VM NVMe (v5 con disco temporaneo) VM NVMe (v6)
Disco del sistema operativo /dev/sda /dev/nvme0n1 /dev/nvme0n1
Disco temporaneo /dev/sdb /dev/sda /dev/nvme1n1
Primo disco dati /dev/sdc /dev/nvme0n2 /dev/nvme0n2

La conversione della macchina virtuale Azure da SCSI a NVMe usando Azure Boost consente di sfruttare appieno questi miglioramenti delle prestazioni e mantenere un vantaggio competitivo nel panorama del cloud computing.

Eseguire la migrazione di una macchina virtuale da SCSI a NVMe

Per eseguire la migrazione da SCSI a NVMe, seguire questa procedura generale:

  1. Verificare che la serie di macchine virtuali supporti NVMe.
  2. Controllare i prerequisiti per il sistema operativo.
  3. Convertire la macchina virtuale in NVMe.
  4. Verificare la conversione.

1. Controllare se la serie di macchine virtuali supporta NVMe

La tabella di disponibilità Azure Boost elenca le dimensioni delle macchine virtuali che supportano i dischi collegati NVMe.

2. Controllare i prerequisiti

Prima di iniziare, verificare di aver soddisfatto i prerequisiti seguenti:

  • Una sottoscrizione Azure e una macchina virtuale da convertire da SCSI a NVMe o da NVMe a SCSI
  • PowerShell e il modulo Az installati e configurati
  • Autorizzazioni appropriate per l'esecuzione di script nelle risorse di Azure

3. Utilizzo

Per eseguire lo script, aprire PowerShell come amministratore e seguire questa procedura:

  1. Installare PowerShell o eseguire lo script in Azure Cloud Shell.

Suggerimento

Installare PowerShell usando la documentazione di PowerShell.

  1. Consenti file di script di PowerShell non firmati.
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
  1. Connettersi all'account Azure usando Connect-AzAccount.
Connect-AzAccount
  1. Assicurarsi di essere connessi alla sottoscrizione. Per modificare la sottoscrizione, usare Set-AzContext.
Select-AzSubscription -Subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  1. Scaricare lo script.
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/Azure/SAP-on-Azure-Scripts-and-Utilities/refs/heads/main/Azure-NVMe-Utils/Azure-NVMe-Conversion.ps1" -OutFile ".\Azure-NVMe-Conversion.ps1"
  1. Eseguire lo script di conversione.
.\Azure-NVMe-Conversion.ps1

Annotazioni

Se si esegue la conversione tra le dimensioni delle macchine virtuali con supporto di risorse (temporanee) diverse, è necessario registrare la sottoscrizione Azure per la VMTempDiskResizePreview funzionalità. Se la funzionalità non è registrata, lo script viene chiuso con un errore. Registrare la funzionalità usando il comando seguente, attendere 10 minuti per rendere effettiva l'approvazione automatica e quindi eseguire di nuovo lo script.

Register-AzProviderFeature -FeatureName VMTempDiskResizePreview -ProviderNamespace Microsoft.Compute

Esempio

.\Azure-NVMe-Conversion.ps1 -ResourceGroupName <your-RG> -VMName <your-VMname> -NewControllerType <NVMe/SCSI> -VMSize <new-VM-SKU> -StartVM

Lo script ha i parametri seguenti.

Parametro Descrizione Obbligatorio
-ResourceGroupName Nome del gruppo di risorse per la macchina virtuale.
-VMName Nome della macchina virtuale in Azure.
-NewControllerType Tipo di controller di archiviazione per convertire la macchina virtuale in (NVMe o SCSI).
-VMSize SKU della macchina virtuale Azure in cui convertire la macchina virtuale.
-StartVM Avviare la macchina virtuale dopo la conversione. NO
-FixOperatingSystemSettings Correggere automaticamente le impostazioni del sistema operativo usando Azure Esegui comandi. NO
-WriteLogfile Creare un file di log. NO
-IgnoreSKUCheck Ignora il controllo dello SKU della VM. NO
-IgnoreWindowsVersionCheck Ignorare il controllo della versione Windows. NO
-IgnoreAzureModuleCheck Non eseguire il controllo dei moduli Azure installati. NO
-IgnoreOSCheck Non verificare la disponibilità del sistema operativo. Si prevede che il sistema operativo sia pronto. NO
-SleepSeconds Tempo necessario per Azure risolvere le modifiche prima di avviare la macchina virtuale. NO

Lo script esegue le operazioni seguenti:

  1. Convalida le versioni del modulo Az, l'esistenza della macchina virtuale, il tipo di sistema operativo, la generazione, il tipo di controller corrente e la funzionalità NVMe dello SKU della macchina virtuale di destinazione.
  2. Con -FixOperatingSystemSettings, convalida e configura il sistema operativo guest per NVMe usando Azure comando Esegui:
    • In Linux verifica che il driver NVMe sia in initrd/initramfs, imposta nvme_core.io_timeout=240e verifica la /etc/fstab presenza di nomi di dispositivo deprecati.
    • In Windows configura il driver da avviare all'avvio stornvme (sc.exe config stornvme start=boot).
  3. Arresta e dealloca la macchina virtuale.
  4. Aggiornamenti supportedCapabilities.diskControllerTypes a SCSI, NVMe nel disco del sistema operativo.
  5. Ridimensiona la macchina virtuale nello SKU di destinazione e imposta il tipo di controller del disco su NVMe.
  6. Avvia la macchina virtuale (con -StartVM).

4. Verificare la conversione

Confermare con PowerShell

Dopo il riavvio della macchina virtuale, verificare che il tipo di controller del disco sia stato modificato correttamente.

$vm = Get-AzVM -ResourceGroupName "<resource-group-name>" -VMName "<vm-name>"
$vm.StorageProfile.DiskControllerType

Controllare il risultato all'interno del guest

Controllare i dispositivi usando il nvme comando . Se il nvme comando non è presente, installare il nvme-cli pacchetto.

nvme list

L'output mostra il disco del sistema operativo e i dischi dati.

Suggerimento

È sempre possibile ripristinare SCSI. Lo script fornisce un comando alla fine di un'esecuzione riuscita per ripristinare la configurazione originale. Salvare il comando prima di chiudere la sessione.

Se è necessario eseguire il rollback, eseguire di nuovo lo script con -NewControllerType SCSI e lo SKU originale della macchina virtuale:

.\Azure-NVMe-Conversion.ps1 -ResourceGroupName <your-RG> -VMName <your-VMname> -NewControllerType SCSI -VMSize <original-SKU> -StartVM