练习 - 使用 PowerShell 管理缓存设置
在上一篇练习中,我们使用 Azure 门户执行了以下任务:
- 查看 OS 磁盘缓存状态。
- 更改 OS 磁盘的缓存设置。
- 将数据磁盘添加到 VM。
- 更改新数据磁盘上的缓存类型。
让我们使用 Azure PowerShell 来练习这些操作。
备注
我们将使用 Azure PowerShell,但你也可以使用 Azure CLI,它提供与基于控制台的工具类似的功能。 它可以在 macOS、Linux 和 Windows 上运行。 如果你有兴趣详细了解 Azure CLI,请查看“使用 Azure CLI 管理虚拟机”模块。
我们将使用在上一个练习中创建的 VM。 本实验室的操作假设:
- 上述 VM 存在并且名为“fotoshareVM”。
- 上述 VM 位于名为
[沙盒资源组名称] 的资源组中。
如果使用了一组不同的名称,请将这些值替换为你自己的名称。
下面是上一篇练习中创建的 VM 磁盘的当前状态:
我们已使用门户设置了 OS 磁盘和数据磁盘的“主机缓存”字段。 在执行以下步骤的过程中,请记住此初始状态。
设置一些变量
首先,我们存储一些资源名称供稍后使用。
在右侧的 Azure Cloud Shell 中运行以下 PowerShell 命令:
注意
在尝试使用这些命令之前,请将 Cloud Shell 会话切换到“PowerShell”(如果尚未执行)。
$myRgName = "<rgn>[sandbox resource group name]</rgn>"
$myVMName = "fotoshareVM"
提示
如果 Cloud Shell 会话超时,则必须重新设置这些变量。因此,如果可能,请在单个会话中演练整个实验室。
获取有关 VM 的信息
运行以下命令来获取 VM 的属性:
$myVM = Get-AzVM -ResourceGroupName $myRgName -VMName $myVmName
让我们将响应存储在
$myVM
变量中。 可以将输出通过管道传递到select-object
cmdlet 以将显示筛选到特定属性:$myVM | select-object -property ResourceGroupName, Name, Type, Location
会得到类似以下输出的内容:
ResourceGroupName Name Type Location ----------------- ---- ---- -------- <rgn>[sandbox resource group name]</rgn> fotoshareVM Microsoft.Compute/virtualMachines eastus
查看 OS 磁盘缓存状态
通过运行以下命令,可以通过 StorageProfile
对象检查缓存设置:
$myVM.StorageProfile.OsDisk.Caching
ReadOnly
让我们将此值改回为 OS 磁盘的默认值,即 ReadWrite。
更改 OS 磁盘的缓存设置
通过运行以下命令,可以使用同一个
StorageProfile
对象来设置缓存类型的值:$myVM.StorageProfile.OsDisk.Caching = "ReadWrite"
此命令的运行速度较快,这可以判断出它是在本地执行操作。 此命令只更改
myVM
对象中的属性。 如果通过使用Get-AzVM
cmdlet 重新分配$myVM
变量来刷新该变量,则 VM 上的缓存值不会更改。若要在 VM 本身中进行更改,请通过运行以下命令来调用
Update-AzVM
:Update-AzVM -ResourceGroupName $myRGName -VM $myVM
请注意,此调用需要一段时间才能完成,因为我们需要更新实际的 VM,并且 Azure 需要重启 VM 以进行更改。
RequestId IsSuccessStatusCode StatusCode ReasonPhrase --------- ------------------- ---------- ------------ True OK OK
如果通过运行以下命令来再次刷新
$myVM
变量,则会看到该对象发生了更改。 如果在门户中查看磁盘,你也会看到发生了更改。$myVM = Get-AzVM -ResourceGroupName $myRgName -VMName $myVmName $myVM.StorageProfile.OsDisk.Caching
ReadWrite
列出数据磁盘信息
若要查看 VM 包含哪些数据磁盘,请运行以下命令:
$myVM.StorageProfile.DataDisks
Name : fotoshareVM-data
DiskSizeGB : 4
Lun : 0
Caching : ReadOnly
CreateOption : Attach
SourceImage :
VirtualHardDisk :
目前只有一个数据磁盘。 Lun
字段非常重要。 它是唯一的逻辑单元号 (LUN)。 添加另一个数据磁盘时,需要为它指定唯一的 Lun
值。
将新数据磁盘添加到 VM
为方便起见,让我们通过运行以下命令来存储新磁盘名称:
$newDiskName = "fotoshareVM-data2"
运行以下
Add-AzVMDataDisk
命令来定义空的 1 GB 的新数据磁盘:Add-AzVMDataDisk -VM $myVM -Name $newDiskName -LUN 1 -DiskSizeinGB 1 -CreateOption Empty
响应如下所示:
ResourceGroupName : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx Id : /subscriptions/xxxxxxxx-xxxx-xxxx-xxx-xxxxxxx/resourceGroups/<rgn>[sandbox resource group name]</rgn>/providers/Microsoft.Compute/virtualMachines/fotoshareVM VmId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx Name : fotoshareVM Type : Microsoft.Compute/virtualMachines Location : eastus Tags : {} DiagnosticsProfile : {BootDiagnostics} HardwareProfile : {VmSize} NetworkProfile : {NetworkInterfaces} OSProfile : {ComputerName, AdminUsername, WindowsConfiguration, Secrets} ProvisioningState : Succeeded StorageProfile : {ImageReference, OsDisk, DataDisks}
我们为该磁盘指定了
Lun
值1
,因为该值未被使用。 我们定义了要创建的磁盘,因此现在可以运行Update-AzVM
命令来做出实际更改:Update-AzVM -ResourceGroupName $myRGName -VM $myVM
让我们通过运行以下命令来再次查看数据磁盘的信息:
$myVM.StorageProfile.DataDisks
Name : fotoshareVM-data DiskSizeGB : 4 Lun : 0 Caching : ReadOnly CreateOption : Attach SourceImage : VirtualHardDisk : Name : fotoshareVM-data2 DiskSizeGB : 1 Lun : 1 Caching : None CreateOption : Empty SourceImage : VirtualHardDisk :
现在有两个磁盘。 新磁盘的 Lun
为 1
,并且 Caching
的默认值为 None
。 让我们更改此值。
更改新数据磁盘的缓存设置
通过运行
Set-AzVMDataDisk
命令来修改虚拟机数据磁盘的属性,如下所示:Set-AzVMDataDisk -VM $myVM -Lun "1" -Caching ReadWrite
像往常一样,通过运行
Update-AzVM
命令来提交更改:Update-AzVM -ResourceGroupName $myRGName -VM $myVM
下面是完成本练习后的门户视图。 VM 现在包含两个数据磁盘,并且我们已调整所有的“主机缓存”设置。 我们利用 Azure PowerShell 的强大功能,仅通过几个命令就完成了所有这些操作。