练习 - 使用 PowerShell 管理缓存设置

已完成

在上一篇练习中,我们使用 Azure 门户执行了以下任务:

  • 查看 OS 磁盘缓存状态。
  • 更改 OS 磁盘的缓存设置。
  • 将数据磁盘添加到 VM。
  • 更改新数据磁盘上的缓存类型。

让我们使用 Azure PowerShell 来练习这些操作。

备注

我们将使用 Azure PowerShell,但你也可以使用 Azure CLI,它提供与基于控制台的工具类似的功能。 它可以在 macOS、Linux 和 Windows 上运行。 如果你有兴趣详细了解 Azure CLI,请查看“使用 Azure CLI 管理虚拟机”模块。

我们将使用在上一个练习中创建的 VM。 本实验室的操作假设:

  • 上述 VM 存在并且名为“fotoshareVM”。
  • 上述 VM 位于名为 [沙盒资源组名称] 的资源组中。

如果使用了一组不同的名称,请将这些值替换为你自己的名称。

下面是上一篇练习中创建的 VM 磁盘的当前状态:

Screenshot of our OS and data disks, both set to Read-only caching.

我们已使用门户设置了 OS 磁盘和数据磁盘的“主机缓存”字段。 在执行以下步骤的过程中,请记住此初始状态。

设置一些变量

首先,我们存储一些资源名称供稍后使用。

在右侧的 Azure Cloud Shell 中运行以下 PowerShell 命令:

注意

在尝试使用这些命令之前,请将 Cloud Shell 会话切换到“PowerShell”(如果尚未执行)。

$myRgName = "<rgn>[sandbox resource group name]</rgn>"
$myVMName = "fotoshareVM"

提示

如果 Cloud Shell 会话超时,则必须重新设置这些变量。因此,如果可能,请在单个会话中演练整个实验室。

获取有关 VM 的信息

  1. 运行以下命令来获取 VM 的属性:

    $myVM = Get-AzVM -ResourceGroupName $myRgName -VMName $myVmName
    
  2. 让我们将响应存储在 $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 磁盘的缓存设置

  1. 通过运行以下命令,可以使用同一个 StorageProfile 对象来设置缓存类型的值:

    $myVM.StorageProfile.OsDisk.Caching = "ReadWrite"
    

    此命令的运行速度较快,这可以判断出它是在本地执行操作。 此命令只更改 myVM 对象中的属性。 如果通过使用 Get-AzVM cmdlet 重新分配 $myVM 变量来刷新该变量,则 VM 上的缓存值不会更改。

  2. 若要在 VM 本身中进行更改,请通过运行以下命令来调用 Update-AzVM

    Update-AzVM -ResourceGroupName $myRGName -VM $myVM
    

    请注意,此调用需要一段时间才能完成,因为我们需要更新实际的 VM,并且 Azure 需要重启 VM 以进行更改。

    RequestId IsSuccessStatusCode StatusCode ReasonPhrase
    --------- ------------------- ---------- ------------
                             True         OK OK
    
  3. 如果通过运行以下命令来再次刷新 $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

  1. 为方便起见,让我们通过运行以下命令来存储新磁盘名称:

    $newDiskName = "fotoshareVM-data2"
    
  2. 运行以下 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}
    
  3. 我们为该磁盘指定了 Lun1,因为该值未被使用。 我们定义了要创建的磁盘,因此现在可以运行 Update-AzVM 命令来做出实际更改:

    Update-AzVM -ResourceGroupName $myRGName -VM $myVM
    
  4. 让我们通过运行以下命令来再次查看数据磁盘的信息:

    $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 :
    

现在有两个磁盘。 新磁盘的 Lun1,并且 Caching 的默认值为 None。 让我们更改此值。

更改新数据磁盘的缓存设置

  1. 通过运行 Set-AzVMDataDisk 命令来修改虚拟机数据磁盘的属性,如下所示:

    Set-AzVMDataDisk -VM $myVM -Lun "1" -Caching ReadWrite
    
  2. 像往常一样,通过运行 Update-AzVM 命令来提交更改:

    Update-AzVM -ResourceGroupName $myRGName -VM $myVM
    

下面是完成本练习后的门户视图。 VM 现在包含两个数据磁盘,并且我们已调整所有的“主机缓存”设置。 我们利用 Azure PowerShell 的强大功能,仅通过几个命令就完成了所有这些操作。

Screenshot of the Azure portal showing the Disks section of our VM pane with two data disks.