本页面介绍您在使用 Compute Engine 时可能会遇到的已知问题。
Linux 虚拟机实例的已知问题
以下是 Linux 映像的已知问题。
更新软件包时出现 GPG 错误:EXPKEYSIG 3746C208A7317B0F
在基于 Debian 和 Ubuntu 的系统(包括本地工作站)上,您可能会遇到类似以下示例的错误:
W: An error occurred during the signature verification.
The repository is not updated and the previous index files will be used.
GPG error: http://packages.cloud.google.com/apt cloud-sdk-stretch InRelease:
The following signatures were invalid: EXPKEYSIG 3746C208A7317B0F
Google Cloud Packages Automatic Signing Key <gc-team@google.com>
此错误会使您无法获取多个 Google Cloud Platform (GCP) 工具的最新更新,包括以下各项:
- Compute Engine 访客环境
- 含
gcloud
命令行工具的 Cloud SDK - Stackdriver Logging 代理
要解决此错误,请运行以下命令来从 https://packages.cloud.google.com
获取最新的有效 apt-key.gpg
密钥文件:
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
另外,在运行 Debian 或 Ubuntu 映像的 Compute Engine 虚拟机实例上,如果您使用以下映像版本重新创建实例,则可以获取最新密钥:
- 映像项目
debian-cloud
:debian-9-stretch-v20180401
或映像系列debian-9
debian-8-jessie-v20180401
或映像系列debian-8
- 映像项目
ubuntu-os-cloud
:ubuntu-1710-artful-v20180315
或映像系列ubuntu-1710
ubuntu-1604-xenial-v20180323
或映像系列ubuntu-1604-lts
ubuntu-1404-trusty-v20180308
或映像系列ubuntu-1404-lts
Red Hat Enterprise Linux 7 和 CentOS 7 只读根文件系统问题
如果虚拟机实例运行 rhel-7-v20170719
及更低版本公共映像或运行 centos-7-v20170719
及更低版本公共映像,那么这些实例可能会在启动时以只读模式装载根文件系统。在这种情况下,需要对根文件系统进行写访问的应用、守护程序或脚本将无法运行。
如果正在运行的实例使用了受影响的公共映像,请不要重新启动这些实例,否则它们将卡在只读模式下。如果实例已卡在只读模式下,您可以远程恢复对根文件系统的读写模式,然后修复该问题。
确定受影响的实例:
您可以使用以下 gcloud compute disks list
命令来确定可能受影响的实例:
RHEL 7:
gcloud compute disks list --filter="sourceImage ~ rhel-7-v201[4-6].* OR sourceImage ~ rhel-7-v20170[1-7].*" --uri
CentOS 7:
gcloud compute disks list --filter="sourceImage ~ centos-7-v201[4-6].* OR sourceImage ~ centos-7-v20170[1-7].*" --uri
如果这些磁盘已附加到实例,您可以在相应实例上修正问题。受影响实例的修正方法取决于您在创建该实例所使用的映像版本。
使用版本介于 rhel-7-v20160418
到 rhel-7-v20170719
之间的 RHEL 7 映像或版本介于 centos-7-v20160418
到 centos-7-v20170719
之间的 CentOS 7 映像创建的实例:
如果该实例使用自动更新功能,您可以使用 yum-cron 来自动安装修复的软件包并从 /etc/fstab
文件中移除损坏的装载选项。如果该实例未启用自动更新功能,您可以按照下述过程来修复该实例:
使用 SSH 连接到该实例。如果连接失败,则表示该实例可能已卡在只读模式下。不过,您可以尝试恢复它。如果您之前曾通过 SSH 连接到受影响的实例,那么您的 SSH 公钥就已存在于根文件系统上并将继续正常运作。请通过
ssh
运行远程命令,以将文件系统重新装载为rw
模式。例如,您可以使用以下gcloud
命令来重新装载根文件系统:gcloud compute ssh [INSTANCE_NAME] --command "sudo mount -o remount,rw /dev/sda1 /"
当文件系统以读写模式重新装载之后,请通过 SSH 连接到该实例。
运行
sudo yum -y update
以更新所有含修复程序的已安装软件包,包括gce-disk-expand
软件包。
现在,该实例重新启动时就不会将根文件系统装载为只读模式了。
使用版本低于 rhel-7-v20160418
的 RHEL 7 映像或版本低于 centos-7-v20160418
的 CentOS 7 映像创建的实例:
使用 SSH 连接到该实例。如果连接失败,则表示该实例可能已卡在只读模式下。不过,您可以尝试恢复它。如果您之前曾通过 SSH 连接到受影响的实例,那么您的 SSH 公钥就已存在于根文件系统上并将继续正常运作。请通过
ssh
运行远程命令,以将文件系统重新装载为rw
模式。例如,您可以使用以下gcloud
命令来重新装载根文件系统:gcloud compute ssh [INSTANCE_NAME] --command "sudo mount -o remount,rw /dev/sda1 /"
当文件系统以读写模式重新装载之后,请通过 SSH 连接到该实例。
修改
/etc/fstab
文件并移除该文件中的任何barrier=1
装载选项。default
装载选项必须是为根文件系统条目设置的唯一装载选项。您可以使用以下命令修正此损坏的装载选项:sudo sed -i 's/defaults,barrier[^ ,]*/defaults/' /etc/fstab
移除
barrier=1
装载选项后,/etc/fstab
文件中的根文件系统条目应类似如下示例,但 UUID 的值有所不同:UUID=b5e54172-67e3-4d52-95f4-4314e71b25fd / xfs defaults 0 0
现在,该实例重新启动时就不会将根文件系统装载为只读模式了。
CentOS 映像 v20131120
引入了一项重大更改,会导致系统默认启用 iptables
v20131120
版 CentOS 6 映像 centos-6-v20131120
引入了一项重大更改,会导致系统默认启用 iptables。这项更改会阻止外部流量进入运行 centos-6-v20131120
的 CentOS 实例,即使存在允许此类连接的相关防火墙规则资源也不例外。
若要解决此问题,除了使用防火墙规则允许此类流量之外,用户还需要停用 iptables,或更新 iptables 以使其允许所需的连接。如需停用 iptables,请运行以下命令:
# Save your iptable settings
user@centos-instance:~$ sudo service iptables save
# Stop the iptables service
user@centos-instance:~$ sudo service iptables stop
# Disable iptables on start up
user@centos-instance:~$ sudo chkconfig iptables off
Google 提供的映像存在一个已知错误:在稳定版 Debian 和 CentOS 内核中使用 ext4/scsi 驱动程序时可能会发生此错误
centos-6-v20131120 和 debian-7-wheezy-v2013112 映像中存在已知的 ext4 错误,这个错误可能会在永久性磁盘负载极高时导致内存泄漏和虚拟机实例的最终崩溃。如需了解详情,请参阅 Linux 内核邮寄名单上的 Question about ext4 excessive stall time 会话。
长度超过 32 个字符的实例名称可能导致各种 UNIX 工具出现问题
报告日期:2012 年 6 月
尽管实例名称最多可以包含 63 个字符,但长度超过 32 个字符的名称可能会导致某些工具变得不可靠,包括可能在启动期间运行的工具。为解决此问题,请选择长度小于 32 个字符的实例名称。
使用 OS Login 的实例在连接后返回登录消息
在某些使用 OS Login 的实例上,您可能会在连接建立后收到以下错误消息:
/usr/bin/id: cannot find name for group ID 123456789
请忽略此错误消息。
Windows 虚拟机实例的已知问题
以下是 Windows 映像的已知问题:
- 虽然 Windows 实例可以将 NVMe 接口用于本地 SSD,但是 Windows 上对于 NVMe 的支持尚处于测试版阶段,我们无法保证 Windows 实例能够达到 Linux 实例的性能。
- 在 Windows Server 2008 R2 上,安装 Python 2.7.9 或更高版本需要使用 Visual C++。Python 2.7.8 不需要此依赖项,但我们仍建议您安装最新版本。
- Compute Engine 尚不支持 IPv6。即使您在某个 Windows 实例中通过选择相关选项启用了 IPv6,系统也会忽略此设置。
- 创建实例之后,您无法即时连接到该实例。所有新的 Windows 实例都会使用系统准备 (sysprep) 工具来设置您的实例,这可能需要 5-10 分钟才能完成。
- 如果没有与
kms.windows.googlecloud.com
建立网络连接,Windows Server 映像将无法激活,而如果这些映像未在 30 天内进行初始身份验证,则会停止运行。由 KMS 激活的软件必须每 180 天重新激活一次,但是 KMS 会尝试每 7 天重新激活一次。请务必配置您的 Windows 实例,以使其保持激活状态。 - 访问非模拟的模型专用寄存器的内核软件将会产生一般保护性错误,这可能会导致系统崩溃,具体取决于客机操作系统。