Google compute engine GCE是否根据id随机更改/dev/disk/下其他已装入磁盘的磁盘名?

Google compute engine GCE是否根据id随机更改/dev/disk/下其他已装入磁盘的磁盘名?,google-compute-engine,Google Compute Engine,我每个月都会看到一个明显的随机问题,这让我头痛不已。Google似乎正在更改根目录下其他磁盘的命名约定,以及它们在/dev/disk/by id/at boot下的显示方式 根磁盘始终以/dev/disk/by id/google-persistent-disk-0的形式提供 大多数情况下,我们装载的单个额外磁盘显示为/dev/disk/by id/google-persistent-disk-1 我们没有给出这个名称,但我们编写了我们的配置脚本,以期待这个约定 不时地,在重新启动VM时,我们的

我每个月都会看到一个明显的随机问题,这让我头痛不已。Google似乎正在更改根目录下其他磁盘的命名约定,以及它们在/dev/disk/by id/at boot下的显示方式

根磁盘始终以/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-{我们创建它时给它的名字}

上次我更新我们的启动脚本以使用这个新的命名约定时,它在一个小时后切换回来了。WTF


任何线索都很感激。谢谢。

您无法控制的命名约定不是一个稳定的API。您不应该在编写管理工具时假设这个约定永远不会改变——正如您所看到的,它之所以会改变,是因为与您无关的原因,而且它很可能会再次改变。如果您需要访问系统上的磁盘列表,则应该通过UDEV查询它,或者可以考虑使用/DEV/DISC/ UUID/这将不会改变,因为UUID是在文件系统创建而不是/DEV/DIS/ID/./P>生成的,不确定这个问题是否最适合SO;也许会更合适…?谢谢,我真的不知道是不是这样。我在上面找到的谷歌文档总是提到挂载/dev/disk/by id,所以我认为这是GCE推荐的最佳做法。我想象我们可以在脚本远程重设environment inc磁盘时获得UUID,然后将其编码到服务器启动脚本中,以执行/dev/disk/by UUID。