Mengonversi VM Linux dan Windows dari SCSI ke NVMe

Azure komputer virtual (VM) mendukung dua jenis antarmuka penyimpanan: Small Computer System Interface (SCSI) dan NVM Express (NVMe). Antarmuka SCSI adalah standar warisan yang menyediakan konektivitas fisik dan transfer data antara komputer dan perangkat periferal. NVMe mirip dengan SCSI karena menyediakan konektivitas dan transfer data, tetapi NVMe adalah antarmuka yang lebih cepat dan lebih efisien untuk transfer data antara server dan sistem penyimpanan.

Dalam artikel ini, Anda mempelajari cara mengonversi VM Azure yang menjalankan Linux atau Windows dari pengontrol disk SCSI ke NVMe dengan menggunakan Azure Boost dan skrip Konversi NVMe Azure.

Azure terus mendukung antarmuka SCSI pada versi penawaran VM yang menyediakan penyimpanan SCSI. Namun, tidak semua seri VM baru memiliki penyimpanan SCSI sebagai opsi ke depannya.

Apa yang berubah untuk VM Anda?

Mengubah antarmuka host dari SCSI ke NVMe tidak mengubah penyimpanan jarak jauh (disk OS atau disk data), tetapi mengubah cara sistem operasi menggunakan disk.

Disk VM berkemampuan SCSI VM NVMe dengan disk sementara SCSI (misalnya, Ebds_v5) VM NVMe dengan disk temporer NVMe
Disk sistem operasi /dev/sda /dev/nvme0n1 /dev/nvme0n1
Disk sementara /dev/sdb /dev/sda /dev/nvme1n1
Disk data pertama /dev/sdc /dev/nvme0n2 /dev/nvme0n2

Petunjuk / Saran

Beberapa jenis VM memiliki lebih dari satu disk sementara (misalnya, E64ds_v6).

Mengonversi VM Azure Anda dari SCSI ke NVMe dengan menggunakan Azure Boost dapat membantu Anda memanfaatkan sepenuhnya peningkatan performa ini dan mempertahankan tepi kompetitif di lanskap komputasi cloud.

Memigrasikan VM Linux dari SCSI ke NVMe

Untuk bermigrasi dari SCSI ke NVMe, Anda perlu mengikuti langkah-langkah tingkat tinggi ini:

  1. Periksa apakah seri komputer virtual Anda mendukung NVMe.
  2. Periksa sistem operasi Anda untuk kesiapan NVMe.
  3. Konversikan komputer virtual Anda ke NVMe.
  4. Periksa sistem operasi Anda.

1. Periksa apakah seri komputer virtual Anda mendukung NVMe

Tabel ketersediaan Azure Boost mencantumkan komputer virtual yang didukung untuk disk terpasang NVMe.

2. Periksa sistem operasi Anda untuk kesiapan NVMe

Sistem operasi perlu mendukung perangkat NVMe. Misalnya, Anda perlu menyiapkan driver perangkat dan initrd, sistem file sementara yang digunakan selama startup. Anda juga perlu memvalidasi titik pemasangan sistem file, karena mereka memeriksa apakah Anda menggunakan nama perangkat SCSI (/dev/sdX).

Skrip migrasi dapat secara otomatis mengurus pemeriksaan kesiapan ini untuk Anda saat Anda menggunakan -FixOperatingSystemSettings.

2.1 Periksa jenis pengontrol VM

Periksa jenis pengontrol dengan menggunakan PowerShell
PS C:\Users\user1> $vm = Get-AzVM -name [your-vm-name]
PS C:\Users\user1> $vm.StorageProfile.DiskControllerType
SCSI
PS C:\Users\user1>
Periksa jenis pengontrol dengan menggunakan Azure CLI
$ az vm show --name [your-vm-name] --resource-group [your-resource-group-name]
{
"additionalCapabilities": {
...
 "storageProfile": {
 ...
   "diskControllerType": "SCSI",
 ...
Periksa jenis pengontrol dengan menggunakan portal Azure

Cuplikan layar properti mesin virtual, termasuk jenis pengontrol, di portal Azure.

2.2 Mempersiapkan migrasi

Skrip migrasi dapat secara otomatis mengurus prasyarat saat Anda menggunakan -FixOperatingSystemSettings parameter .

Jika Anda ingin membuat perubahan yang diperlukan secara manual, validasi bahwa:

  • Modul NVMe dipasang dan merupakan bagian dari initrd/initramfs.
  • Konfigurasi GRUB mencakup parameter nvme_core.io_timeout=240.
  • /etc/fstab memeriksa perangkat.

Tanyakan kepada vendor OS Anda untuk mencakup semua perintah yang diperlukan untuk memperbarui initrd/initramfs.

2.2.1 Menyiapkan PowerShell

Petunjuk / Saran

Langkah ini tidak diperlukan saat Anda menjalankan skrip di Azure Cloud Shell.

  1. Instal PowerShell dengan menggunakan dokumentasi PowerShell.

  2. Sambungkan ke Azure dengan menggunakan Connect-AzAccount.

  3. Pilih langganan yang benar dengan menggunakan Select-AzSubscription -Subscription [your-subscription-id].

  4. Atur kebijakan eksekusi dengan menggunakan Set-ExecutionPolicy -ExecutionPolicy Unrestricted.

2.2.2 Unduh skrip

Anda dapat mengunduh skrip dengan menggunakan perintah PowerShell:

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"

2.3 Menjalankan migrasi

Skrip memiliki beberapa parameter yang tersedia:

Pengaturan Deskripsi Diperlukan
-ResourceGroupName Nama grup sumber daya untuk VM Anda. Ya
-VMName Nama VM Anda di Azure. Ya
-NewControllerType Jenis pengontrol penyimpanan yang harus dikonversi VM ke (NVMe atau SCSI). Ya
-VMSize SKU Azure VM yang ingin Anda gunakan untuk mengonversi VM menjadi SKU tersebut. Ya
-StartVM Mulai VM setelah konversi. Tidak.
-IgnoreSKUCheck Abaikan pemeriksaan SKU VM. Tidak.
-IgnoreWindowsVersionCheck Abaikan pemeriksaan versi Windows. Tidak.
-FixOperatingSystemSettings Perbaiki pengaturan OS secara otomatis dengan menggunakan perintah Azure jalankan. Tidak.
-WriteLogfile Buat berkas log. Tidak.
-IgnoreAzureModuleCheck Jangan jalankan pemeriksaan untuk modul Azure yang terinstal. Tidak.
-IgnoreOSCheck Jangan periksa kesiapan OS. Harapannya adalah bahwa OS siap. Tidak.
-SleepSeconds Waktu bagi Azure untuk menyelesaikan perubahan sebelum memulai VM. Tidak.

Berikut adalah contoh perintah:

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

Petunjuk / Saran

Anda selalu dapat kembali ke SCSI. Skrip menyediakan perintah untuk langsung kembali ke konfigurasi asli Anda.

2.3.1 Contoh output
PS /home/philipp> ./NVMe-Conversion.ps1 -ResourceGroupName testrg -VMName testvm -NewControllerType NVMe -VMSize Standard_E4bds_v5 -StartVM -FixOperatingSystemSettings                                          
00:00 - INFO      - Starting script Azure-NVMe-Conversion.ps1
00:00 - INFO      - Script started at 06/27/2025 15:41:39
00:00 - INFO      - Script version: 2025062704
00:00 - INFO      - Script parameters:
00:00 - INFO      -   ResourceGroupName -> testrg
00:00 - INFO      -   VMName -> testvm
00:00 - INFO      -   NewControllerType -> NVMe
00:00 - INFO      -   VMSize -> Standard_E4bds_v5
00:00 - INFO      -   StartVM -> True
00:00 - INFO      -   FixOperatingSystemSettings -> True
00:00 - INFO      - Script Version 2025062704                                                                           
00:00 - INFO      - Module Az.Compute is installed and the version is correct.
00:00 - INFO      - Module Az.Accounts is installed and the version is correct.
00:00 - INFO      - Module Az.Resources is installed and the version is correct.
00:00 - INFO      - Connected to Azure subscription name: AG-GE-CE-PHLEITEN
00:00 - INFO      - Connected to Azure subscription ID: aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
00:00 - INFO      - VM testvm found in Resource Group testrg
00:01 - INFO      - VM testvm is running
00:01 - INFO      - VM testvm is running Linux
00:01 - INFO      - VM testvm is running SCSI
00:02 - INFO      - Running in Azure Cloud Shell
00:02 - INFO      - Authentication token is a SecureString
00:02 - INFO      - Authentication token received
00:02 - INFO      - Getting available SKU resources
00:02 - INFO      - This might take a while ...
00:06 - INFO      - VM SKU Standard_E4bds_v5 is available in zone 1
00:06 - INFO      - Resource disk support matches between original VM size and new VM size.
00:06 - INFO      - Found VM SKU - Checking for Capabilities
00:06 - INFO      - VM SKU has supported capabilities
00:06 - INFO      - VM supports NVMe
00:06 - INFO      - Pre-Checks completed
00:06 - INFO      - Entering Linux OS section
00:37 - INFO      -    Script output: Enable succeeded: 
00:37 - INFO      -    Script output: [stdout]
00:37 - INFO      -    Script output: [INFO] Operating system detected: sles
00:37 - INFO      -    Script output: [INFO] Checking if NVMe driver is included in initrd/initramfs...
00:37 - INFO      -    Script output: [INFO] NVMe driver found in initrd/initramfs.
00:37 - INFO      -    Script output: [INFO] Checking nvme_core.io_timeout parameter...
00:37 - INFO      -    Script output: [INFO] nvme_core.io_timeout is set to 240.
00:37 - INFO      -    Script output: [INFO] Checking /etc/fstab for deprecated device names...
00:37 - INFO      -    Script output: [INFO] /etc/fstab does not contain deprecated device names.
00:37 - INFO      -    Script output: 
00:37 - INFO      -    Script output: [stderr]
00:37 - INFO      -    Script output: 
00:37 - INFO      - Errors: 0 - Warnings: 0 - Info: 7
00:37 - INFO      - Shutting down VM testvm
01:18 - INFO      - VM testvm stopped
01:18 - INFO      - Checking if VM is stopped and deallocated
01:19 - INFO      - Setting OS Disk capabilities for testvm_OsDisk_1_165411276cbe459097929b981eb9b3e2 to new Disk Controller Type to NVMe
01:19 - INFO      - generated URL for OS disk update:
01:19 - INFO      - https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/testrg/providers/Microsoft.Compute/disks/testvm_OsDisk_1_165411276cbe459097929b981eb9b3e2?api-version=2023-04-02
01:19 - INFO      - OS Disk updated
01:19 - INFO      - Setting new VM Size from Standard_E4s_v3 to Standard_E4bds_v5 and Controller to NVMe
01:19 - INFO      - Updating VM testvm
01:54 - INFO      - VM testvm updated
01:54 - INFO      - Start after update enabled for VM testvm
01:54 - INFO      - Waiting for 15 seconds before starting the VM
02:09 - INFO      - Starting VM testvm
03:31 - INFO      - VM testvm started
03:31 - INFO      - As the virtual machine got started using the script you can check the operating system now
03:31 - INFO      - If you have any issues after the conversion you can revert the changes by running the script with the old settings
03:31 - IMPORTANT - Here is the command to revert the changes:
03:31 - INFO      -    .\Azure-NVMe-Conversion.ps1 -ResourceGroupName testrg -VMName testvm -NewControllerType SCSI -VMSize Standard_E4s_v3 -StartVM
03:31 - INFO      - Script ended at 06/27/2025 15:45:11
03:31 - INFO      - Exiting
PS /home/philipp>

Jika Anda tidak dapat mengakses sistem operasi setelahnya, periksa:

  • Konsol serial untuk sistem operasi Linux.
  • Cuplikan layar dari sistem operasi di portal Azure.

Jika perlu, Anda selalu dapat kembali ke SCSI dengan menggunakan perintah yang ditunjukkan di akhir skrip:

.\Azure-NVMe-Conversion.ps1 -ResourceGroupName testrg -VMName testvm -NewControllerType SCSI -VMSize Standard_E4s_v3 -StartVM

2.4 Periksa hasilnya

Periksa hasilnya di portal Azure

Cuplikan layar informasi tentang komputer virtual di portal Azure.

Periksa hasilnya di PowerShell
PS C:\Users> $vm = Get-AzVM -name [your-vm-name]
PS C:\Users> $vm.StorageProfile.DiskControllerType
NVMe
PS C:\Users>

3. Periksa sistem operasi Anda

3.1 Memeriksa perangkat

Anda dapat memeriksa perangkat dengan menggunakan nvme perintah . Jika perintah nvme tidak tersedia, instal paket nvme-cli menggunakan nvme list.

Output harus menampilkan disk OS dan disk data.

Cuplikan layar disk OS dan disk data.

3.2 Dapatkan file udev untuk NVMe (opsional)

Pada komputer virtual SCSI, aturan udev yang diintegrasikan ke dalam agen waagent Azure membuat tautan di /dev/disk/azure/scsi1/lunX untuk mengidentifikasi disk data. Karena SCSI tidak digunakan lagi, aturan tidak berlaku.

Dengan memilih salah satu dari dua opsi yang tersedia untuk menerapkan aturan udev yang mendukung NVMe, Anda akan melihat tautan simbolis baru dalam direktori /dev/disk/azure/data/by-lun. Direktori ini adalah pengganti untuk /dev/disk/azure/scsi1.

nvme-conversion-vm:/usr/lib/udev/rules.d # ls -l /dev/disk/azure/data/by-lun/
total 0
lrwxrwxrwx 1 root root 19 Jun 7 13:52 0 -> ../../../../nvme0n2
lrwxrwxrwx 1 root root 19 Jun 7 13:52 1 -> ../../../../nvme0n3
nvme-conversion-vm:/usr/lib/udev/rules.d #
Pengunduhan manual file udev

Untuk mengunduh file aturan udev baru, gunakan perintah ini: curl https://raw.githubusercontent.com/Azure/SAP-on-Azure-Scripts-and-Utilities/refs/heads/main/Azure-NVMe-Utils/88-azure-nvme-data-disk.rules. Kemudian, jalankan udevadm control --reload-rules && udevadm trigger untuk memuat ulang aturan udev.

Paket siap pasang dari GitHub

Paket yang telah dikompilasi sebelumnya dari kumpulan utilitas dan aturan udev GitHub untuk VM Azure tersedia pada Index dari /results/cjp256/azure-vm-utils/ untuk beberapa distribusi.

Beberapa distribusi sudah mulai mengintegrasikan paket. Anda dapat langsung menginstalnya dari repositori mereka.

Distribusi Versi minimum
SUSE SLES 15 SP5 atau yang lebih baru
Red Hat RHEL 9.6 atau yang lebih baru
Ubuntu Ubuntu 25.04 atau yang lebih baru

Memigrasikan VM Windows dari SCSI ke NVMe

Bagian ini menjelaskan cara mengonversi VM Windows dari SCSI ke NVMe dengan menggunakan skrip Konversi NVMe Azure. Skrip secara otomatis menangani persiapan OS, dealokasi VM, pembaruan pengontrol disk, pengubahan ukuran opsional, dan mulai ulang VM.

Prasyarat

Sebelum memulai, pastikan hal berikut:

  • VM menggunakan Generasi 2 (Gen2). Anda tidak dapat mengonversi VM Gen1 ke NVMe.

  • VM berjalan Server Windows 2019 atau yang lebih baru. Server Windows 2016 dan yang lebih lama tidak didukung kecuali Anda menggunakan -IgnoreWindowsVersionCheck dan memverifikasi kompatibilitas driver secara manual.

  • SKU VM target mendukung NVMe. Untuk mengonfirmasi, lihat tabel ketersediaan Azure Boost.

  • Anda tidak menggunakan Peluncuran Tepercaya untuk mengonfigurasi VM Anda. Anda tidak dapat mengonversi VM yang dikonfigurasi dengan Peluncuran Tepercaya dari SCSI ke NVMe.

  • Konversi dari VM dengan disk sementara (misalnya, Standard_D4ds_v5) ke SKU v6 (misalnya, Standard_D4ds_v6) tidak didukung melalui skrip ini. Gunakan rekam jepret disk untuk jalur migrasi tersebut.

    Konversi dari VM tanpa disk sementara (misalnya, Standard_D4s_v5) ke SKU v6 didukung.

  • Perangkat lunak antivirus atau keamanan non-Microsoft dapat mengganggu perubahan driver yang dilakukan selama konversi. Nonaktifkan sementara sebelum Anda menjalankan skrip.

    Jika VM menampilkan layar biru setelah konversi, kembali ke SCSI dan coba lagi setelah menonaktifkan solusi keamanan Anda.

  • PowerShell dengan versi modul Az berikut diinstal:

    • Az.Compute 9.0 atau yang lebih baru
    • Az.Accounts 4.0 atau yang lebih baru
    • Az.Resources 7.0 atau yang lebih baru

Mengunduh skrip

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"

Skrip adalah bagian dari repositori SAP-on-Azure-Scripts-and-Utilities dan dilisensikan di bawah lisensi MIT.

Jalankan konversi

Gunakan sakelar -FixOperatingSystemSettings agar skrip secara otomatis mengonfigurasi stornvme driver untuk startup. Konfigurasi ini diperlukan agar Windows mengenali pengontrol NVMe setelah VM dimulai ulang. Menghilangkannya mengharuskan Anda mengatur driver secara manual sebelum konversi.

.\Azure-NVMe-Conversion.ps1 `
  -ResourceGroupName "<resource-group-name>" `
  -VMName "<vm-name>" `
  -NewControllerType NVMe `
  -VMSize "<target-sku>" `
  -FixOperatingSystemSettings `
  -StartVM `
  -WriteLogfile

Skrip melakukan langkah-langkah berikut secara otomatis:

  1. Memvalidasi versi modul, keberadaan VM, jenis OS, versi Windows, Gen2, jenis pengontrol saat ini, dan kemampuan NVMe dengan SKU VM.
  2. Secara opsional memperbaiki layanan driver stornvme (sc.exe config stornvme start=boot) dan memvalidasi pengaturan OS lainnya untuk kesiapan NVMe (dengan -FixOperatingSystemSettings).
  3. Menghentikan dan membatalkan alokasi VM.
  4. Memperbarui supportedCapabilities.diskControllerTypes ke SCSI, NVMe pada disk OS melalui metode REST PATCH.
  5. Mengubah ukuran VM ke SKU target.
  6. Memulai VM (dengan -StartVM).

Petunjuk / Saran

Skrip menyediakan perintah untuk mengembalikan perubahan pada output di akhir proses yang berhasil dijalankan. Simpan perintah tersebut sebelum Anda menutup sesi sehingga Anda dapat kembali ke SCSI jika diperlukan.

Perubahan apa untuk VM Windows Anda

Tidak seperti Linux, Windows menggunakan huruf drive daripada jalur perangkat, sehingga disk OS tetap C:\ setelah konversi. Namun, antarmuka disk yang mendasar berubah. Penetapan disk data mungkin bergeser jika Anda tidak menggunakan pengidentifikasi disk persisten.

Disk VM berkemampuan SCSI VM berkemampuan NVMe
Disk sistem operasi C:\ (tidak berubah) C:\ (tidak berubah)
Disk sementara D:\ (biasanya) D:\ (biasanya, RAW pada SKU v6)
Disk penyimpanan data Ditetapkan berdasarkan urutan LUN Ditentukan berdasarkan urutan namespace NVMe

Important

Pada SKU v6, disk sementara berstatus RAW dan tidak dipraformat dengan NTFS. Gunakan skrip startup atau ekstensi skrip kustom untuk memformat dan memasangnya di setiap startup.

Memverifikasi konversi

Setelah VM dimulai ulang, konfirmasikan bahwa jenis pengontrol disk berhasil berubah.

Konfirmasi dengan menggunakan PowerShell

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

Outputnya harus NVMe.

Konfirmasi dengan menggunakan Device Manager di dalam VM

  1. Buka Device Manager.
  2. Perluas pengontrol Penyimpanan.
  3. Konfirmasikan bahwa Pengontrol Ekspres NVM Standar tercantum.

Kembali ke SCSI

Jika Anda perlu menggulung balik, jalankan ulang skrip dengan -NewControllerType SCSI dan SKU VM asli:

.\Azure-NVMe-Conversion.ps1 `
  -ResourceGroupName "<resource-group-name>" `
  -VMName "<vm-name>" `
  -NewControllerType SCSI `
  -VMSize "<original-SKU>" `
  -StartVM `
  -WriteLogfile