启用写入加速器
适用于:✔️ Linux VM ✔️ Windows VM ✔️ 灵活规模集 ✔️ 统一规模集
写入加速器是 M 系列虚拟机 (VM) 的磁盘功能,且只能与 Azure 托管磁盘一起在高级存储上使用。 顾名思义,该功能的目的是改善对 Azure 高级存储的写入操作的 I/O 延迟。 写入加速器非常适合需要更新日志文件,并以高性能方式将现代数据库保存到磁盘的情况。
通常公有云中的 M 系列 VM 可提供写入加速器。
使用写入加速器进行规划
应该对包含事务日志或 DBMS 重做日志的卷使用写入加速器。 建议不要对 DBMS 数据卷使用写入加速器,因为此功能已针对日志磁盘进行了优化。
只能配合 Azure 托管磁盘使用写入加速器。
重要
对 VM 的操作系统磁盘启用写入加速器会重新启动该 VM。
若要针对不属于基于多个磁盘构建的,且使用 Windows 磁盘或卷管理器、Windows 存储空间、Windows 横向扩展文件服务器 (SOFS)、Linux LVM 或 MDADM 的现有 Azure 磁盘启用写入加速器,需要关闭访问该 Azure 磁盘的工作负荷。 必须关闭使用 Azure 磁盘的数据库应用程序。
若要针对基于多个 Azure 高级存储磁盘构建的现有卷,或者使用 Windows 磁盘或卷管理器、Windows 存储空间、Windows 横向扩展文件服务器 (SOFS)、Linux LVM 或 MDADM 的条带化卷启用或禁用写入加速器,必须通过单独的步骤,对构成该卷的所有磁盘启用或禁用写入加速器。 在此类配置中启用或禁用写入加速器之前,请关闭 Azure VM。
对于 SAP 相关的 VM 配置,应该不需要为 OS 磁盘启用写入加速器。
使用写入加速器时的限制
对 Azure 磁盘/VHD 使用写入加速器时,需遵循以下限制:
- 必须将高级磁盘缓存设置为“无”或“只读”。 不支持其他所有缓存模式。
- 目前只有已启用写入加速器的数据磁盘支持快照,OS 磁盘不支持快照。 在备份期间,Azure 备份服务会自动备份并保护已附加到 VM 且已启用写入加速器的数据磁盘。
- 仅较小的 I/O (<=64 KiB) 大小会采用加速路径。 在以下工作负荷情形下,I/O 写入到磁盘的更改不会采用加速路径:数据大容量加载或者数据在持久保存到存储之前,不同 DBMS 的事务日志缓冲区已较大程度上填满。
写入加速器在每个 VM 中支持的 Azure 高级存储 VHD 数目有限制。 当前限制为:
VM SKU | 写入加速器磁盘数 | 每个 VM 的写入加速器磁盘 IOPS |
---|---|---|
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 |
IOPS 限制是针对每个 VM 而不是每个磁盘 。 对于每个 VM,所有写入加速器磁盘具有相同的 IOPS 限制。 附加的磁盘不能超过 VM 的写入加速器 IOPS 限制。 例如,即使附加的磁盘可执行 30,000 IOPS,但对于 M416ms_v2,系统不允许磁盘超过 20,000 IOPS。
在特定磁盘上启用写入加速器
以下几个部分介绍如何在 Azure 高级存储 VHD 上启用写入加速器。
先决条件
目前,使用写入加速器必须满足以下先决条件:
- 要向其应用 Azure 写入加速器的磁盘需是高级存储上的 Azure 托管磁盘。
- 必须使用 M 系列 VM
使用 Azure PowerShell 启用 Azure 写入加速器
Azure PowerShell 模块 5.5.0 版本对相关的 cmdlet 做了更改,以便能够针对特定的 Azure 高级存储磁盘启用或禁用写入加速器。 为了启用或部署写入加速器支持的磁盘,以下 PowerShell 命令已发生更改,并已扩展为接受写入加速器的参数。
已将新的开关参数 -WriteAccelerator 添加到以下 cmdlet:
注意
如果在使用灵活业务流程模式的虚拟机规模集上启用写入加速器,则需要在每个单独的实例上启用它。
不指定该参数会将属性设置为 false,并且会部署不受写入加速器支持的磁盘。
已将新的开关参数 -OsDiskWriteAccelerator 添加到以下 cmdlet:
默认情况下,不指定该参数会将属性设置为 false,并且会返回不利用写入加速器的磁盘。
已将新的可选布尔参数(不可为 null) -OsDiskWriteAccelerator 添加到以下 cmdlet:
指定 $true 或 $false 可以控制磁盘对 Azure 写入加速器的支持。
示例命令如下所示:
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
以下部分了演示了两个主要场景的脚本编写方式。
使用 PowerShell 添加写入加速器支持的新磁盘
可以使用此脚本将新磁盘添加到 VM。 使用此脚本创建的磁盘将使用写入加速器。
将 myVM
、myWAVMs
、log001
、磁盘大小和磁盘的 LunID 替换为适用于特定部署的值。
# 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
使用 PowerShell 在现有 Azure 磁盘上启用写入加速器
可以使用以下脚本在现有磁盘上启用写入加速器。 将 myVM
、myWAVMs
和 test-log001
替换为适用于特定部署的值。 该脚本会将写入加速器添加到 $newstatus 值设置为“$true”的现有磁盘。 使用 $false 值会在给定的磁盘上禁用写入加速器。
#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
注意
执行上述脚本会分离指定的磁盘,针对该磁盘启用写入加速器,然后重新附加该磁盘
使用 Azure 门户启用写入加速器
可以通过指定磁盘缓存设置的门户启用写入加速器:
使用 Azure CLI 启用写入加速器
可以使用 Azure CLI 来启用写入加速器。
若要在现有磁盘上启用写入加速器,请使用 az vm update;若要将 diskName、VMName 和 ResourceGroup 替换为自己的值,可使用以下示例:az vm update -g group1 -n vm1 -write-accelerator 1=true
若要附加启用了写入加速器的磁盘,请使用 az vm disk attach;若要替换为自己的值,可使用以下示例:az vm disk attach -g group1 -vm-name vm1 -disk d1 --enable-write-accelerator
若要禁用写入加速器,请使用 az vm update 将属性设置为 false:az vm update -g group1 -n vm1 -write-accelerator 0=false 1=false
使用 REST API 启用写入加速器
若要通过 Azure REST API 进行部署,需要安装 Azure armclient。
安装 armclient
若要运行 armclient,需要通过 Chocolatey 安装它。 可以通过 cmd.exe 或 PowerShell 来安装它。 使用提升的权限执行这些命令(“以管理员身份运行”)。
使用 cmd.exe 运行以下命令:@"%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"
使用 PowerShell 运行以下命令:Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
现在,可以在 cmd.exe 或 PowerShell 中使用以下命令来安装 armclient:choco install armclient
获取当前的 VM 配置
若要更改磁盘配置的属性,首先需要获取 JSON 文件中的当前配置。 可以执行以下命令来获取当前配置:armclient GET /subscriptions/<<subscription-ID<</resourceGroups/<<ResourceGroup>>/providers/Microsoft.Compute/virtualMachines/<<virtualmachinename>>?api-version=2017-12-01 > <<filename.json>>
将“<<>>”中的术语替换为自己的数据,包括 JSON 文件应使用的文件名。
输出可能如下所示:
{
"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.chinacloudapi.cn/"
}
},
"provisioningState": "Succeeded"
},
"type": "Microsoft.Compute/virtualMachines",
"location": "chinanorth2",
"id": "/subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/resourceGroups/mylittlesap/providers/Microsoft.Compute/virtualMachines/mylittlesapVM",
"name": "mylittlesapVM"
接下来,更新 JSON 文件并在名为“log1”的磁盘上启用写入加速器。 可以通过将此属性添加到 JSON 文件中磁盘缓存条目的后面来完成此步骤。
{
"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
}
然后使用以下命令更新现有部署:armclient PUT /subscriptions/<<subscription-ID<</resourceGroups/<<ResourceGroup>>/providers/Microsoft.Compute/virtualMachines/<<virtualmachinename>>?api-version=2017-12-01 @<<filename.json>>
输出应如下所示。 可以看到,为一个磁盘启用了写入加速器。
{
"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.chinacloudapi.cn/"
}
},
"provisioningState": "Succeeded"
},
"type": "Microsoft.Compute/virtualMachines",
"location": "chinanorth2",
"id": "/subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/resourceGroups/mylittlesap/providers/Microsoft.Compute/virtualMachines/mylittlesapVM",
"name": "mylittlesapVM"
进行这项更改后,写入加速器应会支持该驱动器。