首页 > 解决方案 > 使用 Ansible playbook 在 Linux VM 上可靠地定位正确的 Azure 托管磁盘

问题描述

如何使用 Ansible playbook 在 Linux VM 上可靠地分区和挂载 Azure 托管磁盘的文件系统?

我可以创建一个 Azure 托管磁盘azure_rm_manageddisk并将其分配给 VM 实例。当我尝试使用磁盘时,我的问题就开始了。我只是不知道如何可靠地针对正确的托管磁盘进行分区和文件系统安装。

似乎也azure_rm_manageddisk没有返回可以从操作系统端引用的磁盘的可靠、明确的 id。azure_rm_manageddisk_info

我认为磁盘甚至blkid在分区之前都不会出现。

微软已经记录了

默认情况下,当你创建 VM 时,Azure 会为你提供一个 OS 磁盘 (/dev/sda) 和一个临时磁盘 (/dev/sdb)。您添加的所有其他磁盘都显示为 /dev/sdc、/dev/sdd、/dev/sde 等。

(来源:https ://docs.microsoft.com/en-us/azure/virtual-machines/linux/optimization )

但这似乎并不可靠。我想我在创建后看到我的 VM 的设置与此不同,并且在重新启动后肯定会发生变化。所以不相信/dev/sdc我的看法。如果块设备文件不稳定,重新运行剧本可能会造成各种破坏。实际上,我已经设法使我的根分区在/media/my_data_disk_mount.

这只是我必须手动处理的事情吗?似乎很奇怪。这是很常见的事情。

还有/dev/disk/azure/resource例如,但这似乎也导致了混乱的结果。

(来源:https ://docs.microsoft.com/en-us/azure/virtual-machines/troubleshooting/troubleshoot-device-names-problems )

也许与 LUN 编号有关?

标签: linuxazureansibleazure-managed-disk

解决方案


根据消息,您希望找到正确的磁盘并获取要挂载的 UUID。你认为是对的。你可以通过磁盘的LUN来判断你想要的是哪一个。您可以使用该命令tree /dev/disk/azure,它显示如下:

在此处输入图像描述

可以看到磁盘/dev/sdc使用的是 lun1。您还可以在 Azure 门户中找到正在使用 lun1 的磁盘。然后您可以sudo blkid在初始化磁盘后使用该命令获取 UUID:

在此处输入图像描述


推荐阅读