Często zadawane pytania dotyczące zdalnych dysków NVMe

Ten artykuł zawiera odpowiedzi na niektóre typowe pytania dotyczące obsługi zdalnych dysków NVM Express (NVMe) na maszynach wirtualnych utworzonych na platformie Azure.

Jakie są wymagania wstępne dotyczące włączania zdalnego interfejsu NVMe na mojej maszynie wirtualnej?

Podczas konfigurowania maszyny wirtualnej można wybrać DiskControllerType preferowany typ kontrolera jako NVMe lub Mały interfejs systemu komputerowego (SCSI). Jeśli nie określisz DiskControllerType wartości, platforma automatycznie wybierze domyślny kontroler na podstawie konfiguracji rozmiaru maszyny wirtualnej. Jeśli rozmiar maszyny wirtualnej jest skonfigurowany dla interfejsu SCSI jako domyślny i obsługuje protokół NVMe, maszyna wirtualna używa interfejsu DiskControllerType SCSI, chyba że zaktualizujesz wartość do formatu NVMe.

Aby włączyć interfejs NVMe na maszynie wirtualnej, należy spełnić następujące wymagania wstępne:

  • Wybierz rodzinę maszyn wirtualnych, która obsługuje nvme. Tylko rozmiary maszyn wirtualnych Ebsv5 i Ebdsv5 są wyposażone w nvme na maszynach wirtualnych generacji Intel v5.

  • Wybierz obraz systemu operacyjnego oznaczony obsługą nvme. Po wybraniu wartości obrazu obsługiwanej rodziny maszyn wirtualnych i obrazu systemu operacyjnego zostanie wyświetlony monit o wybranie typu kontrolera dysku NVMe.

    Zrzut ekranu przedstawiający monit o wybranie typu kontrolera dysku.

  • Wybierz typ kontrolera dysków NVMe w witrynie Azure Portal lub w szablonie usługi Azure Resource Manager, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell. Aby uzyskać instrukcje krok po kroku, zapoznaj się z ogólnymi często zadawanymi pytaniami dotyczącymi nvme.

  • Upewnij się, że używasz maszyny wirtualnej generacji 2, ponieważ urządzenie NVMe obsługuje tylko obrazy generacji 2.

  • Wybierz jeden z regionów świadczenia usługi Azure, w których włączono funkcję NVMe.

Czy mogę zaszyfrować zdalne dyski NVMe?

Na platformie Azure nie ma natywnego sposobu szyfrowania tych dysków. Można je zaszyfrować w systemie operacyjnym, ale należy je ponownie zaszyfrować po zainstalowaniu podczas uruchamiania.

Jak mogę zmienić rozmiar maszyny wirtualnej opartej na protokole SCSI na zdalną maszynę wirtualną z włączoną funkcją NVMe o innym rozmiarze?

Możesz użyć następującego procesu, aby wykonać jedną z następujących czynności:

  • Zmień rozmiar maszyny wirtualnej opartej na protokole SCSI utworzonej przy użyciu obrazu bez tagów na maszynie wirtualnej z obsługą nvme innego rozmiaru bez ponownego tworzenia konfiguracji maszyny wirtualnej i bez tagowania obrazu.
  • Zmień rozmiar maszyny wirtualnej opartej na protokole SCSI na maszynę wirtualną z obsługą nvme o innym rozmiarze bez konieczności ponownego tworzenia konfiguracji maszyny wirtualnej.

Źródłowa maszyna wirtualna może być:

  • Nieoznakowany obraz systemu operacyjnego obsługujący nvme.
  • Obraz systemu operacyjnego oznaczony tagiem NVMe.

Aby zmienić rozmiar maszyny wirtualnej, użyj następującego polecenia, aby uruchomić skrypt programu Azure PowerShell, który ustawia wartość docelową discontrollertype maszyny wirtualnej jako nvme:

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>]

Jak sprawdzić, czy obraz jest oznaczony jako NVMe?

Aby sprawdzić, czy obraz jest oznaczony jako NVMe, użyj następującego polecenia:

az vm image show --urn URN_OF_IMAGE

Jak mogę tag obrazu obsługującego nvme dla dysków zdalnych?

Aby oznaczyć obraz obsługujący nvme, wykonaj następujące kroki:

  1. Przekaż wirtualny dysk twardy (VHD) obsługiwany przez nvme do konta magazynu. Narzędzie AzCopy to szybki sposób, ale możesz również użyć portalu do przekazania.

    azcopy copy <local path to your VHD> <container in your storage account>
    
  2. Utwórz galerię obrazów przy użyciu programu Azure PowerShell, portalu lub interfejsu wiersza polecenia platformy Azure.

  3. Utwórz definicję obrazu. Pamiętaj, aby uwzględnić wartość --feature DiskControllerTypes=SCSI,NVMe.

    Oto przykład interfejsu wiersza polecenia platformy Azure:

    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. Utwórz wersję obrazu w galerii z tagami NVMe za pomocą dysku VHD obsługiwanego przez nvme.

    Oto przykład interfejsu wiersza polecenia platformy Azure:

    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>
    

Jak mogę skonfigurować szablon usługi ARM na potrzeby tworzenia maszyny wirtualnej?

Rozszerzenie niestandardowego skryptu platformy Azure można używać w połączeniu z szablonami usługi Azure Resource Manager (szablonami usługi ARM). To rozwiązanie umożliwia pobieranie i uruchamianie skryptów na maszynach wirtualnych platformy Azure i jest zgodne z systemami Windows i Linux. Aby uzyskać szczegółowe wskazówki, zapoznaj się z dokumentacją rozszerzenia niestandardowego skryptu platformy Azure dla systemów Windows i Linux.

Co się stanie, jeśli chcę użyć innej rodziny maszyn wirtualnych, która nie obsługuje zdalnych dysków NVMe?

Jeśli wybierzesz nieobsługiwaną rodzinę maszyn wirtualnych, zostanie wyświetlony następujący komunikat o błędzie: "Wybrany rozmiar maszyny wirtualnej nie może uruchomić się przy użyciu elementu DiskControllerType. Sprawdź, czy podany typ kontrolera dysku jest jednym z obsługiwanych typów kontrolera dysków dla rozmiaru maszyny wirtualnej.

Pamiętaj, aby wybrać rodzinę maszyn wirtualnych, która obsługuje interfejs NVMe. Aby określić, które typy kontrolerów dysków są obsługiwane dla rozmiaru maszyny wirtualnej, zapoznaj się z listą jednostek SKU zasobów w interfejsie API REST.

Które opcje magazynu dysków platformy Azure są zgodne ze zdalnymi dyskami NVMe?

Rozmiary NVMe można łączyć z usługą Azure Premium SSD w wersji 1, SSD w warstwie Premium w wersji 2 i Ultra Disk Storage. Aby uzyskać więcej informacji na temat ofert dysków platformy Azure, zobacz Typy dysków zarządzanych platformy Azure.

Czy pomoc techniczna platformy Azure zmiany rozmiaru na żywo na dyskach z rozmiarami maszyn wirtualnych NVMe?

Zmiana rozmiaru dysku NVMe na żywo jest obsługiwana na dyskach SSD w wersji 1 w warstwie Premium platformy Azure, dyskach SSD w warstwie Standardowa i dyskach HDD w warstwie Standardowa. Można również dodać dyski NVMe bez ponownego uruchamiania maszyny wirtualnej.

Jak mogę zidentyfikować zdalne dyski NVMe na maszynie wirtualnej z systemem Linux?

  1. nvme-cli Pobierz pakiet:

    sudo apt install nvme-cli
    
  2. Uruchom polecenie NVMe list , aby pobrać szczegóły dysku NVMe:

    sudo nvme list
    

    Zrzut ekranu przedstawiający instrukcje identyfikowania dysków NVMe na maszynie wirtualnej z systemem Linux.

    Zrzut ekranu przedstawiający instrukcje dotyczące wybierania identyfikatora przestrzeni nazw w portalu systemu Linux.

    Poniżej przedstawiono sposób wyświetlania danych w odpowiedzi na polecenia programu Azure PowerShell:

    Zrzut ekranu przedstawiający przykładową odpowiedź na polecenie programu Azure PowerShell.

Jak mogę zidentyfikować dyski NVMe na maszynie wirtualnej z systemem Windows?

Otwórz program Azure PowerShell i użyj następującego polecenia:

wmic diskdrive get model,scsilogicalunit

Zrzut ekranu przedstawiający przykładowe polecenie programu PowerShell służące do używania programu NVMe w systemie Windows.

Dołączone dyski asAP są prezentowane w gościu z ciągiem Virtual_Disk NVME Premiummodelu . Jednostka logiczna SCSI ma wartość identyfikatora LUN widocznego w portalu zwiększa się o 1.

Oto migawka sposobu wyświetlania dysków NVMe na maszynie wirtualnej z systemem Windows z włączoną obsługą nvme:

Zrzut ekranu przedstawiający przykład polecenia programu Azure PowerShell służącego do identyfikowania dysku NVMe na maszynie wirtualnej z systemem Windows.

Poniższa migawka przedstawia dane wyjściowe gościa dla dysków danych dołączonych do jednostek LUN 0 i LUN 4 (CRP). Identyfikator LUN jest odpowiednikiem identyfikatora przestrzeni nazw.

Zrzut ekranu przedstawiający przykład wyświetlania dysków NVMe na maszynie wirtualnej z systemem Windows z włączoną obsługą nvme.

Czy mogę przekonwertować maszynę wirtualną opartą na protokole SCSI na urządzenie NVMe z zachowaniem tego samego rozmiaru procesorów wirtualnych maszyn wirtualnych przy użyciu obrazu systemu operacyjnego oznaczonego tagiem NVMe?

Ten scenariusz jest obsługiwany tylko w systemach operacyjnych Linux i nie jest obsługiwany w systemach operacyjnych Windows.

Czy dyski udostępnione na dyskach zdalnych są obsługiwane z maszynami wirtualnymi z włączoną funkcją NVMe?

Funkcja dysku udostępnionego jest obsługiwana w przypadku dysków SSD w warstwie Premium, SSD w warstwie Premium w wersji 2 i Ultra Disk Storage.

Czy mogę użyć programu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure, aby utworzyć maszynę wirtualną z dyskiem systemu operacyjnego na podstawie istniejącego obiektu blob z włączonym programem NVMe?

Obecnie nie jest to możliwe. Zamiast tego możesz użyć następującego obejścia interfejsu API REST, aby utworzyć maszynę wirtualną z dyskiem systemu operacyjnego na podstawie istniejącego obiektu blob z włączonym dyskiem NVMe:

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