Převod virtuálních počítačů se systémem Linux ze rozhraní SCSI na NVMe
V tomto článku probereme proces převodu virtuálních počítačů s Linuxem z SCSI na úložiště NVMe. Migrací na NVMe můžete využít výhod jeho vylepšeného výkonu a škálovatelnosti.
SCSI vs NVMe
Virtuální počítače Azure podporují dva typy rozhraní úložiště: Small Computer System Interface (SCSI) a NVMe. Rozhraní SCSI je starší standard, který poskytuje fyzické připojení a přenos dat mezi počítači a periferními zařízeními. NVMe se podobá rozhraní SCSI v tom, že poskytuje připojení a přenos dat, ale NVMe je rychlejší a efektivnější rozhraní pro přenos dat mezi servery a úložnými systémy.
Poznámka:
Virtuální počítače nakonfigurované s důvěryhodným spuštěním se nemůžou přesunout z SCSI na NVMe.
Podpora virtuálních počítačů rozhraní SCSI
Azure nadále podporuje rozhraní SCSI ve verzích nabídek virtuálních počítačů, které poskytují úložiště SCSI. Ne všechny nové řady virtuálních počítačů ale mají úložiště SCSI jako další možnost.
Co se pro váš virtuální počítač mění?
Změna hostitelského rozhraní z rozhraní SCSI na NVMe nemění vzdálené úložiště (disk s operačním systémem nebo datové disky), ale mění způsob, jakým operační systémy vidí tyto disky.
Virtuální počítač s povoleným rozhraním SCSI | Virtuální počítač s podporou NVMe | |
---|---|---|
Disk s operačním systémem | /dev/sda | /dev/nvme0n1 |
Dočasný disk | /dev/sdb | /dev/sda |
První datový disk | /dev/sdc | /dev/nvme0n2 |
V následujících částech poskytujeme průvodce převodem virtuálního počítače Azure ze služby SCSI na NVMe pomocí Azure Boost, abyste mohli plně využít těchto vylepšení výkonu a udržovat konkurenceschopnou výhodu v prostředí cloud computingu.
Migrace virtuálního počítače z SCSI na NVMe
Aby bylo možné migrovat ze služby SCSI na NVMe, je potřeba provést některé kroky:
- Kontrola, jestli řada virtuálních počítačů podporuje NVMe
- Kontrola připravenosti NVMe na operační systém
- Převod virtuálního počítače na NVMe
- Kontrola operačního systému
1. Zkontrolujte, jestli řada virtuálních počítačů podporuje NVMe.
Podporované virtuální počítače pro podporu připojených disků NVMe jsou popsané v lokalitě přehledu Azure Boost v tabulce dostupnosti.
Důležité
Pokud váš typ virtuálního počítače není uvedený, změňte typ virtuálního počítače.
2. Kontrola připravenosti NVMe v operačním systému
Operační systém musí podporovat zařízení NVMe, včetně ovladačů zařízení a initrdm, dočasného systému souborů používaného během spouštění, musí být připravený. Kromě toho je potřeba ověřit přípojné body systémů souborů, protože kontrolují, jestli používáte název zařízení SCSI (/dev/sdX).
Abychom tento proces usnadnili, vytvořili jsme skript Bash, který za vás provede předběžné ověření.
2.1 Kontrola typu kontroleru virtuálního počítače
2.1.1 Kontrola typu kontroleru pomocí PowerShellu
PS C:\Users\user1> $vm = Get-AzVM -name nvme-conversion-vm
PS C:\Users\user1> $vm.StorageProfile.DiskControllerType
SCSI
PS C:\Users\user1>
2.1.2 Kontrola typu kontroleru pomocí Azure CLI
$ az vm show --name nvme-conversion-vm --resource-group nvme-conversion
{
"additionalCapabilities": {
...
"storageProfile": {
...
"diskControllerType": "SCSI",
...
2.1.3 Kontrola typu kontroleru pomocí webu Azure Portal
2.2 Spuštění předběžné kontroly skriptu
Skript Bash automaticky nezmění nic ve vašem systému. Poskytuje pouze doporučení pro spouštění příkazů.
Mezi doporučení patří:
- Moduly NVMe
- Konfigurace GRUB
- /etc/fstab kontroluje zařízení
Ke spuštění skriptu použijte následující příkaz (curl):
curl -s -S -L https://raw.githubusercontent.com/Azure/SAP-on-Azure-Scripts-and-Utilities/main/NVMe-Preflight-Check/azure-nvme-preflight-check.sh | sh -s -- -v
As an alternative you can also use wget:
wget --no-verbose -O - https://raw.githubusercontent.com/Azure/SAP-on-Azure-Scripts-and-Utilities/main/NVMe-Preflight-Check/azure-nvme-preflight-check.sh | sh -s -- -v
Third option is to download the script from the [GitHub repository](https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/NVMe-Preflight-Check) and run it manually.
nvme-conversion-vm:/home/azureuser # curl -s -S -L https://raw.githubusercontent.com/Azure/SAP-on-Azure-Scripts-and-Utilities/main/NVMe-Preflight-Check/azure-nvme-preflight-check.sh | sh -s -- -v
------------------------------------------------
START of script
------------------------------------------------
------------------------------------------------
OK NVMe Module is installed and available on your VM
------------------------------------------------
------------------------------------------------
ERROR NVMe Module is not loaded in the initramfs image.
mkdir -p /etc/dracut.conf.d
echo 'add_drivers+=" nvme nvme-core nvme-fabrics nvme-fc nvme-rdma nvme-loop nvmet nvmet-fc nvme-tcp "' >/etc/dracut.conf.d/nvme.conf
dracut -f -v
------------------------------------------------
GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0 net.ifnames=0 dis_ucode_ldr earlyprintk=ttyS0 multipath=off rootdelay=300 scsi_mod.use_blk_mq=1 USE_BY_UUID_DEVICE_NAMES=1 nvme_core.io_timeout=240"
------------------------------------------------
OK GRUB contains timeouts.
------------------------------------------------
------------------------------------------------
OK fstab file doesn't contain device names
------------------------------------------------
Please crosscheck your /etc/fstab file
------------------------------------------------
END of script
------------------------------------------------
nvme-conversion-vm:/home/azureuser #
V tomto příkladu initrd a jádro nejsou připravené pro NVMe, spuštění příkazů dracut povoluje operační systém.
nvme-conversion-vm:/home/azureuser # mkdir -p /etc/dracut.conf.d
nvme-conversion-vm:/home/azureuser # echo 'add_drivers+=" nvme nvme-core nvme-fabrics nvme-fc nvme-rdma nvme-loop nvmet nvmet-fc nvme-tcp "' >/etc/dracut.conf.d/nvme.conf
nvme-conversion-vm:/home/azureuser # dracut -f -v
dracut: Executing: /usr/bin/dracut -f -v
...
dracut: *** Creating initramfs image file '/boot/initrd-5.14.21-150500.55.65-default' done ***
nvme-conversion-vm:/home/azureuser # reboot
3. Převod virtuálního počítače na NVMe
K převodu operačního systému je potřeba provést několik kroků.
Změňte metadata disku s operačním systémem tak, aby zahrnoval možnosti NVMe, změňte řadič SCSI na NVMe. Tento proces je automatizovaný pomocí skriptu PowerShellu.
3.1 Stažení skriptu PowerShellu
Pokud chcete stáhnout skript PowerShellu z úložiště GitHub, použijte následující příkaz:
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/Azure/SAP-on-Azure-Scripts-and-Utilities/main/NVMe-Preflight-Check/azure-nvme-VM-update.ps1" -OutFile ".\azure-nvme-VM-update.ps1"
3.2. Převod virtuálního počítače
Pokud chcete převést skript, je k dispozici také podrobná dokumentace v úložišti GitHub.
Můžete se například rozhodnout, jestli se má virtuální počítač po rekonfiguraci spustit automaticky.
.\azure-nvme-VM-update.ps1 -subscription_id XXXXXXXX-a961-4fb7-88c0-757472230e6c -resource_group_name nvme-conversion -vm_name nvme-conversion-vm -disk_controller_change_to NVMe -vm_size_change_to Standard_E64bds_v5
INFO - OS Disk found
INFO - Access token generated
INFO - Getting VM info
INFO - Getting all VM SKUs available in Region swedencentral
INFO - This will take about a minute ...
INFO - Found VM SKU - Checking for Capabilities
INFO - VM supports NVMe
INFO - Checking for TrustedLaunch
INFO - Checking if VM is stopped and deallocated
INFO - Stopping VM
Tenant: 72f988bf-86f1-41af-91ab-2d7cd011db47
SubscriptionName SubscriptionId Account Environment
---------------- -------------- ------- -----------
XX-XX-XX-XX XXXXXXX-a961-4fb7-88c0-757472230e6c xxxxxx@microsoft.com AzureCloud
OperationId : cf02d28c-c711-4fe5-89fc-854fba31b67a
Status : Succeeded
StartTime : 07.06.2024 15:18:35
EndTime : 07.06.2024 15:19:17
Error :
Name :
INFO - Setting OS Disk to SCSI/NVMe
INFO - Getting VM config to prepare new config
INFO - Setting new VM size
INFO - Setting disk controller for VM
INFO - Updating the VM configuration
RequestId :
IsSuccessStatusCode : True
StatusCode : OK
ReasonPhrase :
INFO - Not starting VM
3.3 Kontrola výsledku
3.3.1 Kontrola výsledku na webu Azure Portal
3.3.2 Kontrola výsledku v PowerShellu
PS C:\Users> $vm = Get-AzVM -name nvme-conversion-vm
PS C:\Users> $vm.StorageProfile.DiskControllerType
NVMe
PS C:\Users>
4. Zkontrolujte operační systém.
4.1 Kontrola zařízení
Pokud příkaz nvme chybí, můžete zkontrolovat zařízení pomocí příkazu nvme a nainstalovat balíček nvme-cli.
nvme list
Výstup by měl zobrazit disk s operačním systémem a datové disky.
4.2 Získání souboru udev pro NVMe (volitelné)
Na virtuálních počítačích SCSI vytvořila pravidla udev integrovaná v agentu waagent (agent Azure) odkazy /dev/disk/azure/scsi1/lunX
pro identifikaci datových disků. Vzhledem k tomu, že se už rozhraní SCSI nepoužívá, pravidla se nevztahují.
S jednou ze dvou dostupných možností nasazení pravidel NVMe povolených udev uvidíte nové symbolické odkazy v adresáři /dev/disk/azure/data/by-lun
. Tento adresář je náhradou za /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 #
4.2.1 Ruční stažení souboru udev
Pokud chcete stáhnout nový soubor pravidel udev, použijte tento příkaz: curl https://raw.githubusercontent.com/Azure/SAP-on-Azure-Scripts-and-Utilities/refs/heads/main/NVMe-Preflight-Check/88-azure-nvme-data-disk.rules
a pak spusťte udevadm control --reload-rules && udevadm trigger
opětovné načtení pravidel udev.
4.2.2 Připraveno k instalaci balíčků pomocí nástrojů Azure NVMe
V indexu /results/cjp256/azure-nvme-utils/pro více distribucí jsou k dispozici předkompilované balíčky. Pracujeme na povolení a integraci nástrojů Azure NVMe ve všech hlavních distribucích.