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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- 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 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 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):2024-07-26。
[{ "type": "thumb-down", "id": "hardToUnderstand", "label":"Hard to understand" },{ "type": "thumb-down", "id": "incorrectInformationOrSampleCode", "label":"Incorrect information or sample code" },{ "type": "thumb-down", "id": "missingTheInformationSamplesINeed", "label":"Missing the information/samples I need" },{ "type": "thumb-down", "id": "translationIssue", "label":"翻译问题" },{ "type": "thumb-down", "id": "otherDown", "label":"其他" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"易于理解" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"解决了我的问题" },{ "type": "thumb-up", "id": "otherUp", "label":"其他" }] -