将磁盘挂接到使用 Linux 操作系统的虚拟机 (VM) 时,Google Cloud 会自动为该磁盘创建符号链接(符号链接)。如需访问 Linux 虚拟机中的永久性磁盘卷或本地 SSD 磁盘,请使用符号链接。这些符号链接是可预测的,并且在重新启动后保持不变。Google Cloud 会为挂接到 /dev/disk/by-id
中虚拟机的所有磁盘创建符号链接。
本文档介绍如何识别挂接到虚拟机的磁盘的正确符号链接。
限制
如果您将本地 SSD 磁盘挂接到 C3 或 C3D 虚拟机,则可能需要执行额外步骤来为本地 SSD 磁盘创建符号链接。仅当您使用 Google Cloud 提供的以下任何公共映像时,才需要执行这些步骤:
- SLES 15 SP4 和 SP5
- SLES 12 SP4
这些额外步骤仅适用于本地 SSD 磁盘:您无需对永久性磁盘卷执行任何操作。
上一个列表中的公共映像没有 /dev/disk/by-id/google-local-nvme-ssd-N
形式的本地 SSD 符号链接。这些映像上仅存在使用设备信息的符号链接,例如 nvme-nvme.1ae0-6e766d655f636172642d7064-6e766d655f636172642d7064-00000001
。
如需获取这些 Linux 映像的易用符号链接,您必须更新 udev
规则并向实例添加脚本。
如需了解如何更新 udev
规则以支持 C3 和 C3D 上本地 SSD 磁盘的符号链接,请参阅排查 NVMe 磁盘问题。
除了使用符号链接外,您还可以使用虚拟机设备名称(例如 /dev/nvme0n1
)访问虚拟机上的本地 SSD 磁盘。
符号链接的格式
在虚拟机创建期间或创建之后,当磁盘挂接到虚拟机时,系统会在 /dev/disk/by-id
中创建符号链接。符号链接名称的创建方式如下:
Persistent Disk 和 Google Cloud Hyperdisk
符号链接是使用以下规则创建的:
- 如果您在创建磁盘时指定了自定义设备名称:
google-DEVICE_NAME
- 如果您在创建磁盘时未指定自定义设备名称:
- 启动磁盘:
google-VM_NAME
- 非启动磁盘:
google-DISK_NAME
- 启动磁盘:
格式化磁盘后,符号链接会附加 -partN
,其中 N 是分区编号,例如 google-data-disk-part1
。
本地 SSD 磁盘数量
本地 SSD 符号链接的格式有所不同,具体取决于磁盘接口。
- SCSI:符号链接名为
google-local-ssd-N
,其中 N 是本地 SSD 磁盘编号(从 0 开始)。 - NVMe:符号链接名为
google-local-nvme-ssd-N
,其中 N 是 SSD 编号(从 0 开始)。
设置本地 SSD 磁盘的格式后,符号链接会附加 -partN
,其中 N 是分区编号,例如 google-local-nvme-ssd-0-part1
。
设备符号链接
Compute Engine 会根据磁盘类型和接口在目录中创建其他符号链接,例如 scsi-0Google_PersistentDisk_DEVICE_NAME
。这些链接的作用与上文提到的符号链接的作用相同。
示例 1:挂接了本地 SSD 的 C3 虚拟机
假设您创建了一个具有以下属性的虚拟机:
- 虚拟机名称:
instance-1
- 机器系列:C3
- 磁盘接口类型:永久性磁盘和本地 SSD 的 NVMe
- 额外磁盘:无
- 已挂接的本地 SSD 磁盘数:2
- 使用的自定义设备名称:无
Compute Engine 为该虚拟机创建以下符号链接:
ls -l /dev/disk/by-id/google-*
google-instance-1 -> ../../nvme2n1
google-instance-1-part1 -> ../../nvme2n1p1
google-instance-1-part14 -> ../../nvme2n1p14
google-instance-1-part15 -> ../../nvme2n1p15
google-local-nvme-ssd-0 -> ../../nvme0n1
google-local-nvme-ssd-1 -> ../../nvme1n1
在此示例中,永久性磁盘启动磁盘符号链接为 google-instance-1
,它基于虚拟机名称。该启动磁盘已格式化,并且装有操作系统。启动磁盘包含 3 个分区:part1、part14 和 part 15。挂接的本地 SSD 磁盘未格式化,因此仅为每个本地 SSD 磁盘创建一个符号链接。
示例 2:挂接了 NVMe 本地 SSD 和额外的永久性磁盘的 N2 虚拟机
假设您创建了一个具有以下属性的虚拟机:
- 虚拟机名称:
instance-2
- 机器系列:N2
- 磁盘接口类型:SCSI 用于永久性磁盘,NVMe 用于本地 SSD
- 额外磁盘:1 个名为
extra-scsi-disk
的永久性磁盘 - 已挂接的本地 SSD 磁盘数:2
- 使用的自定义设备名称:无
系统将为该虚拟机创建以下符号链接:
ls -l /dev/disk/by-id/google-*
google-extra-scsi-disk -> ../../sdb
google-instance-2 -> ../../sda
google-instance-2-part1 -> ../../sda1
google-instance-2-part14 -> ../../sda14
google-instance-2-part15 -> ../../sda15
google-local-nvme-ssd-0 -> ../../nvme0n1
google-local-nvme-ssd-0-part1 -> ../../nvme0n1p1
google-local-nvme-ssd-1 -> ../../nvme0n2
在此示例中,永久性磁盘启动磁盘符号链接为 google-instance-2
,它基于虚拟机名称。该启动磁盘已格式化,并且装有操作系统映像。启动磁盘包含 3 个分区:part1、part14 和 part 15。第一个本地 SSD 磁盘经过分区,具有一个分区,因此会为该磁盘分区创建一个额外的符号链接。对于添加到虚拟机的额外的永久性磁盘,其符号链接为 google-extra-scsi-disk
,它基于磁盘名称。额外的永久性磁盘和第二个本地 SSD 磁盘未格式化,因此仅为这些磁盘列出一个符号链接。
后续步骤
- 了解如何使用永久性设备名称。
- 在 Linux 或 Windows 虚拟机上格式化并装载新磁盘。
- 了解如何对永久性磁盘的性能进行基准化分析。