Ativar o Acelerador de Escrita

Aplica-se a: ✔️ VMs ✔️ Linux VMs ✔️ do Windows Conjuntos ✔️ de escala flexíveis Conjuntos de balanças uniformes

O Acelerador de Escrita é um recurso de disco para VMs (Máquinas Virtuais) da Série M no Armazenamento Premium com Discos Gerenciados do Azure exclusivamente. Como o nome indica, o objetivo da funcionalidade é melhorar a latência de E/S das gravações no Armazenamento Premium do Azure. O Acelerador de Gravação é ideal quando as atualizações do arquivo de log são necessárias para persistir no disco de maneira altamente eficiente para bancos de dados modernos.

O Acelerador de Escrita está geralmente disponível para VMs da série M na nuvem pública.

Planejando o uso do Acelerador de Gravação

O Acelerador de Gravação deve ser usado para os volumes que contêm o log de transações ou logs de refazer de um DBMS. Não é recomendável usar o Acelerador de Gravação para os volumes de dados de um DBMS, pois o recurso foi otimizado para ser usado em discos de log.

O Acelerador de Escrita só funciona em conjunto com os discos geridos do Azure.

Importante

Habilitar o Acelerador de Gravação para o disco do sistema operacional da VM reinicializará a VM.

Para habilitar o Acelerador de Gravação em um disco existente do Azure que NÃO faça parte de uma compilação de volume de vários discos com gerenciadores de disco ou volume do Windows, Espaços de Armazenamento do Windows, SOFS (Servidor de Arquivos de Expansão) do Windows, LVM Linux ou MDADM, a carga de trabalho que acessa o disco do Azure precisa ser encerrada. Os aplicativos de banco de dados que usam o disco do Azure DEVEM ser desligados.

Se você quiser habilitar ou desabilitar o Acelerador de Gravação para um volume existente criado a partir de vários discos do Armazenamento Premium do Azure e distribuído usando gerenciadores de disco ou volume do Windows, Espaços de Armazenamento do Windows, SOFS (Servidor de Arquivos de Expansão) do Windows, LVM do Linux ou MDADM, todos os discos que criam o volume devem ser habilitados ou desabilitados para o Acelerador de Gravação em etapas separadas. Antes de habilitar ou desabilitar o Acelerador de Gravação em tal configuração, desligue a VM do Azure.

A ativação do Acelerador de Gravação para discos do sistema operacional não deve ser necessária para configurações de VM relacionadas ao SAP.

Restrições de utilização do Acelerador de Escrita

Ao usar o Acelerador de Gravação para um disco/VHD do Azure, estas restrições se aplicam:

  • O cache de disco Premium deve ser definido como 'Nenhum' ou 'Somente leitura'. Todos os outros modos de cache não são suportados.
  • Atualmente, há suporte para instantâneos apenas para discos de dados habilitados para o Acelerador de Gravação, e não para o disco do sistema operacional. Durante o backup, o serviço de Backup do Azure faz backup e protege automaticamente os discos de dados habilitados para Acelerador de Gravação conectados à VM.
  • Apenas tamanhos de E/S menores (<=64 KiB) estão tomando o caminho acelerado. Em situações de carga de trabalho em que os dados estão sendo carregados em massa ou onde os buffers de log de transações dos diferentes DBMS são preenchidos em um grau maior antes de serem persistentes para o armazenamento, é provável que a E/S gravada em disco não esteja seguindo o caminho acelerado.

Há limites de VHDs do Armazenamento Premium do Azure por VM que podem ser suportados pelo Acelerador de Gravação. Os limites atuais são os seguintes:

SKU da VM Número de discos do Acelerador de Gravação IOPS de disco do acelerador de gravação por VM
M416ms_v2, M416s_8_v2 M416s_v2 16 20 000
M208ms_v2, M208s_v2 8 10000
M192ids_v2, M192idms_v2, M192is_v2, M192ims_v2, 16 20 000
M128ms, M128s, M128ds_v2, M128dms_v2, M128s_v2, M128ms_v2 16 20 000
M64ms, M64ls, M64s, M64ds_v2, M64dms_v2, M64s_v2, M64ms_v2 8 10000
M32ms, M32ls, M32ts, M32s, M32dms_v2, M32ms_v2 4 5000
M16ms, M16s 2 2500
M8ms, M8s 1 1250
Standard_M12s_v3, Standard_M12ds_v3 1 5000
Standard_M24s_v3, Standard_M24ds_v3 2 5000
Standard_M48s_1_v3, Standard_M48ds_1_v3 4 5000
Standard_M96s_1_v3, Standard_M96ds_1_v3, Standard_M96s_2_v3 Standard_M96ds_2_v3 8 10000
Standard_M176s_3_v3, Standard_M176ds_3_v3, Standard_M176s_4_v3 Standard_M176ds_4_v3 16 20 000

Os limites de IOPS são por VM e não por disco. Todos os discos do Acelerador de Gravação compartilham o mesmo limite de IOPS por VM. Os discos anexados não podem exceder o limite de IOPS do acelerador de gravação para uma VM. Por exemplo, embora os discos conectados possam fazer 30.000 IOPS, o sistema não permite que os discos ultrapassem 20.000 IOPS por M416ms_v2.

Ativar o Acelerador de Escrita num disco específico

As próximas seções descreverão como o Acelerador de Gravação pode ser habilitado nos VHDs do Armazenamento Premium do Azure.

Pré-requisitos

Os seguintes pré-requisitos se aplicam ao uso do Acelerador de Gravação neste momento:

  • Os discos contra os quais você deseja aplicar o Azure Write Accelerator precisam ser discos gerenciados do Azure no Armazenamento Premium.
  • Você deve estar usando uma VM da série M

Ativar o Acelerador de Escrita do Azure com o Azure PowerShell

O módulo do Azure PowerShell da versão 5.5.0 inclui as alterações nos cmdlets relevantes para habilitar ou desabilitar o Acelerador de Gravação para discos específicos do Armazenamento Premium do Azure. Para habilitar ou implantar discos suportados pelo Acelerador de Gravação, os seguintes comandos do PowerShell foram alterados e estendidos para aceitar um parâmetro para o Acelerador de Gravação.

Um novo parâmetro switch, -WriteAccelerator, foi adicionado aos seguintes cmdlets:

Nota

Se estiver habilitando o Acelerador de Gravação em Conjuntos de Dimensionamento de Máquina Virtual usando o Modo de Orquestração Flexível, você precisará habilitá-lo em cada instância individual.

Não fornecer o parâmetro define a propriedade como false e implantará discos que não têm suporte pelo Acelerador de Gravação.

Um novo parâmetro switch, -OsDiskWriteAccelerator foi adicionado aos seguintes cmdlets:

Não especificar o parâmetro define a propriedade como false por padrão, retornando discos que não aproveitam o Acelerador de Gravação.

Um novo parâmetro Boolean opcional (não anulável), -OsDiskWriteAccelerator foi adicionado aos seguintes cmdlets:

Especifique $true ou $false para controlar o suporte do Azure Write Accelerator com os discos.

Exemplos de comandos podem ser parecidos com:

New-AzVMConfig | Set-AzVMOsDisk | Add-AzVMDataDisk -Name "datadisk1" | Add-AzVMDataDisk -Name "logdisk1" -WriteAccelerator | New-AzVM

Get-AzVM | Update-AzVM -OsDiskWriteAccelerator $true

New-AzVmssConfig | Set-AzVmssStorageProfile -OsDiskWriteAccelerator | Add-AzVmssDataDisk -Name "datadisk1" -WriteAccelerator:$false | Add-AzVmssDataDisk -Name "logdisk1" -WriteAccelerator | New-AzVmss

Get-AzVmss | Update-AzVmss -OsDiskWriteAccelerator:$false

Dois cenários principais podem ser roteirizados, conforme mostrado nas seções a seguir.

Adicionando um novo disco suportado pelo Acelerador de Gravação usando o PowerShell

Você pode usar esse script para adicionar um novo disco à sua VM. O disco criado com este script usa o Acelerador de Gravação.

Substitua myVM, myWAVMs, log001, tamanho do disco e LunID do disco por valores apropriados para sua implantação específica.

# Specify your VM Name
$vmName="myVM"
#Specify your Resource Group
$rgName = "myWAVMs"
#data disk name
$datadiskname = "log001"
#LUN Id
$lunid=8
#size
$size=1023
#Pulls the VM info for later
$vm=Get-AzVM -ResourceGroupName $rgname -Name $vmname
#add a new VM data disk
Add-AzVMDataDisk -CreateOption empty -DiskSizeInGB $size -Name $vmname-$datadiskname -VM $vm -Caching None -WriteAccelerator:$true -lun $lunid
#Updates the VM with the disk config - does not require a reboot
Update-AzVM -ResourceGroupName $rgname -VM $vm

Habilitando o Acelerador de Gravação em um disco existente do Azure usando o PowerShell

Você pode usar esse script para habilitar o Acelerador de Gravação em um disco existente. Substitua myVM, myWAVMse por test-log001 valores apropriados para sua implantação específica. O script adiciona o Acelerador de Escrita a um disco existente onde o valor para $newstatus está definido como '$true'. Usar o valor '$false' desativará o Acelerador de Gravação em um determinado disco.

#Specify your VM Name
$vmName="myVM"
#Specify your Resource Group
$rgName = "myWAVMs"
#data disk name
$datadiskname = "test-log001"
#new Write Accelerator status ($true for enabled, $false for disabled)
$newstatus = $true
#Pulls the VM info for later
$vm=Get-AzVM -ResourceGroupName $rgname -Name $vmname
#add a new VM data disk
Set-AzVMDataDisk -VM $vm -Name $datadiskname -Caching None -WriteAccelerator:$newstatus
#Updates the VM with the disk config - does not require a reboot
Update-AzVM -ResourceGroupName $rgname -VM $vm

Nota

A execução do script acima desanexará o disco especificado, habilitará o Acelerador de Gravação no disco e conectará o disco novamente

Ativar o Acelerador de Escrita com o portal do Azure

Você pode ativar o Acelerador de Gravação através do portal onde você especifica suas configurações de cache de disco:

Acelerador de Escrita no portal do Azure

Ativar o Acelerador de Escrita com a CLI do Azure

Você pode usar a CLI do Azure para habilitar o Acelerador de Gravação.

Para habilitar o Acelerador de Gravação em um disco existente, use az vm update, você pode usar os seguintes exemplos se substituir diskName, VMName e ResourceGroup por seus próprios valores: az vm update -g group1 -n vm1 -write-accelerator 1=true

Para anexar um disco com o Write Accelerator habilitado, use az vm disk attach, você pode usar o exemplo a seguir se substituir em seus próprios valores: az vm disk attach -g group1 -vm-name vm1 -disk d1 --enable-write-accelerator

Para desativar o Acelerador de Gravação, use az vm update, definindo as propriedades como false: az vm update -g group1 -n vm1 -write-accelerator 0=false 1=false

Habilitando o Acelerador de Gravação usando APIs REST

Para implantar por meio da API REST do Azure, você precisa instalar o armclient do Azure.

Instalar armclient

Para executar armclient, você precisa instalá-lo através de Chocolatey. Você pode instalá-lo por meio do cmd.exe ou do PowerShell. Use direitos elevados para esses comandos ("Executar como administrador").

Usando cmd.exe, execute o seguinte comando: @"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

Usando o PowerShell, execute o seguinte comando: Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

Agora você pode instalar o armclient usando o seguinte comando no cmd.exe ou no PowerShell choco install armclient

Obtendo sua configuração de VM atual

Para alterar os atributos da configuração do disco, primeiro você precisa obter a configuração atual em um arquivo JSON. Você pode obter a configuração atual executando o seguinte comando: armclient GET /subscriptions/<<subscription-ID<</resourceGroups/<<ResourceGroup>>/providers/Microsoft.Compute/virtualMachines/<<virtualmachinename>>?api-version=2017-12-01 > <<filename.json>>

Substitua os termos em '<<>>' por seus dados, incluindo o nome do arquivo JSON deve ter.

A saída pode ser semelhante a:

{
  "properties": {
    "vmId": "2444c93e-f8bb-4a20-af2d-1658d9dbbbcb",
    "hardwareProfile": {
      "vmSize": "Standard_M64s"
    },
    "storageProfile": {
      "imageReference": {
        "publisher": "SUSE",
        "offer": "SLES-SAP",
        "sku": "12-SP3",
        "version": "latest"
      },
      "osDisk": {
        "osType": "Linux",
        "name": "mylittlesap_OsDisk_1_754a1b8bb390468e9b4c429b81cc5f5a",
        "createOption": "FromImage",
        "caching": "ReadWrite",
        "managedDisk": {
          "storageAccountType": "Premium_LRS",
          "id": "/subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/resourceGroups/mylittlesap/providers/Microsoft.Compute/disks/mylittlesap_OsDisk_1_754a1b8bb390468e9b4c429b81cc5f5a"
        },
        "diskSizeGB": 30
      },
      "dataDisks": [
        {
          "lun": 0,
          "name": "data1",
          "createOption": "Attach",
          "caching": "None",
          "managedDisk": {
            "storageAccountType": "Premium_LRS",
            "id": "/subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/resourceGroups/mylittlesap/providers/Microsoft.Compute/disks/data1"
          },
          "diskSizeGB": 1023
        },
        {
          "lun": 1,
          "name": "log1",
          "createOption": "Attach",
          "caching": "None",
          "managedDisk": {
            "storageAccountType": "Premium_LRS",
            "id": "/subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/resourceGroups/mylittlesap/providers/Microsoft.Compute/disks/data2"
          },
          "diskSizeGB": 1023
        }
      ]
    },
    "osProfile": {
      "computerName": "mylittlesapVM",
      "adminUsername": "pl",
      "linuxConfiguration": {
        "disablePasswordAuthentication": false
      },
      "secrets": []
    },
    "networkProfile": {
      "networkInterfaces": [
        {
          "id": "/subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/resourceGroups/mylittlesap/providers/Microsoft.Network/networkInterfaces/mylittlesap518"
        }
      ]
    },
    "diagnosticsProfile": {
      "bootDiagnostics": {
        "enabled": true,
        "storageUri": "https://mylittlesapdiag895.blob.core.windows.net/"
      }
    },
    "provisioningState": "Succeeded"
  },
  "type": "Microsoft.Compute/virtualMachines",
  "location": "westeurope",
  "id": "/subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/resourceGroups/mylittlesap/providers/Microsoft.Compute/virtualMachines/mylittlesapVM",
  "name": "mylittlesapVM"

Em seguida, atualize o arquivo JSON e habilite o Acelerador de Gravação no disco chamado 'log1'. Isso pode ser feito adicionando esse atributo ao arquivo JSON após a entrada de cache do disco.

        {
          "lun": 1,
          "name": "log1",
          "createOption": "Attach",
          "caching": "None",
          "writeAcceleratorEnabled": true,
          "managedDisk": {
            "storageAccountType": "Premium_LRS",
            "id": "/subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/resourceGroups/mylittlesap/providers/Microsoft.Compute/disks/data2"
          },
          "diskSizeGB": 1023
        }

Em seguida, atualize a implantação existente com este comando: armclient PUT /subscriptions/<<subscription-ID<</resourceGroups/<<ResourceGroup>>/providers/Microsoft.Compute/virtualMachines/<<virtualmachinename>>?api-version=2017-12-01 @<<filename.json>>

A saída deve ser parecida com a abaixo. Você pode ver que o Acelerador de Gravação está habilitado para um disco.

{
  "properties": {
    "vmId": "2444c93e-f8bb-4a20-af2d-1658d9dbbbcb",
    "hardwareProfile": {
      "vmSize": "Standard_M64s"
    },
    "storageProfile": {
      "imageReference": {
        "publisher": "SUSE",
        "offer": "SLES-SAP",
        "sku": "12-SP3",
        "version": "latest"
      },
      "osDisk": {
        "osType": "Linux",
        "name": "mylittlesap_OsDisk_1_754a1b8bb390468e9b4c429b81cc5f5a",
        "createOption": "FromImage",
        "caching": "ReadWrite",
        "managedDisk": {
          "storageAccountType": "Premium_LRS",
          "id": "/subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/resourceGroups/mylittlesap/providers/Microsoft.Compute/disks/mylittlesap_OsDisk_1_754a1b8bb390468e9b4c429b81cc5f5a"
        },
        "diskSizeGB": 30
      },
      "dataDisks": [
        {
          "lun": 0,
          "name": "data1",
          "createOption": "Attach",
          "caching": "None",
          "managedDisk": {
            "storageAccountType": "Premium_LRS",
            "id": "/subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/resourceGroups/mylittlesap/providers/Microsoft.Compute/disks/data1"
          },
          "diskSizeGB": 1023
        },
        {
          "lun": 1,
          "name": "log1",
          "createOption": "Attach",
          "caching": "None",
          "writeAcceleratorEnabled": true,
          "managedDisk": {
            "storageAccountType": "Premium_LRS",
            "id": "/subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/resourceGroups/mylittlesap/providers/Microsoft.Compute/disks/data2"
          },
          "diskSizeGB": 1023
        }
      ]
    },
    "osProfile": {
      "computerName": "mylittlesapVM",
      "adminUsername": "pl",
      "linuxConfiguration": {
        "disablePasswordAuthentication": false
      },
      "secrets": []
    },
    "networkProfile": {
      "networkInterfaces": [
        {
          "id": "/subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/resourceGroups/mylittlesap/providers/Microsoft.Network/networkInterfaces/mylittlesap518"
        }
      ]
    },
    "diagnosticsProfile": {
      "bootDiagnostics": {
        "enabled": true,
        "storageUri": "https://mylittlesapdiag895.blob.core.windows.net/"
      }
    },
    "provisioningState": "Succeeded"
  },
  "type": "Microsoft.Compute/virtualMachines",
  "location": "westeurope",
  "id": "/subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/resourceGroups/mylittlesap/providers/Microsoft.Compute/virtualMachines/mylittlesapVM",
  "name": "mylittlesapVM"

Depois de fazer essa alteração, a unidade deve ser suportada pelo Acelerador de Gravação.