【问题标题】:Unable to use Compute engine instance无法使用计算引擎实例
【发布时间】:2020-09-21 20:42:02
【问题描述】:

我们的项目中有一个计算引擎实例(n1-standard-2、2 个 vCPU、7.5 GB 内存、debian-9-stretch-v20190813 - 30GB),但并不总是运行。使用 cron,我们每天启动一次,实例完成它的工作,然后关闭(我们使用命令在作业结束后关闭)。这可以完美运行几个月,然后我们注意到,实例启动但它什么也没做。不启动我们打算在 bootup-script 中启动的脚本,并且进一步不关闭(如果我们注意到,我们需要手动关闭它)。此外,我们无法使用浏览器窗口连接到它。这是串口1的错误sn-p。

localhost google-accounts: ERROR 调用响应处理程序的异常。 [Errno 2] 在 ['/tmp', '/var/tmp', '/usr/tmp', '/'] 中找不到可用的临时目录。

尝试使用此实例的快照(增加内存)来创建新实例也会产生相同的错误。我们别无选择,只能创建一个新实例,并在那里复制脚本。这已经发生了两次。计算引擎团队的人可以帮忙吗?这会影响我们的成本,因为我们不会每天监控实例,并且实例会一直运行。

【问题讨论】:

    标签: google-compute-engine


    【解决方案1】:

    出现此错误的原因有两个:

    • 启动盘已满或
    • 引导盘设置为只读模式。

    因此,启动脚本无法创建临时文件,因此它们不起作用; SSH 密钥无法存储在磁盘上,因此会导致登录失败。

    您可以尝试以下选项来解决问题:

    1. 重启实例。有可能会删除一些临时文件,因此会出现运行实例所需的最小可用空间。

    2. 尝试通过串行控制台访问实例并手动清理/tmp/var/tmp/usr/tmp 目录。

    Compute Engine > Doc > Interacting with the serial console

    https://stackoverflow.com/a/61485465/11602913

    3. 通过串行控制台手动调整磁盘大小:永久磁盘、分区和文件系统。

    https://stackoverflow.com/a/61485465/11602913

    Compute Engine > Doc > Adding or resizing zonal persistent disks > Resizing a zonal persistent disk

    大多数使用 Google 公共映像创建的 Linux 实例可以在调整实例的永久磁盘大小并重新启动实例后自动调整根文件系统的大小。

    4. 创建一个新实例并选择从快照创建的新启动盘作为该新实例的启动盘或将其挂载到新实例作为辅助磁盘。

    Compute Engine > Doc > Adding or resizing zonal persistent disks > Recovering an inaccessible instance or a full boot disk

    解决方案4.更详细。

    停止实例:

    $ gcloud compute instances stop my-vm
    

    创建快照以备份现有状态:

    Compute Engine > Doc > Creating persistent disk snapshots > Creating a snapshot > Create a snapshot of a regional persistent disk

    $ gcloud compute disks snapshot my-vm-disk --snapshot-names my-vm-disk-snap-yyyymmdd --zone=my-zone
    

    从快照创建一个更大的新启动盘(建议至少双倍大小):

    $ gcloud compute disks create my-vm-disk-new --source-snapshot="my-vm-disk-snap-yyyymmdd" --zone=my-zone --size=20 
    

    --size=SIZE 磁盘大小。该值必须是一个整数,后跟一个大小单位,GB 表示千兆字节,TB 表示太字节。如果未指定大小单位,则假定为 GB。如果未指定磁盘大小,将使用标准磁盘的默认大小 500GB 和 pd-ssd 磁盘的 100GB。

    创建一个新实例,并选择从快照中创建的新启动盘作为新实例的启动盘:

    $ gcloud compute instances create my-vm-new --zone=my-zone --disk=name=my-vm-disk-new,boot=yes
    

    或者创建一个新实例

    $ gcloud compute instances create my-vm-new --zone=my-zone
    

    然后将新的启动盘附加到新实例

    $ gcloud compute instances attach-disk my-vm-new --disk="my-vm-disk-new"
    

    重启新实例:

    $ gcloud compute instances reset my-vm-new --zone=my-zone
    

    连接到新实例:

    $ gcloud compute ssh my-vm-new
    

    后续步骤

    • 遵循推荐的做法并考虑将以下一些目录放在单独的文件系统上:/home/opt/usr/tmp/var/srv
    • 留意文件系统的可用空间。可以使用 Google Monitoring 或任何第三方解决方案。

    【讨论】:

    • 感谢您的详细回复。 #1 - 没用,#2 - 没用。使用临时用户重新启动实例,并尝试登录导致“登录不正确”。我认为用户甚至没有被创建 #3 - 尝试但没有工作。我认为它停留在cloud.google.com/compute/docs/disks/… 模式。 #4)我确实尝试使用此快照创建新实例,但也没有工作。不得不尝试新鲜的一切。但感谢您的回复,我将遵循提到的最佳做法。正在考虑联系 GCP 支持团队。
    • @sits_1608 你的问题解决了吗?我也有同样的问题。
    猜你喜欢
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    • 2020-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多