Bearbeiten

Share via


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

In diesem Artikel werden einige allgemeine Fragen zur Unterstützung von Remote-NVMe-Datenträgern auf virtuellen Computern behandelt, die in Azure erstellt wurden.

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

Der VM-Konfiguration wurde ein Feature namens DiskControllerType hinzugefügt, mit dem Kunden ihren bevorzugten Controllertyp als NVMe oder SCSI auswählen können. Wenn der Kunde keinen DiskControllerType-Wert angibt, wählt die Plattform automatisch den Standardcontroller basierend auf der VM-Größenkonfiguration aus. Wenn die VM-Größe für SCSI als Standard konfiguriert ist und NVMe unterstützt, wird SCSI verwendet, es sei denn, es erfolgt eine Aktualisierung auf den NVMe-DiskControllerType. Um die NVMe-Schnittstelle zu aktivieren, müssen die folgenden Voraussetzungen erfüllt sein:

  • Wählen Sie eine VM-Produktfamilien aus, die NVMe unterstützt.
  • Wählen Sie das Betriebssystemimage aus, das für die NVMe-Unterstützung gekennzeichnet ist.
  • Melden Sie sich bei NVMe an, indem Sie im Azure-Portal oder in der ARM-/CLI-/PowerShell-Vorlage den NVMe-Datenträgercontrollertyp auswählen. Schritt-für-Schritt-Anleitungen finden Sie hier.
  • Nur Gen2-Images werden unterstützt. Wenn Sie die oben genannten vier Bedingungen erfüllen, können Sie NVMe in kürzester Zeit für die unterstützte VM-Produktfamilie aktivieren. Befolgen Sie die oben genannten Bedingungen, um eine VM mit NVMe ohne Komplikationen erfolgreich zu erstellen bzw. ihre Größe zu ändern.

Wie aktiviere ich einen NVMe-Remotedatenträger auf einer VM-Familie?

Um NVMe für Remotedatenträger zu aktivieren, stellen Sie sicher, dass die folgenden fünf Bedingungen erfüllt sind:

  • Wählen Sie eine VM-Produktfamilien aus, die NVMe unterstützt. Es ist wichtig zu beachten, dass nur die VM-Größen Ebsv5 und Ebdsv5 in den VMs der Intel v5-Generation mit NVMe ausgestattet sind. Stellen Sie sicher, dass Sie eine VM der Serie Ebsv5 oder Ebdsv5 auswählen.

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

    Screenshot: Eingabeaufforderung zum Auswählen des NVMe-Datenträgercontrollertyps.

  • Melden Sie sich bei NVMe an, indem Sie im Azure-Portal oder in der ARM-/CLI-/PowerShell-Vorlage den NVMe-Datenträgercontrollertyp auswählen. Schritt-für-Schritt-Anleitungen finden Sie hier.

  • Nur Gen2-Images werden unterstützt.

  • Wählen Sie eine der Azure-Regionen aus, in denen NVMe aktiviert ist. Wenn Sie die fünf Bedingungen erfüllen, können Sie NVMe in kürzester Zeit für die unterstützte VM-Produktfamilie aktivieren. Beachten Sie die oben genannten Bedingungen beim Erstellen und Ändern der Größe einer VM mit NVMe, um die erfolgreiche Funktionalität des Features sicherzustellen.

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 im Betriebssystem verschlüsseln, aber Sie müssen sie nach der Bereitstellung beim Start erneut verschlüsseln.

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

Der folgende Prozess kann für eine der folgenden Verfahren verwendet werden:

  • Die Größe einer SCSI-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-VM in eine NVMe-fähige VM mit einer anderen Größe zu verändern, ohne die VM-Konfigurationen erneut zu erstellen. Der virtuelle Quellcomputer kann entweder folgendes sein:
  • Ein nicht markiertes Betriebssystemimage, das NVMe unterstützt
  • Ein nvMe-markiertes Betriebssystemimage zum Ändern der Größe des virtuellen Computers:
  • Legen Sie das Ziel discontrollertype des virtuellen Computers als NVMe fest.
  • Verwenden Sie dazu das folgende PowerShell-Skript: SAP-on-Azure-Scripts-and-Utilities/NVMe-Preflight-Check at main · Azure/SAP-on-Azure-Scripts-and-Utilities · Github
`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 bestimmtes Image als NVMe gekennzeichnet ist?

Um zu überprüfen, ob ein bestimmtes 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 die folgenden vier Schritte aus, um ein Bild zu markieren, das NVMe unterstützt:

  1. Laden Sie die von NVMe unterstützte vhd in Ihr Speicherkonto hoch. AzCopy ist eine schnelle Möglichkeit, aber Sie können auch das Portal zum Hochladen verwenden.
  • AzCopy-Referenz: [https://docs.microsoft.com/azure/storage/common/storage-use-azcopy-v10]
`azcopy copy <local path to your vhd> <container in your storage account>`
  1. Erstellen Sie Ihre Bildergalerie entweder mithilfe von powershell/portal/cli: [https://docs.microsoft.com/azure/virtual-machines/create-gallery]
  2. Erstellen Sie die Imagedefinition: [https://docs.microsoft.com/azure/virtual-machines/image-version] Stellen Sie sicher, dass Sie "-feature DiskControllerTypes=SCSI,NVMe" einschließen

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`
  1. Erstellen Sie die Bildversion unter dem NVMe-markierten Katalog mit der NVMe-unterstützten vhd [https://docs.microsoft.com/azure/virtual-machines/image-version]

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 kann ich eine ARM-Vorlage für den ersten VM-Start konfigurieren?

Sie können die benutzerdefinierte Azure-Skripterweiterung in Verbindung mit Azure Resource Manager-Vorlagen verwenden. Auf diese Weise können Sie Skripts auf virtuellen Azure-Computern herunterladen und ausführen und mit Windows und Linux kompatibel sein. Ausführliche Anleitungen finden Sie in der Dokumentation zur Benutzerdefinierten Skripterweiterung von Azure für Windows und Linux. Beispiele für Windows finden Sie hier.

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, wird eine Fehlermeldung mit folgendem Text angezeigt: "Die ausgewählte VM-Größe kann nicht mit DiskControllerType gestartet werden. Überprüfen Sie, ob der angegebene Datenträgercontrollertyp einer der unterstützten Datenträgercontrollertypen für die VM-Größe Y ist. Fragen Sie die SKU-API unter [https://docs.microsoft.com/rest/api/compute/resource-skus/list] ab, um unterstützte Datenträgercontrollertypen für die Ressourcen-SKUs der VM-Größe – Liste – REST-API (Azure Compute) zu ermitteln.“ Stellen Sie daher sicher, dass Sie eine VM-Familie auswählen, die die NVMe-Schnittstelle unterstützt.

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

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

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

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

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

  1. Abrufen des nvme-cli-Pakets
`sudo apt install nvme-cli`
  1. Führen Sie den Befehl "NVMe-Liste" aus, um NVMe-Datenträgerdetails abzurufen:
`sudo nvme list`

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

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

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

Screenshot: Beispiel für die Reaktion auf einen Azure PowerShell-Befehl.

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

Starten Sie PowerShell, und verwenden Sie den folgenden Befehl: wmic diskdrive get model,scsilogicalunit

Screenshot: Beispiel für einen PowerShell-Befehl zum Starten von NVMe unter Windows.

Die an ASAP angefügten Datenträger werden im Gastsystem mit der Modellzeichenfolge „Virtual_Disk NVME Premium“ dargestellt und die SCSI-LU weist den im Portal sichtbaren LUN-ID-Wert auf, der um 1 erhöht wird. 
Hier sehen Sie eine Momentaufnahme, wie NVMe-Datenträger auf einer NVMe-fähigen Windows-VM angezeigt werden:

Abbildung: Beispiel eines 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.

Abbildung des Beispiels für die Anzeige von NVMe-Datenträgern auf einer NVMe-fähigen Windows-VM

Kann ich eine SCSIVM 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 von Linux-Betriebssystemen unterstützt, nicht jedoch von Windows-Betriebssystemen.

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

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

Kann ich Azure PowerShell /CLI verwenden, um einen virtuellen Computer mit einem Betriebssystemdatenträger aus einem vorhandenen BLOB mit aktiviertem NVMe zu erstellen?

Dies ist derzeit nicht möglich. Stattdessen kann die folgende Problemumgehung basierend auf der REST-API verwendet werden:

# This is the workaround using REST-API
# to create a VM with an OS disk from an existing BLOB with NVMe enabled 

$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)