Häufig gestellte Fragen zu Remote-NVMe-Datenträgern

In diesem Artikel werden einige allgemeine Fragen zur Unterstützung von Remote-NVM Express (NVMe)-Datenträgern auf VMs behandelt, die in Azure erstellt wurden.

Was sind die Voraussetzungen für die Aktivierung der REMOTE-NVMe-Schnittstelle auf meinem virtuellen Computer?

Sie können DiskControllerType während der VM-Konfiguration verwenden, um Ihren bevorzugten Controllertyp als NVMe oder Small Computer System Interface (SCSI) auszuwählen. Wenn Sie keinen DiskControllerType-Wert angeben, wählt die Plattform automatisch den Standard-Controller auf der Grundlage der Konfiguration der VM-Größe aus. Wenn die VM-Größe standardmäßig für SCSI konfiguriert ist und NVMe unterstützt, verwendet die VM SCSI, sofern Sie den DiskControllerType-Wert nicht auf NVMe aktualisieren.

Um die NVMe-Schnittstelle auf Ihrer VM zu aktivieren, müssen die folgenden Voraussetzungen erfüllt sein:

  • Wählen Sie eine VM-Produktfamilien aus, die NVMe unterstützt. Nur die VM-Größen Ebsv5 und Ebdsv5 in den VMs der Intel v5-Generation sind mit NVMe ausgestattet.

  • Wählen Sie das Betriebssystemimage aus, das für die NVMe-Unterstützung gekennzeichnet ist. Nachdem Sie einen unterstützten Wert für VM-Produktfamilie und das Betriebssystemimage ausgewählt haben, werden Sie aufgefordert, den NVMe-Datenträgercontrollertyp auszuwählen.

    Screenshot einer Eingabeaufforderung zum Auswählen eines Datenträgercontrollertyps.

  • Entscheiden Sie sich für NVMe, indem Sie im Azure-Portal oder in der Azure Resource Manager-, Azure CLI- oder Azure PowerShell-Vorlage den Typ NVMe-Datenträgercontroller auswählen. Schritt-für-Schritt-Anleitungen finden Sie in den allgemeinen häufig gestellten Fragen zu NVMe.

  • Stellen Sie sicher, dass Sie eine VM der Generation 2 verwenden, da NVMe nur Images der Generation 2 unterstützt.

  • Wählen Sie eine der Azure-Regionen aus, in denen NVMe aktiviert ist.

Kann ich meine NVMe-Remotedatenträger verschlüsseln?

Es gibt keine systemeigene Möglichkeit in Azure, diese Datenträger zu verschlüsseln. Sie können sie innerhalb des Betriebssystems verschlüsseln, aber Sie müssen sie nach dem Einhängen beim Start erneut verschlüsseln.

Wie kann ich die Größe einer SCSI-basierten VM auf einen virtuellen Remotecomputer mit NVMe-Aktivierter Größe ändern?

Sie können den folgenden Prozess für eine der folgenden Verfahren verwenden:

  • Die Größe einer SCSI-basierten VM, die mit einem nicht markierten Image erstellt wurde, auf eine NVMe-fähige VM mit einer anderen Größe zu verändern, ohne die VM-Konfigurationen neu zu erstellen und das Image zu kategorisieren.
  • Die Größe einer SCSI-basierten VM in eine NVMe-fähige VM mit einer anderen Größe zu verändern, ohne die VM-Konfigurationen erneut zu erstellen.

Die Quell-VM kann eine der folgenden Optionen sein:

  • Ein nicht markiertes Betriebssystemimage, das NVMe unterstützt
  • Ein NVMe-markiertes Betriebssystemimage.

Verwenden Sie zum Ändern der Größe der VM den folgenden Befehl, um ein Azure PowerShell-Skript auszuführen, das den Ziel-Wert discontrollertype der VM als NVMe festlegt:

azure-nvme-VM-update.ps1 [-subscription_id] <String> [-resource_group_name] <String> [-vm_name] <String> [[-disk_controller_change_to] <String>] [-vm_size_change_to] <String> [[-start_vm_after_update] <Boolean>] [[-write_logfile] <Boolean>]

Wie kann ich überprüfen, ob ein Image als NVMe gekennzeichnet ist?

Um zu überprüfen, ob ein Image als NVMe gekennzeichnet ist, verwenden Sie den folgenden Befehl:

az vm image show --urn URN_OF_IMAGE

Wie kann ich ein Image markieren, das NVMe für Remotedatenträger unterstützt?

Führen Sie diese Schritte aus, um ein Bild zu markieren, das NVMe unterstützt:

  1. Laden Sie einen NVMe-unterstützten virtuellen Datenträger (VHD) auf Ihr Speicherkonto hoch. AzCopy ist eine schnelle Möglichkeit, aber Sie können auch das Portal zum Hochladen verwenden.

    azcopy copy <local path to your VHD> <container in your storage account>
    
  2. Erstellen Sie eine Image-Galerie mithilfe von Azure PowerShell, dem Portal oder der Azure CLI.

  3. Erstellen Sie eine Imagedefinition. Schließen Sie dabei unbedingt --feature DiskControllerTypes=SCSI,NVMe mit ein.

    Hier ist ein Azure CLI-Beispiel:

    az sig image-definition create --resource-group <resourceGroupName> --gallery-name <galleryName> --gallery-image-definition <imageName> --publisher <publisher> --offer <offerName> --sku <skuName> --os-type <osType> --os-state <osState> --feature DiskControllerTypes=SCSI,NVMe
    
  4. Erstellen Sie die Image-Version unter dem NVMe-markierten Katalog mit der NVMe-unterstützten VHD.

    Hier ist ein Azure CLI-Beispiel:

    az sig image-version create --resource-group <resourceGroupName> --gallery-name <galleryName> --gallery-image-definition <imageName> --gallery-image-version <version> --target-regions <region1> <region2> --replica-count <replicaCount> --os-vhd-uri <NVMe-supported vhd uri> --os-vhd-storage-account <storageAccount>
    

Wie konfiguriere ich eine ARM-Vorlage für die Erstellung einer VM?

Sie können die benutzerdefinierte Azure-Skripterweiterung in Verbindung mit Azure Resource Manager-Vorlagen (ARM) verwenden. Mit dieser Lösung können Sie Skripte auf Azure-VMs herunterladen und ausführen. Sie ist sowohl mit Windows als auch mit Linux kompatibel. Ausführliche Anleitungen finden Sie in der Dokumentation zur Benutzerdefinierten Skripterweiterung von Azure für Windows und Linux.

Was geschieht, wenn ich eine andere VM-Familie verwenden möchte, die keinen Remote-NVMe-Datenträger unterstützt?

Wenn Sie eine nicht unterstützte VM-Familie auswählen, erhalten Sie diese Fehlermeldung: „Die ausgewählte VM-Größe kann nicht mit DiskControllerType gebootet werden. Überprüfen Sie, ob der angegebene Typ des Datenträger-Controllers einer der unterstützten Typen für Datenträger-Controller für die VM-Größe ist.“

Stellen Sie sicher, dass Sie eine VM-Familie auswählen, die die NVMe-Schnittstelle unterstützt. Informationen dazu, welche Datenträgercontrollertypen für die VM-Größe unterstützt werden, finden Sie in der Liste der Ressourcen-SKUs in der REST-API.

Welche Azure-Datenträgerspeicheroptionen sind mit Remote-NVMe Datenspeichern kompatibel?

NVMe-Größen können mit Azure SSD Premium v1, SSD Premium v2 und Disk Storage Ultra kombiniert werden. Weitere Informationen zu Azure-Datenträgerangeboten finden Sie unter Typen verwalteter Azure-Datenträger.

Unterstützt Azure Livegrößenänderung auf Datenträgern mit NVMe-VM-Größen?

Livegrößenänderung von NVMe wird auf Azure SSD Premium v1-, SSD Standard- und HDD Standard-Datenträgern unterstützt. Sie können auch NVMe-Datenträger hinzufügen, ohne den virtuellen Computer neu zu starten.

Wie kann ich Remote-NVMe-Datenträger auf einer Linux-VM identifizieren?

  1. Abrufen des Pakets nvme-cli:

    sudo apt install nvme-cli
    
  2. Führen Sie den NVMe-Befehl list aus, um NVMe-Datenträgerdetails abzurufen:

    sudo nvme list
    

    Screenshot der Anweisungen zum Identifizieren von NVMe-Datenträgern auf einer Linux-VM.

    Screenshot der Anweisungen zum Auswählen einer Namespace-ID im Linux-Portal.

    Hier erfahren Sie, wie die Daten als Reaktion auf Azure PowerShell-Befehle angezeigt werden:

    Screenshot eine Beispielantwort auf einen Azure PowerShell-Befehl.

Wie kann ich NVMe-Datenträger auf einer Windows-VM identifizieren?

Öffnen Sie Azure PowerShell, und verwenden Sie den folgenden Befehl:

wmic diskdrive get model,scsilogicalunit

Screenshot eines Beispiels für einen PowerShell-Befehl zum Verwenden von NVMe unter Windows.

Die angefügten ASAP-Datenträger werden im Gast mit der Modellzeichenfolge Virtual_Disk NVME Premium angezeigt. Die logische SCSI-Einheit weist den Wert für die im Portal sichtbare LUN-ID auf, die um 1 erhöht wird.

Hier sehen Sie eine Momentaufnahme, wie NVMe-Datenträger auf einer NVMe-fähigen Windows-VM erscheinen:

Screenshot eines Beispiels eines Azure PowerShell-Befehls zum Identifizieren des NVMe-Datenträgers auf einer Windows-VM.

Die folgende Momentaufnahme wird in der Gastausgabe für Datenträger angezeigt, die an LUN 0 und LUN 4 (CRP) angefügt sind. Die LUN-ID entspricht der Namespace-ID.

Screenshot eines Beispiels für die Anzeige von NVMe-Datenträgern auf einer NVMe-fähigen Windows-VM.

Kann ich eine SCSI-basierte VM in eine NVMe-fähige VM konvertieren, während ich dieselbe VM-vCPU-Größe mit einem für NVMe markierten Betriebssystemimage beibehalte?

Dieses Szenario wird nur auf Linux-Betriebssystemen unterstützt, nicht jedoch auf Windows-Betriebssystemen.

Werden freigegebene Datenträger auf Remotedatenträgern mit NVMe-aktivierten VMs unterstützt?

Das Feature für gemeinsam genutzte Datenträger wird für SSD Premium-, SSD Premium v2- und Disk Storage Ultra-Datenträger unterstützt.

Kann ich Azure PowerShell oder die Azure CLI verwenden, um eine VM mit einem Betriebssystemdatenträger aus einem vorhandenen Blob mit aktiviertem NVMe zu erstellen?

Dies ist derzeit nicht möglich. Stattdessen können Sie die folgende REST-API-Problemumgehung verwenden, um eine VM mit einem Betriebssystemdatenträger aus einem vorhandenen BLOB mit aktiviertem NVMe zu erstellen:

$subscriptionID = '<Your Subscription ID>'
$resourceGroupName = '<Your Resource Group Name>'
$storageAccountName = '<Your Account Name>'
$storageAccountContainer = '<Your Account Container>'
$blobName = 'blob-nvme_OsDisk_1.vhd'

$diskName = 'test'
$diskSkuName = 'Standard_LRS'
$diskSizeGB = 30
$osType = 'Linux' 
$hyperVGeneration = 'V2'
$location = 'eastus'

$azContext = Get-AzContext
$azProfile = [Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureRmProfileProvider]::Instance.Profile
$profileClient = New-Object -TypeName Microsoft.Azure.Commands.ResourceManager.Common.RMProfileClient -ArgumentList ($azProfile)
$token = ($profileClient.AcquireAccessToken($azContext.Subscription.TenantId)).AccessToken

$body = @{
    location = $location
    sku = @{ name = $diskSkuName }
    properties = @{
        osType                  = $osType
        hyperVGeneration        = $hyperVGeneration
        supportedCapabilities   = @{diskControllerTypes = 'SCSI, NVMe'}
        diskSizeGB              = $diskSizeGB
        creationData = @{
            storageAccountId	= "/subscriptions/$subscriptionID/resourceGroups/$resourceGroupName/providers/Microsoft.Storage/storageAccounts/$storageAccountName"

            sourceUri           = "https://$storageAccountName.blob.core.windows.net/$storageAccountContainer/$blobName"
            createOption		= 'Import'
        }
    }
}

$apiVersion='2023-10-02'
$restUri = "https://management.azure.com/subscriptions/$subscriptionID/resourceGroups/$resourceGroupName/providers/Microsoft.Compute/disks/$diskName`?api-version=$apiVersion"
$authHeader = @{
    'Content-Type'='application/json'
    'Authorization'='Bearer ' + $token
}

Invoke-RestMethod `
    -Uri $restUri `
    -Method 'Put' `
    -Headers $authHeader `
    -Body ($body | ConvertTo-Json)