Fstab(文件系统表)是一个配置文件,用于定义 Linux 虚拟机中的磁盘分区、文件系统和文件共享装载在系统重新启动后的保留方式。
本文档概述了 fstab 配置不正确可能导致启动问题的多个条件,并提供了解决问题的问题排查建议。
下面列出了一些 fstab 配置错误的常见问题:
准备工作
- 如果您要在 Cloud Logging 中记录串行端口输出,请先了解 Cloud Logging。
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
从 Google Cloud 控制台登录虚拟机的串行控制台。
在当前的紧急模式下,输入 root 密码以访问您的虚拟机。
使用您偏好的文本编辑器打开
fstab
文件。进行必要的更改,并将更改保存到fstab
文件中。以下示例使用vi
编辑器。vi /etc/fstab
在上面的示例中,
/distribution
的设备与虚拟机分离。注释引用文件系统的行,或移除/distribution
装载点的 fstab 条目。如需详细了解 fstab 配置和语法,请使用
man fstab
。保存文件并退出编辑器。 如果您使用的是
vi
编辑器,请使用ESC
+:wq!
保存并退出编辑器。在提示符处输入 reboot 来恢复启动过程。
成功解决问题后,虚拟机启动过程应该会完成,并且串行控制台中会显示登录提示。
验证您是否可以使用 SSH 再次登录虚拟机。
在 Google Cloud 控制台中,前往“虚拟机实例”页面。 前往虚拟机实例
从Google Cloud 控制台登录虚拟机的串行控制台。
在 Google Cloud 控制台中针对虚拟机点击重置。
在串行控制台窗口中,点击 grub 屏幕或菜单中用于暂停的箭头键来中断启动过程。
在 grub 引导加载程序屏幕的内核列表中,选择内核,然后按键盘上的
e
。在内核代码行的末尾添加
rd.break
参数,然后按ctrl
+x
。这有助于启动虚拟机进入单用户模式。以读写模式装载根文件系统。
分析、进行必要的更改并保存
fstab
文件。如需详细了解配置和语法,请使用man fstab
。使用您偏好的文本编辑器打开fstab
文件。以下示例使用 vi 编辑器。vi /etc/fstab
在此示例中,
/distribution
的设备与虚拟机分离,因此注释掉该行或移除/distribution
装载点的 fstab 条目。保存文件并退出编辑器。如果您使用的是 vi 编辑器,请使用
ESC
+:wq!
保存并退出 fstab。在提示符处输入
reboot
来恢复启动过程。成功解决问题后,虚拟机启动过程应该会完成,并且您应该会在串行控制台中看到登录提示。
验证您是否可以使用 SSH 登录虚拟机。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
识别 fstab 问题
对于启动问题,Google 强烈建议您在 Linux 虚拟机的串行控制台中检查启动日志。虚拟机会进入紧急模式,并显示一条错误消息,提示该问题与 fstab 有关。
[K[[1;31m TIME [0m] Timed out waiting for device dev-incorrect.device. [[1;33mDEPEND[0m] Dependency failed for /distribution. [[1;33mDEPEND[0m] Dependency failed for Local File Systems. ... Welcome to emergency mode! After logging in, type "journalctl -xb" to viewsystem logs, "systemctl reboot" to reboot, "systemctl default" to try again to boot into default mode. Give root password for maintenance (or type Control-D to continue)
根据错误消息,
/distribution
文件系统存在依赖项故障。文件系统装载点的依赖项故障会因所使用的文件系统名称而异。解决方法
使用以下方法来解决 Google Cloud中托管的 Linux 虚拟机中的
fstab
错误。与使用手动方法相比,使用串行控制台可以更快地解决问题。如需使用以下方法解决 fstab 问题,您必须为虚拟机启用串行端口访问权限。
方法 1:使用串行控制台在紧急模式下登录虚拟机
方法 2 - 在串行控制台中使用单用户模式
如果未设置 root 密码,则可以使用此方法。
前提条件:grub 配置文件中的
GRUB_TIMEOUT
参数设置为非零值。此文件通常位于/etc/default/grub
,但在一些早期发行版中,它可能位于某个非标准目录中。方法 3 - 救援虚拟机
如果未设置 root 密码或者您无法使用单用户模式,则可以使用此方法。
如需了解详情,请参阅救援无法访问的虚拟机。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-07-24。
-