谷歌计算引擎快照持久磁盘附加实例失败。

4
我有一个运行良好的虚拟机实例,我想复制它以实现谷歌负载均衡器后备,使用虚拟机快照创建一个新实例进行了测试,结果良好。但是,原始实例连接了永久性磁盘,这导致克隆实例无法启动,因为缺少永久性磁盘挂载。从串行控制台输出的日志如下:
* 停止冷插入设备[74G[ OK ] * 停止记录初始设备创建[74G[ OK ] * 启用剩余的启动时加密块设备[74G[ OK ] /mnt/XXXX-log的磁盘驱动器尚未准备好或不存在。 键:继续等待,或按S跳过挂载,或按M进行手动恢复
据我了解,没有办法将这些按键发送到实例,是否有其他方法来解决这个问题?我知道可以在快照之前卸载磁盘,但我想要建立生产服务器的定期快照工作流程,每次执行此操作都需要停机(加上所有不必要的风险,似乎是毫无意义的操作)。是否有一种方法可以成功引导这种类型的克隆实例,并在之后附加新的永久性磁盘?这是因为原始永久性磁盘正在使用,还是即使原始实例离线(例如由于故障,在这种情况下我将尝试从快照创建新实例),也会出现同样的问题?
2个回答

2
我正在使用的一种解决方法,是不卸载磁盘,而是将/etc/fstab中的挂载行注释掉并进行快照。这样,在进行快照时,我的实例没有停机或下线的磁盘。如果需要,在新实例上使用该快照时,我会修复并取消注释它。但是,您也可以考虑在被注释的行中添加nofail选项来获得更好的解决方案。
顺便说一句,我正在执行类似的任务,构建具有多个Web服务器节点的负载平衡设置。每个节点都从该快照克隆,并挂载额外的持久性磁盘,例如上传、数据和日志等。

这是因为原始持久磁盘正在使用,还是即使原始实例离线(例如由于故障,在这种情况下我将尝试从快照创建新实例),也会出现相同的问题吗? 是的,这是因为原始磁盘正在使用,但是原始实例离线仍然不会释放它,除非您取消分配原始实例的磁盘。 - Raja Ehtesham
1
同时,通过串口向实例发送按键也是可能的。以下是步骤:
  1. 在您的实例或项目上启用通过串口连接
  2. 通过云网络控制台连接到串口
- Raja Ehtesham

0

我有点不清楚你想要实现什么。听起来你想定期快照生产服务器的数据卷,以便稍后克隆它们。

很可能,你只需要在制作快照之前同步和冻结文件系统,而不是仅仅卸载/重新挂载它。GCP文档中在快照文档中有一个基本示例。


是的,定期备份/克隆是最终目标,对于附加的卷它的工作方式就像你发送的链接一样,问题在于实例的系统磁盘。由于操作系统希望在启动时挂载这些磁盘,因此克隆实例将永远无法启动,因为数据磁盘不可用,如上面的错误所示。我目前找到的唯一解决方案是卸载数据磁盘,然后进行快照。这将使克隆磁盘能够正常启动,但每次执行克隆都必须删除数据磁盘,这非常不方便。 - Kenny
2
您可以在/etc/fstab中的附加磁盘的挂载行中添加nofail。如果设备不存在,则不会报告设备错误,因此克隆的虚拟机将成功启动。 - Kamran

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接