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) NVMe VM (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.

Note

VMs personalizadas que executam software de terceiros capaz de modificar comportamentos de arranque, drivers de armazenamento, drivers de filtro ou enumeração de discos não são atualmente um cenário de migração suportado. Exemplos incluem certos produtos de backup, segurança, proteção de endpoints e gestão de armazenamento. Para estas configurações, o Suporte do Azure pode ter capacidade limitada para diagnosticar ou remediar falhas de migração. Teste a conversão numa VM representativa não de produção antes de avançar com cargas de trabalho de produçã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 script.
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 o qual converter a VM (NVMe ou SCSI). Yes
-VMSize O SKU da VM do Azure para o qual 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 sistema Linux, verifica se o controlador NVMe está em initrd/initramfs, define nvme_core.io_timeout=240 e verifica em /etc/fstab a existência de nomes de dispositivos obsoletos.
    • No Windows, configura o controlador stornvme para ser iniciado no arranque (sc.exe config stornvme start=boot).
  3. Para e desaloca a VM.
  4. Atualiza supportedCapabilities.diskControllerTypes para SCSI, NVMe no 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 no sistema 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