Linux Çalıştıran Sanal Makineler SCSI'den NVMe'ye Dönüştürme

Bu makalede, Linux çalıştıran sanal makineleri (VM) SCSI'den NVMe depolama alanına dönüştürme işlemi ele alınıyor. NVMe'ye geçiş yaparak geliştirilmiş performans ve ölçeklenebilirlik özelliklerinden yararlanabilirsiniz.

SCSI ve NVMe karşılaştırması

Azure VM'leri iki tür depolama arabirimini destekler: Küçük Bilgisayar Sistemi Arabirimi (SCSI) ve NVMe. SCSI arabirimi, bilgisayarlar ve çevre birimi cihazları arasında fiziksel bağlantı ve veri aktarımı sağlayan eski bir standarttır. NVMe, bağlantı ve veri aktarımı sağladığı için SCSI'ye benzer, ancak NVMe sunucular ve depolama sistemleri arasında veri aktarımı için daha hızlı ve daha verimli bir arabirimdir.

SCSI arabirimi VM'leri için destek

Azure, SCSI depolama alanı sağlayan VM tekliflerinin sürümlerinde SCSI arabirimini desteklemeye devam eder. Ancak, tüm yeni VM serilerinin bir seçenek olarak SCSI depolama alanı yoktur.

VM'niz için neler değişiyor?

Konak arabiriminin SCSI'den NVMe'ye değiştirilmesi uzak depolama alanını (işletim sistemi diski veya veri diskleri) değiştirmez, ancak işletim sistemlerinin diskleri görme şeklini değiştirir.

Disket SCSI özellikli VM SCSI tempdisk ile NVMe VM (örneğin, Ebds_v5) NVMe VM üzerinde NVMe tempdisk
İşletim sistemi diski /dev/sda /dev/nvme0n1 /dev/nvme0n1
Geçici Disk /dev/sdb /dev/sda /dev/nvme1n1
İlk Veri Diski /dev/sdc /dev/nvme0n2 /dev/nvme0n2

Tavsiye

Bazı VM türlerinin birden fazla geçici diski vardır (örneğin, E64ds_v6)

Aşağıdaki bölümlerde Azure Boost kullanarak Azure VM'nizi SCSI'den NVMe'ye dönüştürmek için bu performans iyileştirmelerinden tam olarak yararlanabilmenizi ve bulut bilişim alanında rekabet avantajını korumanızı sağlayan bir kılavuz sağlıyoruz.

Sanal makinenizi (VM) SCSI'den NVMe'ye geçirme

SCSI'den NVMe'ye geçiş yapmak için bazı adımların izlenmesi gerekir:

  1. Sanal makine serinizin NVMe'i desteklenip desteklemediğini denetleyin
  2. İŞLETIM sisteminizin NVMe hazır olup olmadığını denetleyin
  3. Sanal makinenizi NVMe'ye dönüştürme
  4. İşletim sisteminizi denetleme

1. Sanal makine serinizin NVMe'i desteklenip desteklemediğini denetleyin

NVMe bağlı disklerini desteklemek için desteklenen sanal makineler, kullanılabilirlik tablosundaki Azure Boost genel bakış sitesinde açıklanmıştır.

2. NVMe hazır olup olmadığını kontrol edin

İşletim sisteminin NVMe cihazlarını desteklemesi gerekir; örneğin, cihaz sürücüleri ve initrdm, önyükleme sırasında kullanılan geçici dosya sisteminin hazırlanması gerekir. Buna ek olarak, SCSI cihaz adını (/dev/sdX) kullanıp kullanmayabileceğinizi denetledikleri için dosya sistemlerinin bağlama noktalarını doğrulamanız gerekir.

Geçiş betiği, -FixOperatingSystemSettings kullandığınızda sizin için bu hazırlık denetimlerini otomatik olarak üstlenebilir.

2.1 VM'nin Denetleyici Türünü Denetleme

2.1.1 PowerShell kullanarak Denetleyici Türünü Denetleme
PS C:\Users\user1> $vm = Get-AzVM -name [your-vm-name]
PS C:\Users\user1> $vm.StorageProfile.DiskControllerType
SCSI
PS C:\Users\user1>
2.1.2 Azure CLI kullanarak Denetleyici Türünü Denetleme
$ az vm show --name [your-vm-name] --resource-group [your-resource-group-name]
{
"additionalCapabilities": {
...
 "storageProfile": {
 ...
   "diskControllerType": "SCSI",
 ...
2.1.3 Azure portalını kullanarak Denetleyici Türünü Denetleme

Denetleyiciyi denetlemek için Azure portalının ekran görüntüsü.

2.2 Geçişe hazırlanma

Geçiş betiği, -FixOperatingSystemSettings parametresini kullanırken önkoşullarla otomatik olarak ilgilenebilir.

Gerekli değişiklikleri el ile halletmek istiyorsanız doğrulayın

  • Yüklenen NVMe modülleri ve initrd/initramfs parçası
  • GRUB yapılandırması nvme_core.io_timeout=240 parametresini içerir
  • Cihazlar için /etc/fstab denetimleri

initrd/initramfs'ı güncelleştirmek için gerekli tüm komutları ele almak için lütfen işletim sistemi satıcınıza başvurun.

2.2.1 PowerShell'i Hazırlama

Tavsiye

Betiği Azure CloudShell'de çalıştırırken bu adım gerekli değildir

  1. PowerShell'i kullanarak yükleme https://aka.ms/powershell

  2. Connect-AzAccount kullanarak Azure'a bağlanın ve Select-AzSubscription -Subscription [your-subscription-id] kullanarak doğru aboneliği seçin

  3. Set-ExecutionPolicy -ExecutionPolicy Unrestricted kullanarak Yürütme İlkesini ayarla

2.2.2 Komut dosyasını indirin

Betiği Bir PowerShell komutu kullanarak indirebilirsiniz

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 Geçişi çalıştırma

Betiğin birden çok parametresi vardır:

Parametre Açıklama Gerekli
-ResourceGroupName VM'nizin Kaynak Grubu Adı Evet
-VMName Azure'da Sanal Makinenizin adı Evet
-NewControllerType VM'nin dönüştürülmesi gereken depolama denetleyicisi türü (NVMe veya SCSI) Evet
-VMSize VM'yi dönüştürmek istediğiniz Azure VM SKU'su Evet
-StartVM Dönüştürmeden sonra VM'yi başlatma Hayı
-IgnoreSKUCheck VM SKU denetimini yoksay Hayı
-IgnoreWindowsVersionCheck Windows Sürümü kontrolünü görmezden gel Hayı
-FixOperatingSystemSettings Azure RunCommands kullanarak işletim sistemi ayarlarını otomatik olarak düzeltme Hayı
-WriteLogfile Günlük Dosyası Oluşturma Hayı
-IgnoreAzureModuleCheck Yüklü Azure modüllerini denetlemeyi çalıştırmayın Hayı
-IgnoreOSCheck İşletim sistemi hazır olup olmadığını denetlemeyin, beklenti işletim sisteminin hazır olmasıdır Hayı
-SleepSeconds VM'yi başlatmadan önce Azure'ın değişiklikleri düzenleme zamanı. Hayı

Örnek Komut:

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

Tavsiye

İstediğiniz zaman SCSI'ye geri dönebilirsiniz. Betik, doğrudan özgün yapılandırmanıza geri dönmek için sizinle bir komut paylaşır.

2.3.1 Örnek çıkış
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>

daha sonra işletim sistemine erişme konusunda sorun yaşıyorsanız kontrol etmeyi deneyin

  • Linux işletim sistemleri için Seri Konsol

  • Azure portalındaki işletim sisteminden ekran görüntüsü

Bir şey olduğunda, betiğin sonunda gösterilen komutu kullanarak her zaman SCSI'ye geri dönebilirsiniz:

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

2.4 Sonucu denetleyin

2.4.1 Azure portalında sonucu denetleme

Azure portalının ekran görüntüsü.

2.4.2 PowerShell'de sonucu denetleme
PS C:\Users> $vm = Get-AzVM -name [your-vm-name]
PS C:\Users> $vm.StorageProfile.DiskControllerType
NVMe
PS C:\Users>

3. İşletim sisteminizi denetleyin

3.1 Cihazları denetleme

Nvme komutunu kullanarak cihazları kontrol edebilirsiniz. Nvme komutu eksikse "nvme-cli" paketini yükleyin.

nvme list

Çıktıda işletim sistemi diski ve veri diskleri gösterilmelidir. İşletim sistemi disklerinin ve veri disklerinin ekran görüntüsü.

3.2 NVMe için udev dosyası alma (İsteğe bağlı)

SCSI sanal makinelerinde waagent (Azure aracısı) ile tümleşik udev kuralları, veri disklerini tanımlamak için içinde /dev/disk/azure/scsi1/lunX bağlantılar oluşturdu. SCSI artık kullanılmadığından kurallar geçerli değildir.

NVMe özellikli udev kurallarını dağıtmak için kullanılabilen iki seçenek arasında dizininde /dev/disk/azure/data/by-lunyeni sembolik bağlantılar görürsünüz. Bu dizin, öğesinin /dev/disk/azure/scsi1yerini alır.

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 #
3.2.1 udev dosyasının el ile indirilmesi

Yeni udev kuralları dosyasını indirmek için şu komutu kullanın: curl https://raw.githubusercontent.com/Azure/SAP-on-Azure-Scripts-and-Utilities/refs/heads/main/Azure-NVMe-Utils/88-azure-nvme-data-disk.rules ve ardından udev kurallarını yeniden yüklemek için komutunu çalıştırın udevadm control --reload-rules && udevadm trigger .

3.2.2 Azure VM yardımcı programlarını kullanarak paketleri yüklemeye hazır

Birden çok dağıtım için /results/cjp256/azure-vm-utils/dizininde önceden derlenmiş paketler vardır.

Paketi tümleştirmek için birden çok dağıtım zaten başlatıldı. Doğrudan depolarından yükleyebilirsiniz.

Dağıtım En düşük sürüm
SUSE SLES 15 SP5 veya üzeri
RedHat RHEL 9.6 veya üzeri
Ubuntu Ubuntu 25.04 veya üzeri