Converter VMs Linux e Windows de SCSI para NVMe

As máquinas virtuais (VMs) do Azure suportam duas interfaces de controlador de armazenamento: Small Computer System Interface (SCSI) e NVM Express (NVMe). O SCSI é um padrão legado que fornece conectividade física e transferência de dados entre computadores e dispositivos periféricos. O NVMe oferece conectividade semelhante, mas é uma interface mais rápida e eficiente para a transferência de dados entre servidores e sistemas de armazenamento.

Este artigo mostra-lhe como converter uma VM Azure de um controlador de disco SCSI para NVMe usando o Azure Boost e o script de conversão NVMe do Azure. O mesmo script e procedimento aplicam-se a:

  • Máquinas virtuais Linux e Windows.
  • VMs com ou sem discos de dados e um disco temporário.

O Azure continua a suportar a interface SCSI nas ofertas de VM que fornecem armazenamento SCSI. No entanto, nem todas as novas séries VM incluem SCSI como opção daqui para a frente.

O que está a mudar para a sua máquina virtual?

Mudar a interface do host de SCSI para NVMe não altera o armazenamento remoto (disco do sistema operativo ou discos de dados). Muda a forma como o sistema operativo utiliza os discos.

Disk SCSI VM VM NVMe (v5 com disco temporário) VM NVMe (v6)
Disco do sistema operativo /dev/sda /dev/nvme0n1 /dev/nvme0n1
Disco temporário /dev/sdb /dev/sda /dev/nvme1n1
Primeiro disco de dados /dev/sdc /dev/nvme0n2 /dev/nvme0n2

Converter a sua VM Azure de SCSI para NVMe utilizando o Azure Boost pode ajudá-lo a tirar pleno proveito destas melhorias de desempenho e a manter uma vantagem competitiva no panorama da computação em nuvem.

Migrar uma VM de SCSI para NVMe

Para migrar de SCSI para NVMe, siga estes passos de alto nível:

  1. Verifica se a tua série VM suporta NVMe.
  2. Verifica os pré-requisitos para o teu sistema operativo.
  3. Converte a sua VM para NVMe.
  4. Verifica a conversão.

1. Verifique se a sua série de máquinas virtuais suporta NVMe

A tabela de disponibilidade do Azure Boost lista os tamanhos das VMs que suportam discos ligados ao NVMe.

2. Verifique os pré-requisitos

Antes de começar, certifique-se de que tem os seguintes pré-requisitos:

  • Uma subscrição do Azure e uma máquina virtual que precisas de converter de SCSI para NVMe ou de NVMe para SCSI
  • PowerShell e o módulo Az instalados e configurados
  • Permissões apropriadas para executar scripts em recursos do Azure

3. Utilização

Para executar o script, abra o PowerShell como administrador e siga estes passos:

  1. Instale o PowerShell ou execute o script no Azure Cloud Shell.

Sugestão

Instale o PowerShell usando a documentação do PowerShell.

  1. Permitir ficheiros de scripts PowerShell não assinados.
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
  1. Ligue-se à sua conta Azure usando Connect-AzAccount.
Connect-AzAccount
  1. Certifica-te de que estás ligado à tua subscrição. Para alterar a subscrição, use Set-AzContext.
Select-AzSubscription -Subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  1. Descarrega o guião.
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"
  1. Executa o script de conversão.
.\Azure-NVMe-Conversion.ps1

Note

Se estiveres a converter entre tamanhos de VM com suporte a diferentes recursos (temporários) para discos, a tua subscrição do Azure tem de estar registada para a VMTempDiskResizePreview funcionalidade. Se a funcionalidade não estiver registada, o script sai com um erro. Registe a funcionalidade usando o seguinte comando, aguarde 10 minutos até que a aprovação automática entre em vigor e depois volte a executar o script.

Register-AzProviderFeature -FeatureName VMTempDiskResizePreview -ProviderNamespace Microsoft.Compute

Example

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

O script tem os seguintes parâmetros.

Parâmetro Descrição Obrigatório
-ResourceGroupName O nome do grupo de recursos para a sua VM. Yes
-VMName O nome da sua VM no Azure. Yes
-NewControllerType O tipo de controlador de armazenamento para converter a VM (NVMe ou SCSI). Yes
-VMSize O SKU da VM do Azure para converter a VM. Yes
-StartVM Inicia a VM após a conversão. Não
-FixOperatingSystemSettings Corrige automaticamente as definições do sistema operativo usando os Comandos de Execução do Azure. Não
-WriteLogfile Cria um ficheiro de registo. Não
-IgnoreSKUCheck Ignora a verificação do SKU VM. Não
-IgnoreWindowsVersionCheck Ignora a verificação de versões do Windows. Não
-IgnoreAzureModuleCheck Não faças a verificação dos módulos Azure instalados. Não
-IgnoreOSCheck Não verifiquem a prontidão do sistema operativo. A expectativa é que o sistema operativo esteja pronto. Não
-SleepSeconds O tempo para o Azure resolver alterações antes de iniciar a VM. Não

O script executa as seguintes etapas:

  1. Valida as versões do módulo Az (AZ), existência da VM, tipo de sistema operativo, geração, tipo atual de controlador e capacidade NVMe do SKU VM alvo.
  2. Com -FixOperatingSystemSettings, valida e configura o sistema operativo convidado para NVMe usando o Azure Run Command:
    • No Linux, verifica se o driver NVMe está em initrd/initramfs, define nvme_core.io_timeout=240, e verifica /etc/fstab nomes de dispositivos obsoletos.
    • No Windows, configura o stornvme driver para iniciar no arranque (sc.exe config stornvme start=boot).
  3. Para e desaloca a VM.
  4. Atualizações supportedCapabilities.diskControllerTypes no SCSI, NVMe disco do sistema operativo.
  5. Redimensiona a VM para o SKU alvo e define o tipo de controlador de disco para NVMe.
  6. Inicia a VM (com -StartVM).

4. Verificar a conversão

Confirma usando o PowerShell

Depois de a VM reiniciar, confirme que o tipo de controlador de disco foi alterado com sucesso.

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

Verifique o resultado dentro do convidado

Verifica os dispositivos usando o nvme comando. Se o nvme comando estiver em falta, instala o nvme-cli pacote.

nvme list

A saída mostra o disco do sistema operativo e os discos de dados.

Sugestão

Podes sempre voltar para SCSI. O script fornece um comando no final de uma execução bem-sucedida para reverter à sua configuração original. Guarda esse comando antes de fechares a sessão.

Se precisar de reverter, execute novamente o script com -NewControllerType SCSI e o SKU original da VM:

.\Azure-NVMe-Conversion.ps1 -ResourceGroupName <your-RG> -VMName <your-VMname> -NewControllerType SCSI -VMSize <original-SKU> -StartVM