【问题标题】:Google Compute Engine snapshot of instance with persistent disks attached failed附加了永久性磁盘的实例的 Google Compute Engine 快照失败
【发布时间】:2016-09-25 13:59:09
【问题描述】:

我有一个正在工作的 VM 实例,我正在尝试复制它以允许 Google 负载均衡器后面的冗余。 使用虚拟实例的测试运行正常,从正在运行的实例的快照创建一个新实例。 现在,真正的“原始”实例附加了一个永久磁盘,这会导致启动克隆实例时出现问题,因为(显然)缺少永久磁盘挂载。 串行控制台输出的日志如下:

* Stopping cold plug devices[74G[ OK ] * Stopping log initial device creation[74G[ OK ] * Starting enable remaining boot-time encrypted block devices[74G[ OK ] The disk drive for /mnt/XXXX-log is not ready yet or not present. keys:Continue to wait, or Press S to skip mounting or M for manual recovery

据我了解,无法将任何此类击键发送到实例,还有其他方法可以解决此问题吗?我知道我可以在快照之前卸载磁盘,但是我想建立的工作流程是创建生产服务器的周期快照,因此每次在执行之前卸载磁盘都需要实例停机时间(加上所有不必要的风险)一个看起来毫无意义的动作)。

有没有办法成功启动这种类型的克隆实例,然后附加一个新的持久磁盘?

发生这种情况是因为原始永久磁盘正在使用中,还是即使原始实例处于离线状态也会出现相同的问题(例如由于失败,在这种情况下我会尝试从快照创建新实例) ?

【问题讨论】:

    标签: google-cloud-storage google-compute-engine google-cloud-platform


    【解决方案1】:

    我用来摆脱相同问题的一种解决方法是,我实际上并没有卸载磁盘,而只是注释掉 /etc/fstab 中的安装行并拍摄快照。这样我的实例在快照时没有停机时间或停机磁盘。 (如果重要的话,我使用 Ubuntu 14.04 作为操作系统)

    稍后我在新实例上使用该快照时修复并取消注释它。 但是,您也可以考虑在注释行中添加 nofail 选项以获得更好的解决方案。

    顺便说一句,我正在做一个类似的任务,使用多个网络服务器节点构建负载平衡设置。每个都从所述快照中克隆,并安装了额外的永久磁盘,例如上传、数据和日志等

    【讨论】:

    • 发生这种情况是因为原始永久磁盘正在使用中,还是即使原始实例处于脱机状态也会出现相同的问题(例如由于失败,在这种情况下我会尝试创建一个新的来自快照的实例)? 是的,这是因为原始磁盘正在使用中,但原始实例离线仍不会释放它,除非您从原始实例取消分配磁盘。
    • 也可以通过串口向实例发送击键。以下是步骤 1. 在您的实例或项目上启用通过串行端口连接 2. 通过云 Web 控制台连接到串行端口
    【解决方案2】:

    我有点不清楚你想要完成什么。听起来您希望定期对生产服务器的数据量进行快照,以便以后克隆它们。

    您很可能只需要在制作快照之前进行同步和 fsfreeze,而不仅仅是卸载/重新安装它。 GCP 文档在Snapshots documentation 中有一个基本示例。

    【讨论】:

    • 是的,定期备份/克隆是最终目的,对于附加卷,它的工作方式与您发送的链接一样,问题是实例的系统盘。由于操作系统希望在启动时安装这些磁盘,因此克隆的实例将永远不会启动,因为数据磁盘不可用,如上述错误所示。我目前找到的唯一解决方案是卸载数据磁盘,然后进行快照。这将允许克隆的磁盘正常启动,但是每次都必须删除数据磁盘才能执行克隆非常不方便
    • 您可以将nofail添加到/etc/fstab中附加磁盘的挂载行。如果设备不存在,这将不会报告设备错误,因此克隆的 VM 将成功启动。
    猜你喜欢
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 2017-01-14
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    • 2016-04-21
    相关资源
    最近更新 更多