排查完整磁盘和磁盘大小调整问题


本页面介绍了在调整永久性磁盘的大小或永久性磁盘已满时可能遇到的常见问题,以及如何修复各个问题。

准备工作

  • 在执行任何问题排查步骤之前,请务必创建磁盘快照,以确保数据已备份。
  • 如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。

    选择标签页以了解您打算如何使用本页面上的示例:

    控制台

    当您使用 Google Cloud 控制台访问 Google Cloud 服务和 API 时,无需设置身份验证。

    gcloud

    1. 安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init
    2. 设置默认区域和可用区

    REST

    如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

      安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init

修改磁盘时的速率限制错误

以下是您在尝试修改极端永久性磁盘或 Google Cloud Hyperdisk 时可能会遇到的常见错误。您可能会在多个位置(例如,串行控制台输出或应用日志中)看到这些错误。

    Disk cannot be resized due to being rate limited.
    
    Cannot update provisioned iops due to being rate limited.
    
    Cannot update provisioned throughput due to being rate limited.
    

查看修改磁盘的以下时间限制:

  • 您在 6 小时内只能调整一次极端永久性磁盘或 Hyperdisk Throughput 卷的大小。
  • 您在 4 小时内只能调整一次 Hyperdisk Extreme 卷的大小。
  • 您在在 4 小时内只能更改一次 Hyperdisk 卷的预配 IOPS 或吞吐量。

要解决这些错误,请等待自上次修改以来所需的时间量,然后再次尝试修改磁盘。

磁盘容量错误

完整磁盘

以下是您的永久性磁盘达到最大容量时可能会遇到的常见错误。您可能会在多个位置(例如,串行控制台输出或应用日志中)看到这些错误。

    No space left on device
    
    Not enough storage is available to process this command
    

如需解决此问题,请执行以下操作:

  1. 创建磁盘的快照

  2. 删除磁盘上不需要的文件以释放空间。

  3. 如果在此之后您的磁盘需要更多空间,请调整磁盘大小

由于启动磁盘已满而导致虚拟机无法访问

如果虚拟机启动磁盘已满,则您可能无法访问虚拟机。此情况可能很难识别,因为虚拟机连接问题是由于启动磁盘已满导致时,这种情况并不总是显而易见。以下是您由于启动磁盘已满而无法通过 Google Cloud CLI 访问虚拟机时可能遇到的常见错误示例:

      Network error: Software caused connection abort
      
      ERROR: (gcloud.compute.ssh) Could not SSH into the instance.  It is possible
      that your SSH key has not propagated to the instance yet. Try running this
      command again.  If you still cannot connect, verify that the firewall and
      instance are set to accept ssh traffic.
      
      You cannot connect to the VM instance because of an unexpected error. Wait a
      few moments and then try again.
      
      No space left on device
      
      ERROR Exception calling the response handler. [Errno 2] No usable temporary
      directory found in ['/tmp', '/var/tmp', '/usr/tmp', '/']...
      

如需解决上述问题,请执行以下操作:

  1. 确认虚拟机的 SSH 故障是否因启动磁盘已满导致:

    gcloud compute instances tail-serial-port-output VM_NAME
    

    如果启动磁盘已满,则生成的输出将包含消息 No space left on device

  2. 为虚拟机的启动磁盘创建快照(如果尚未这样做)。

  3. 尝试重启虚拟机

  4. 如果您仍然无法访问虚拟机,请执行以下操作:

    1. 停止虚拟机:

      gcloud compute instances stop VM_NAME
      

      VM_NAME 替换为虚拟机名称。

    2. 增加启动磁盘的大小:

      gcloud compute disks resize BOOT_DISK_NAME --size DISK_SIZE
      

      替换以下内容:

      • BOOT_DISK_NAME:虚拟机的启动磁盘的名称
      • DISK_SIZE:启动磁盘新的更大大小(以 GB 为单位)

      例如,如需将名为 example-disk-1 的磁盘的大小调整为 6GB,请运行以下命令:

      gcloud compute disks resize example-disk-1 --size=6GB
      
    3. 启动该虚拟机:

      gcloud compute instances start VM_NAME
      
  5. 尝试通过 SSH 连接到虚拟机。如果您仍然无法访问虚拟机,请执行以下操作之一:

文件系统问题

调整文件系统大小

调整虚拟机启动磁盘的大小后,大多数虚拟机会调整根文件系统的大小并重启虚拟机。但是,对于某些虚拟机映像类型,您可能需要手动调整文件系统的大小。如果您的虚拟机不支持自动调整根文件系统大小,或者您已调整数据(非启动)永久性磁盘的大小,则必须手动调整文件系统和分区的大小

如需检查在调整虚拟机启动磁盘的大小后根文件系统是否自动扩展,请执行以下操作:

  1. 使用以下方法之一检查您的虚拟机是否已调整启动磁盘的大小:

    • 检查串行端口输出。查找指示已调整根分区大小的行。

      例如,在具有 Debian 映像的虚拟机上,如果自动调整大小成功,则控制台日志会包含 ... expand-root.sh[..]: Resizing ext4 filesystem on /dev/sda1 行。

    • 如果您可以使用 SSH 连接到 Linux 虚拟机,请运行命令 df -h 以检查是否存在可用磁盘空间。

      例如,此输出表明根文件系统用量已达到 92%:

      Filesystem                                    Size  Used Avail Use% Mounted on
      udev                                           63G     0   63G   0% /dev
      tmpfs                                          13G  1.4M   13G   1% /run
      /dev/sda1                                     339G  315G   24G  92% /
      
  2. 如果您的虚拟机未调整根文件系统的大小,请手动调整文件系统和分区的大小