Abilitare l'acceleratore di scrittura

Si applica a: ✔️ macchine virtuali Linux ✔️ macchine virtuali Windows ✔️ set di scalabilità flessibili ✔️ set di scalabilità uniformi

L'acceleratore di scrittura è una funzionalità del disco per le macchine virtuali serie M in dischi gestiti SSD Premium. Come indica il nome, lo scopo della funzionalità è migliorare la latenza di I/O delle scritture rispetto alle unità SSD Premium. L'acceleratore di scrittura è la soluzione ideale quando gli aggiornamenti dei file di log devono persistere nel disco in modo altamente efficiente per i database moderni.

L'acceleratore di scrittura è disponibile a livello generale per le macchine virtuali di serie M nel cloud pubblico.

Prerequisiti

Pianificare l'uso dell'acceleratore di scrittura

L'acceleratore di scrittura deve essere usato per i volumi che contengono il log delle transazioni o i log di ripristino di un DBMS. Non è consigliabile usare l'acceleratore di scrittura per i volumi di dati di un DBMS perché la funzionalità è ottimizzata per l'uso su dischi di log.

Importante

L'abilitazione dell'acceleratore di scrittura per il disco del sistema operativo della macchina virtuale riavvia la macchina virtuale.

Per abilitare l’Acceleratore di scrittura su un disco di Azure esistente che non fa parte di un volume creato da più dischi con i gestori di dischi o volumi di Windows, Windows Storage Spaces, file server di scalabilità orizzontale Windows (SOFS), Linux LVM o MDADM, è necessario arrestare il carico di lavoro che sta accedendo al disco di Azure. Le applicazioni di database che usano il disco di Azure devono essere arrestate.

Per abilitare o disabilitare l'acceleratore di scrittura per un volume esistente costituito da più SSD Premium di Azure in striping con gestori di dischi o volumi Windows, spazi di archiviazione Windows, file server di scalabilità orizzontale di Windows, LVM di Linux o MDADM, tutti i dischi che compongono il volume devono essere abilitati o disabilitati per l'acceleratore di scrittura in passaggi distinti. Arrestare la macchina virtuale prima di abilitare o disabilitare l'acceleratore di scrittura in una configurazione di questo tipo.

L'abilitazione dell'acceleratore di scrittura per i dischi del sistema operativo non deve essere necessaria per le configurazioni di VM correlate a SAP.

Restrizioni dell'acceleratore di scrittura

Quando si usa l'acceleratore di scrittura per dischi o dischi rigidi virtuali di Azure, si applicano queste restrizioni:

  • Impostare la memorizzazione nella cache del disco su None o ReadOnly. Altre modalità di memorizzazione nella cache non sono supportate.
  • Gli snapshot sono attualmente supportati solo per i dischi dati abilitati per l'acceleratore di scrittura e non per il disco del sistema operativo. Durante il backup, il servizio Backup di Azure esegue automaticamente il backup e protegge i dischi dati abilitati per l'acceleratore di scrittura collegati alla macchina virtuale.
  • Solo le dimensioni di I/O inferiori (<=64 KiB) stanno prendendo il percorso accelerato. In scenari di carichi di lavoro dove i dati vengono caricati in blocco oppure dove i buffer dei log delle transazioni di diversi sistemi di gestione di database vengono popolati con quantità rilevanti di dati prima di venire salvati in modo permanente nella risorsa di archiviazione, è possibile che l'I/O scritto su disco non usi il percorso dell'acceleratore.

Esistono limiti delle unità SSD Premium di Azure per ogni macchina virtuale che possono essere supportate dall'acceleratore di scrittura. I limiti correnti sono:

SKU di VM Numero di dischi dell'acceleratore di scrittura Numero di operazioni di I/O al secondo dell'acceleratore di scrittura per ogni macchina virtuale
M416ms_v2, M416s_8_v2, M416s_v2 16 20000
M208ms_v2, M208s_v2 8 10000
M192ids_v2, M192idms_v2, M192is_v2, M192ims_v2, 16 20000
M128ms, M128s, M128ds_v2, M128dms_v2, M128s_v2, M128ms_v2 16 20000
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 20000

I limiti delle operazioni di I/O al secondo sono per macchina virtuale, non per disco. Tutti i dischi dell'acceleratore di scrittura condividono lo stesso limite di operazioni di I/O al secondo per ogni macchina virtuale. I dischi collegati non possono superare il limite di operazioni di I/O al secondo dell'acceleratore di scrittura per una macchina virtuale. Ad esempio, anche se i dischi collegati possono eseguire 30.000 operazioni di I/O al secondo, il sistema non consente ai dischi di superare 20.000 operazioni di I/O al secondo per M416ms_v2.

Abilitare l'acceleratore di scrittura con Azure PowerShell

Il modulo Azure PowerShell della versione 5.5.0 include le modifiche apportate ai cmdlet pertinenti per abilitare o disabilitare l'acceleratore di scrittura per unità SSD Premium di Azure specifiche. Per abilitare o distribuire dischi supportati dall'acceleratore di scrittura, sono stati modificati i comandi di PowerShell seguenti ed è stato esteso per accettare un parametro per l'acceleratore di scrittura.

È stato aggiunto il nuovo parametro opzionale -WriteAccelerator ai cmdlet seguenti:

Nota

Se si abilita l'acceleratore di scrittura nei set di scalabilità di macchine virtuali che usano la modalità di orchestrazione flessibile, abilitarlo in ogni singola istanza.

Se non si assegna il parametro, la proprietà viene impostata su false e verranno distribuiti dischi senza supporto dell'acceleratore di scrittura.

È stato aggiunto il nuovo parametro opzionale -OsDiskWriteAccelerator ai cmdlet seguenti:

Se non si specifica il parametro, la proprietà viene impostata su false per impostazione predefinita, restituendo dischi che non usano l'acceleratore di scrittura.

È stato aggiunto il nuovo parametro booleano facoltativo (non annullabile) -OsDiskWriteAccelerator ai cmdlets seguenti:

Specificare $true o $false per gestire il supporto dell'acceleratore di scrittura di Azure con i dischi.

Ecco alcuni esempi di comandi:

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

È possibile creare script per due scenari principali, come illustrato nelle sezioni seguenti.

Aggiungere un nuovo disco con l'acceleratore di scrittura usando PowerShell

È possibile usare questo script per aggiungere un nuovo disco alla macchina virtuale. Il disco creato con questo script usa l'acceleratore di scrittura.

Sostituire myVM, myWAVMs, log001, dimensioni del disco e LunID del disco con i valori appropriati per la specifica distribuzione.

# 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

Abilitare l'acceleratore di scrittura in un disco Azure esistente usando PowerShell

Questo script può essere utilizzato per abilitare l'acceleratore di scrittura per un disco esistente. Sostituire myVM, myWAVMs e test-log001 con i valori appropriati per la specifica distribuzione. Lo script aggiunge l'acceleratore di scrittura a un disco esistente in cui il valore $newstatus è impostato su '$true'. L'uso del valore '$false' disabiliterà l'acceleratore di scrittura per il disco specificato.

#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

L'esecuzione dello script precedente consente di scollegare il disco specificato, abilitare l'acceleratore di scrittura per il disco e quindi di ricollegare il disco.

Abilitare l'acceleratore di scrittura nel portale di Azure

È possibile abilitare l'acceleratore di scrittura tramite il portale, dove si specificano le impostazioni di memorizzazione nella cache del disco:

Schermata della pagina Dischi del portale di Azure che mostra le opzioni di memorizzazione nella cache host per il disco dati impostate su Sola lettura più Acceleratore di scrittura e Nessuna più Acceleratore di scrittura.

Abilitare l'acceleratore di scrittura con il interfaccia della riga di comando di Azure

È possibile usare l'interfaccia della riga di comando di Azure per abilitare l'acceleratore di scrittura.

Impostare i valori LUN del gruppo di risorse, della macchina virtuale, del disco e del disco per gli esempi seguenti:

rgName="myResourceGroup"
vmName="myVM"
diskName="myDataDisk"
diskLun=1
  • Per abilitare l'acceleratore di scrittura in un disco collegato esistente, usare az vm update. Il valore --write-accelerator associa il LUN del disco a true:
az vm update \
  --resource-group $rgName \
  --name $vmName \
  --write-accelerator "${diskLun}=true"
  • Per collegare un disco esistente con l'acceleratore di scrittura abilitato, usare az vm disk attach:
az vm disk attach \
  --resource-group $rgName \
  --vm-name $vmName \
  --name $diskName \
  --enable-write-accelerator
  • Per disabilitare l'acceleratore di scrittura in un disco collegato, impostarne il LUN su false:
az vm update \
  --resource-group $rgName \
  --name $vmName \
  --write-accelerator "${diskLun}=false"

Abilitare l'acceleratore di scrittura con l'API REST

Per eseguire la distribuzione tramite l'API REST di Azure, è necessario installare Azure armclient.

Installare ARMClient

Per eseguire ARMClient, è necessario installarlo tramite Chocolatey. È possibile installarlo tramite cmd.exe o PowerShell. Usare diritti elevati per questi comandi ("Esegui come amministratore").

Usando cmd.exeeseguire il comando seguente:

@"%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 PowerShell, eseguire il comando seguente:

Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

Installare armclient usando il comando seguente in cmd.exe o PowerShell:

choco install armclient

Ottenere la configurazione corrente della macchina virtuale

Per modificare gli attributi della configurazione del disco, recuperare prima di tutto la configurazione della macchina virtuale corrente in un file JSON. Sostituire subscription-ID, resource-group, vm-name e filename.json con i propri valori.

armclient GET /subscriptions/subscription-ID/resourceGroups/resource-group/providers/Microsoft.Compute/virtualMachines/vm-name?api-version=2017-12-01 > filename.json

L'output potrebbe essere simile al seguente:

{
  "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"

Abilitare l'acceleratore di scrittura nella configurazione della macchina virtuale

In filename.jsontrovare il disco dati da aggiornare. Nell'esempio seguente viene aggiunto writeAcceleratorEnabled: true al disco denominato log1 dopo la relativa caching proprietà .

        {
          "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
        }

Applicare e verificare la configurazione della macchina virtuale

Applicare il file JSON aggiornato alla macchina virtuale. Sostituire subscription-ID, resource-group, vm-namee filename.json con gli stessi valori usati per recuperare la configurazione.

armclient PUT /subscriptions/subscription-ID/resourceGroups/resource-group/providers/Microsoft.Compute/virtualMachines/vm-name?api-version=2017-12-01 @filename.json

Nella risposta verificare che il disco dati di destinazione contenga "writeAcceleratorEnabled": true. L'output seguente mostra l'acceleratore di scrittura abilitato per il disco denominato log1.

{
  "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"

Una volta effettuata questa modifica, l'unità dovrebbe essere supportata da Write Accelerator.