练习 - 调整 VM 磁盘的大小

已完成

假设你低估了某些所上传文件的大小,并且你的上传磁盘面临空间不足的问题。 决定让空间从 64 GB 翻倍为 128 GB。

你将在此练习在前面的单元中了解的过程。

重设数据磁盘大小

若要重设磁盘大小,需要磁盘的 ID 或名称。 在本例中,你已知道名称为“uploadDataDisk1”。 但如果你不知道,或者该磁盘是由其他人创建的,可运行 az disk list 来查找其名称。

  1. 运行 az disk list 命令,显示资源组中的托管磁盘列表。 如果同一资源组中有多个 VM,则此列表可能包含其他磁盘。

    az disk list \
      --query '[*].{Name:name,Gb:diskSizeGb,Tier:sku.tier}' \
      --output table
    

    将看到名为“uploadDataDisk1”的磁盘。

    Name                                                        Tier
    ----------------------------------------------------------  -------
    support-web-vm01_OsDisk_1_a7c59897dfda42dfab2edf4933e713a6  Premium
    uploadDataDisk1                                             Premium
    
  2. 运行以下 az vm deallocate 命令以停止并解除分配 VM。 此命令不会删除 VM,但会使其处于你可以修改虚拟磁盘的状态。

    az vm deallocate --name support-web-vm01
    
  3. 运行 az disk update 命令,将磁盘大小重设为 128 GB。

    az disk update --name uploadDataDisk1 --size-gb 128
    
  4. 运行 az vm start 命令以重启 VM。

    az vm start --name support-web-vm01
    

    但我们尚未完成。 VM 上的操作系统尚不能使用额外空间。 我们将在下一部分中处理这种情况。

扩展磁盘分区

最后一步是告知 OS 有关可用空间的情况。 就像此前完成的分区和格式设置步骤一样,此过程与扩展物理本地磁盘时所遵循的过程相同。

  1. 尽管可为 VM 保留固定的公共 IP 地址,但默认情况下,VM 会在取消分配并重新启动时接收新的公共 IP 地址。 运行以下 az vm show 命令以使用 VM 的新公共 IP 地址更新 Bash 变量。

    ipaddress=$(az vm show --name support-web-vm01 -d --query [publicIps] -o tsv)
    
  2. 如同之前的操作,通过 SSH 在 VM 上运行 lsblk 以了解其当前状态。

    ssh azureuser@$ipaddress lsblk
    

    可看到 sdc/sdc1 磁盘的大小仍为 64 GB。

    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sdb       8:16   0    7G  0 disk 
    └─sdb1    8:17   0    7G  0 part /mnt
    sdc       8:32   0  128G  0 disk 
    └─sdc1    8:33   0   64G  0 part /uploads
    sda       8:0    0   30G  0 disk 
    ├─sda14   8:14   0    4M  0 part 
    ├─sda15   8:15   0  106M  0 part /boot/efi
    └─sda1    8:1    0 29.9G  0 part /
    
  3. 与先前初始化磁盘的操作类似,请运行以下 az vm extension set 命令,以通过执行我们为提供帮助而创建的预制 Bash 脚本,告知 VM 上的 OS 有关新可用空间的情况。

    az vm extension set \
      --vm-name support-web-vm01 \
      --name customScript \
      --publisher Microsoft.Azure.Extensions \
      --settings '{"fileUris":["https://raw.githubusercontent.com/MicrosoftDocs/mslearn-add-and-size-disks-in-azure-virtual-machines/master/resize-data-disk.sh"]}' \
      --protected-settings '{"commandToExecute": "./resize-data-disk.sh"}'
    

    当命令运行时,如果愿意可在单独的浏览器选项卡中检查 Bash 脚本

    概括而言,该脚本:

    • 卸载磁盘 /dev/sdc1
    • 将分区 1 的大小重设为 128 GB。
    • 验证分区一致性。
    • 重设文件系统的大小。
    • 将驱动器 /dev/sdc1 重新装载回装入点 /uploads
  4. 若要验证配置,请再次通过 SSH 在 VM 上运行 lsblk

    ssh azureuser@$ipaddress lsblk
    

    这次将看到 sdc/sdc1 磁盘已扩展以适应磁盘增加后的大小。

    NAME    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    sdb       8:16   0     7G  0 disk 
    └─sdb1    8:17   0     7G  0 part /mnt
    sdc       8:32   0   128G  0 disk 
    └─sdc1    8:33   0 119.2G  0 part /uploads
    sda       8:0    0    30G  0 disk 
    ├─sda14   8:14   0     4M  0 part 
    ├─sda15   8:15   0   106M  0 part /boot/efi
    └─sda1    8:1    0  29.9G  0 part /
    
  5. 最后的验证步骤是,通过 SSH 在 VM 上运行操作系统的 df 实用程序,证明操作系统可以正确查看它。

    ssh azureuser@$ipaddress df -h
    

    将看到驱动器的大小为 128 GB。

    Filesystem      Size  Used Avail Use% Mounted on
    udev            1.7G     0  1.7G   0% /dev
    tmpfs           345M  9.3M  335M   3% /run
    /dev/sda1        29G  1.9G   28G   7% /
    tmpfs           1.7G     0  1.7G   0% /dev/shm
    tmpfs           5.0M     0  5.0M   0% /run/lock
    tmpfs           1.7G     0  1.7G   0% /sys/fs/cgroup
    /dev/sda15      105M  3.2M  102M   3% /boot/efi
    /dev/sdb1       6.8G   16M  6.4G   1% /mnt
    /dev/sdc1       118G   60M  112G   1% /uploads
    tmpfs           345M     0  345M   0% /run/user/1000