GCE 在 /dev/disk/by-id 下随机更改附加安装磁盘的磁盘名称?
GCE randomly changing disk names for additional mounted disks under /dev/disk/by-id?
我大约每月一次看到一个明显的随机问题,这让我很头疼。Google 似乎正在更改其他磁盘(到根)的命名约定以及它们在 [=12 下的显示方式=] 在启动时。
根磁盘始终可用 /dev/disk/by-id/google-persistent-disk-0
大多数情况下,我们安装的单个额外磁盘显示为 /dev/disk/by-id/google-persistent-disk-1
我们没有给出这个名称,但我们编写了我们的供应脚本来期望这个约定。
有时,在重新启动 VM
时,我们的启动脚本无法执行安全挂载:
/usr/share/google/safe_format_and_mount -m "mkfs.ext4 -F" /dev/disk/by-id/google-persistent-disk-1 /mountpoint
它们失败了,因为某些东西改变了磁盘的名称。它不再是 /dev/disk/by-id/google-persistent-disk-1
,现在是 /dev/disk/by-id/google
-{我们创建它时给它起的名字}
上次我更新我们的启动脚本以使用这个新的命名约定时,它在一小时后切换回来。什么鬼?
感谢任何线索。谢谢。
您无法控制的命名约定是不稳定的 API。您不应该编写您的管理工具来假设此约定永远不会更改——如您所见,它正在更改的原因与您无关,而且它很可能会再次更改。如果你需要访问系统上的磁盘列表,你应该通过 udev 查询它,或者你可以考虑使用 /dev/disk/by-uuid/
,它不会改变(因为 UUID 是在文件系统创建时生成的)而不是 /dev/disk/by-id/
.
我大约每月一次看到一个明显的随机问题,这让我很头疼。Google 似乎正在更改其他磁盘(到根)的命名约定以及它们在 [=12 下的显示方式=] 在启动时。
根磁盘始终可用 /dev/disk/by-id/google-persistent-disk-0
大多数情况下,我们安装的单个额外磁盘显示为 /dev/disk/by-id/google-persistent-disk-1
我们没有给出这个名称,但我们编写了我们的供应脚本来期望这个约定。
有时,在重新启动 VM
时,我们的启动脚本无法执行安全挂载:
/usr/share/google/safe_format_and_mount -m "mkfs.ext4 -F" /dev/disk/by-id/google-persistent-disk-1 /mountpoint
它们失败了,因为某些东西改变了磁盘的名称。它不再是 /dev/disk/by-id/google-persistent-disk-1
,现在是 /dev/disk/by-id/google
-{我们创建它时给它起的名字}
上次我更新我们的启动脚本以使用这个新的命名约定时,它在一小时后切换回来。什么鬼?
感谢任何线索。谢谢。
您无法控制的命名约定是不稳定的 API。您不应该编写您的管理工具来假设此约定永远不会更改——如您所见,它正在更改的原因与您无关,而且它很可能会再次更改。如果你需要访问系统上的磁盘列表,你应该通过 udev 查询它,或者你可以考虑使用 /dev/disk/by-uuid/
,它不会改变(因为 UUID 是在文件系统创建时生成的)而不是 /dev/disk/by-id/
.