适用于:✔️ 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 参数指定要创建和附加的其他数据磁盘。 若要创建和附加多个磁盘,请使用以空格分隔的磁盘大小列表。 在以下示例中,创建的 VM 具有两个均为 128 GB 的数据磁盘。 因为磁盘大小为 128 GB,所以这两个磁盘都配置为 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 GB 的高级磁盘,并将其附加到上一步创建的 VM 中。
az vm disk attach \
--resource-group myResourceGroupDisk \
--vm-name myVM \
--name myDataDisk \
--size-gb 128 \
--sku Premium_LRS \
--new
准备数据磁盘
将磁盘附加到虚拟机后,需要将操作系统配置为使用该磁盘。 以下示例演示如何手动配置磁盘。 还可使用 cloud-init 自动执行此过程,后面的教程对此进行了介绍。
创建与虚拟机的 SSH 连接。 将示例 IP 地址替换为虚拟机的公共 IP 地址。
ssh azureuser@10.101.10.10
使用 parted 对磁盘进行分区。
sudo parted /dev/sdc --script mklabel gpt mkpart xfspart xfs 0% 100%
使用 mkfs 命令将文件系统写入分区。 使用 partprobe 使 OS 知道所做的更改。
sudo mkfs.xfs /dev/sdc1
sudo partprobe /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 50G 52M 47G 1% /datadrive
若要确保在重启后重新装载驱动器,必须将其添加到 /etc/fstab 文件。 为此,请使用 blkid 实用工具获取磁盘的 UUID。
sudo -i blkid
输出显示驱动器的 UUID,在本例中为 /dev/sdc1。
/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
从快照还原虚拟机
若要演示如何还原虚拟机,请使用 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 disk list 命令找到数据磁盘名称。 此示例将磁盘名称放在名为 datadisk 的变量中,会在下一步中使用该变量。
datadisk=$(az disk list \
-g myResourceGroupDisk \
--query "[?contains(name,'myVM')].[id]" \
-o tsv)
使用 az vm disk attach 命令附加磁盘。
az vm disk attach \
--resource-group myResourceGroupDisk \
--vm-name myVM \
--name $datadisk
后续步骤
本教程中介绍了以下 VM 磁盘主题:
- OS 磁盘和临时磁盘
- 数据磁盘
- 磁盘类型和性能选项
- 磁盘性能
- 添加和准备数据磁盘
- 磁盘快照
转到下一教程,了解如何自动配置 VM。