教程 - 使用 Azure CLI 管理 Azure 磁盘

适用于:✔️ Linux VM ✔️ 灵活规模集

Azure 虚拟机 (VM) 使用磁盘来存储操作系统、应用程序和数据。 创建 VM 时,请务必选择适用于所需工作负荷的磁盘大小和配置。 本教程演示如何部署和管理 VM 磁盘。 学习内容:

  • OS 磁盘和临时磁盘
  • 数据磁盘
  • 磁盘类型和性能选项
  • 磁盘性能
  • 添加和准备数据磁盘
  • 磁盘快照

默认 Azure 磁盘

创建 Azure 虚拟机后,将自动向此虚拟机附加两个磁盘。

操作系统磁盘 - 操作系统 (OS)磁盘托管 VM 操作系统,并且默认最多可以有 4,095 GIB,但许多操作系统都使用 主启动记录(MBR) 进行分区。 MBR 将可用大小限制为 2 TiB。 如果需要超过 2 TiB,请创建并附加数据磁盘并将其用于数据存储。 设备名称因 VM 生成和磁盘控制器类型而异,因此不要依赖于 /dev/sda 等固定路径。 OS 磁盘缓存针对 OS 性能进行了优化,因此不要将应用程序数据存储在 OS 磁盘上。 使用数据磁盘进行应用程序和数据存储。

临时磁盘 - 临时存储使用与虚拟机位于同一 Azure 主机上的本地存储。 根据 VM 大小和生成,此存储可能显示为临时磁盘或本地 NVMe 磁盘。 这是高性能的,但非持久性。 如果 VM 移动到新主机,则会删除临时存储上的数据。 可用大小取决于 VM 大小。

数据磁盘

若要安装应用程序和存储数据,可添加额外的数据磁盘。 在任何需要持久和灵敏数据存储的情况下,都应使用数据磁盘。 虚拟机的大小决定可附加到 VM 的数据磁盘数。

VM 磁盘类型

Azure托管磁盘提供五种磁盘类型:

一般情况下,生产工作负载使用高级 SSD v2 或高级 SSD,开发/测试以及对性能不太敏感的工作负载使用标准 SSD,而 I/O 密集型数据工作负载则使用超级磁盘。 超级磁盘和高级 SSD v2 是仅限数据磁盘的选项,不能用作 OS 磁盘。 有关详细限制、区域可用性和大小调整指南,请参阅Azure托管磁盘类型。

启动 Azure CLI

可以在本地电脑上使用 Azure 本地 Shell 运行本文中的步骤。

注意

在可以在由世纪互联运营的 Microsoft Azure 中使用 Azure CLI 之前,请先运行 az cloud set -n AzureChinaCloud 来更改云环境。 若要切换回 Azure 公有云,请再次运行 az cloud set -n AzureCloud。

创建并附加磁盘

可在创建 VM 时创建并附加数据磁盘,或将数据磁盘附加到现有 VM。

在 VM 创建时附加磁盘

使用“az group create”命令创建资源组。

az group create --name myResourceGroupDisk --location chinaeast2

使用 az vm create 命令创建 VM。 以下示例创建名为 myVM 的 VM,添加名为 azureuser 的用户帐户,并生成 SSH 密钥(如果它们尚不存在)。 该 --data-disk-sizes-gb 参数指定要创建和附加的额外数据磁盘。 若要创建和附加多个磁盘,请使用以空格分隔的磁盘大小列表。 在以下示例中,创建包含两个数据磁盘(两个数据磁盘均为 128 GiB)的 VM。 由于磁盘为 128 GiB,因此将这两个磁盘配置为 P10 磁盘,每个磁盘最多提供 500 IOPS。

az vm create \
  --resource-group myResourceGroupDisk \
  --name myVM \
  --image Ubuntu2204 \
  --size Standard_DS2_v2 \
  --admin-username azureuser \
  --generate-ssh-keys \
  --data-disk-sizes-gb 128 128

将磁盘附加到现有 VM

若要创建新磁盘并将其附加到现有虚拟机,请使用 az vm disk attach 命令。 以下示例创建一个 128-GiB 高级磁盘,并将其附加到上一步中创建的 VM。

az vm disk attach \
    --resource-group myResourceGroupDisk \
    --vm-name myVM \
    --name myDataDisk \
    --size-gb 128 \
    --sku Premium_LRS \
    --new

在 Linux 中准备数据磁盘

将磁盘附加到虚拟机后,将操作系统配置为使用磁盘。 以下示例手动配置创建 VM 时附加的第一个 128 GiB 数据磁盘。 VM 的磁盘控制器确定 Linux 如何公开磁盘。 还可以使用 cloud-init 自动执行此过程,本教程将介绍此 流程。

创建与虚拟机的 SSH 连接。 将示例 IP 地址替换为虚拟机的公共 IP 地址。

ssh azureuser@10.101.10.10

在格式化数据磁盘之前,请验证是否已确定正确的数据磁盘。 格式化错误的磁盘会导致数据丢失。

在具有 SCSI 控制器的 VM 上,用于 lsblk 标识数据磁盘。 以下示例使用 /dev/sdc。 用您的数据磁盘的设备名称替换 sdc。

lsblk -o NAME,HCTL,SIZE,MOUNTPOINT | grep -i "sd"

使用 parted 对磁盘进行分区,然后使用 partprobe 使操作系统识别新的分区表。

sudo parted /dev/sdc --script mklabel gpt mkpart xfspart xfs 0% 100%
sudo partprobe /dev/sdc

使用 mkfs 命令将文件系统写入分区。

sudo mkfs.xfs /dev/sdc1

装载新磁盘,使其在操作系统中可访问。

sudo mkdir /datadrive && sudo mount /dev/sdc1 /datadrive

现在可以通过 /datadrive 装载点访问磁盘,可运行 df -h 命令对此进行验证。

df -h | grep -i "sd"

输出显示新驱动器装载在 /datadrive 上。

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        29G  2.0G   27G   7% /
/dev/sda15      105M  3.6M  101M   4% /boot/efi
/dev/sdb1        14G   41M   13G   1% /mnt
/dev/sdc1       128G   52M  128G   1% /datadrive

若要确保在重启后重新装载驱动器,必须将其添加到 /etc/fstab 文件。 为此,请使用 blkid 实用工具获取磁盘的 UUID。

sudo -i blkid

输出显示驱动器的 UUID。 在具有 SCSI 控制器的 VM 上,分区可能显示为 /dev/sdc1。 在具有 NVMe 控制器的 VM 上,它可能显示为 /dev/nvme0n2p1。

/dev/sdc1: UUID="33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e" TYPE="xfs"

注意

错误地编辑 /etc/fstab 文件可能会导致系统无法引导。 如果没有把握,请参考分发的文档来获取有关如何正确编辑该文件的信息。 另外,建议在编辑前备份 /etc/fstab 文件。

在文本编辑器中打开 /etc/fstab 文件,如下所示:

sudo nano /etc/fstab

向 /etc/fstab 文件中添加如下一行,并将 UUID 值替换为你自己的值。

UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e   /datadrive  xfs    defaults,nofail   1  2

编辑完文件后,使用 Ctrl+O 写入文件,然后使用 Ctrl+X 退出编辑器。

配置磁盘后,请关闭 SSH 会话。

exit

创建磁盘快照

创建磁盘快照时,Azure 会创建磁盘在该时间点的只读副本。 Azure VM 快照可用于快速保存配置更改前 VM 所处的状态。 如果出现问题或错误,可以使用快照还原 VM。 当 VM 有多个磁盘时,会单独创建每个磁盘的快照。 若要创建应用程序一致性备份,请考虑在创建磁盘快照之前停止 VM。 或者,使用 Azure 备份,在 VM 运行时支持自动备份。

创建快照

创建快照之前,需要磁盘的 ID 或名称。 使用 az vm show 显示磁盘 ID。 在此示例中,磁盘 ID 存储在变量中,以便能够在稍后的步骤中使用。

osdiskid=$(az vm show \
   -g myResourceGroupDisk \
   -n myVM \
   --query "storageProfile.osDisk.managedDisk.id" \
   -o tsv)

有了 ID 后,请使用 az snapshot create 创建该磁盘的快照。

az snapshot create \
    --resource-group myResourceGroupDisk \
    --source "$osdiskid" \
    --name osDisk-backup

从快照创建磁盘

然后可以使用 az disk create 将此快照转换为可用于重新创建虚拟机的磁盘。

az disk create \
   --resource-group myResourceGroupDisk \
   --name mySnapshotDisk \
   --source osDisk-backup

从快照还原虚拟机

删除 VM 之前,请使用 az vm show 将该 VM 的所有数据磁盘的资源 ID 存储到 dataDiskIds 变量中。

dataDiskIds=$(az vm show \
   --resource-group myResourceGroupDisk \
   --name myVM \
   --query "storageProfile.dataDisks[].managedDisk.id" \
   --output tsv)

若要演示如何还原虚拟机,请使用 az vm delete 删除现有虚拟机。

az vm delete \
--resource-group myResourceGroupDisk \
--name myVM

从快照磁盘创建新虚拟机。

az vm create \
    --resource-group myResourceGroupDisk \
    --name myVM \
    --attach-os-disk mySnapshotDisk \
    --os-type linux

重新附加数据磁盘

需要将所有数据磁盘重新附加到虚拟机。

使用 az vm disk attach 和每个资源 ID 重新附加所有数据磁盘。

for dataDiskId in $dataDiskIds; do
   az vm disk attach \
      --resource-group myResourceGroupDisk \
      --vm-name myVM \
      --name "$dataDiskId"
done

后续步骤

本教程中介绍了以下 VM 磁盘主题:

  • OS 磁盘和临时磁盘
  • 数据磁盘
  • 磁盘类型和性能选项
  • 磁盘性能
  • 添加和准备数据磁盘
  • 磁盘快照

转到下一教程,了解如何自动配置 VM。