linux硬盘启动错误代码,解决由于 fstab 错误而出现 Linux VM 启动 - Virtual Machines | Microsoft Docs...

解决由于 fstab 错误导致 Linux VM 启动问题

10/09/2019

本文内容

你无法通过使用安全命令行管理程序 (SSH) 连接到 Azure Linux 虚拟机 (VM) 连接。 当你在Azure门户运行启动诊断功能时,你将看到类似于以下示例的日志条目:

示例

以下是可能错误的示例。

示例 1:磁盘由 SCSI ID(而不是 UUID (通用唯一标识符)

[K[[1;31m TIME [0m] Timed out waiting for device dev-incorrect.device.

[[1;33mDEPEND[0m] Dependency failed for /data.

[[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)

示例 2:CentOS 上缺少未连接的设备

Checking file systems…

fsck from util-linux 2.19.1

Checking all file systems.

/dev/sdc1: nonexistent device ("nofail" fstab option may be used to skip this device)

/dev/sdd1: nonexistent device ("nofail" fstab option may be used to skip this device)

/dev/sde1: nonexistent device ("nofail" fstab option may be used to skip this device)

[/sbin/fsck.ext3 (1) — /CODE] sck.ext3 -a /dev/sdc1

fsck.ext3: No such file or directory while trying to open /dev/sdc1

/dev/sdc1:

The superblock could not be read or does not describe a correct ext2

filesystem. If the device is valid and it really contains an ext2

filesystem (and not swap or ufs or something else), then the superblock

is corrupt, and you might try running e2fsck with an alternate superblock:

e2fsck -b 8193

[/sbin/fsck.xfs (1) — /GLUSTERDISK] fsck.xfs -a /dev/sdd1

/sbin/fsck.xfs: /dev/sdd1 does not exist

[/sbin/fsck.ext3 (1) — /DATATEMP] fsck.ext3 -a /dev/sde1 fsck.ext3: No such file or directory while trying to open /dev/sde1

示例 3:由于 fstab 配置错误或磁盘不再连接,VM 无法启动

The disk drive for /var/lib/mysql is not ready yet or not present.

Continue to wait, or Press S to skip mounting or M for manual recovery

示例 4:串行日志条目显示不正确的 UUID

Checking filesystems

Checking all file systems.

[/sbin/fsck.ext4 (1) — /] fsck.ext4 -a /dev/sda1

/dev/sda1: clean, 70442/1905008 files, 800094/7608064 blocks

[/sbin/fsck.ext4 (1) — /datadrive] fsck.ext4 -a UUID=""

fsck.ext4: Unable to resolve UUID=""

[FAILED

*** An error occurred during the file system check.

*** Dropping you to a shell; the system will reboot

*** when you leave the shell.

*** Warning — SELinux is active

*** Disabling security enforcement for system recovery.

*** Run 'setenforce 1' to reenable.

type=1404 audit(1428047455.949:4): enforcing=0 old_enforcing=1 auid= ses=4294967295

Give root password for maintenance

(or type Control-D to continue)

如果文件系统表 (fstab) 语法不正确,或者映射到"/etc/fstab"文件中条目的必需数据磁盘未附加到 VM,则可能会出现此问题。

分辨率

若要解决此问题,请通过使用 Azure 虚拟机的串行控制台在紧急模式下启动 VM。 然后使用该工具修复文件系统。 如果 VM 上未启用串行控制台,请转到"脱机 修复虚拟机" 部分。

使用串行控制台

使用单个用户模式

使用串行控制台采用单用户模式 单用户模式

虚拟机启动到单个用户模式后。 使用最喜爱的文本编辑器打开 fstab 文件。

# nano /etc/fstab

查看列出的文件系统。 fstab 文件的每一行都指示 VM 启动时装入的文件系统。 有关 fstab 文件的语法详细信息,请运行 man fstab 命令。 若要解决启动失败问题,请查看每一行以确保它在结构和内容中都正确。

备注

每行上的字段由制表符或空格分隔。 空行将被忽略。 具有数字符号的行 (#) 作为第一个字符是注释。 注释行可以保留在 fstab 文件中,但不处理它们。 我们建议你为不确定的 fstab 行添加注释,而不是删除这些行。

对于要恢复和启动的 VM,文件系统分区应该是唯一需要的分区。 VM 可能会遇到有关其他注释分区的应用程序错误。 但是,VM 应在没有其他分区的情况下启动。 稍后可以取消注释任何注释行。

建议使用文件系统分区的 UUID 在 Azure VM 上装载数据磁盘。 例如,运行以下命令: /dev/sdc1: LABEL="cloudimg-rootfs" UUID="" TYPE="ext4" PARTUUID=""

若要确定文件系统的 UUID,请运行 blkid 命令。 有关语法详细信息,请运行 man blkid 命令。

nofail 选项可帮助确保 VM 启动,即使文件系统已损坏或启动时文件系统不存在。 我们建议使用 fstab 文件中 nofail 选项,以使启动在 VM 启动不需要的分区中发生错误后继续启动。

更改或注释掉 fstab 文件中任何不正确或不必要的行,以使 VM 能够正确启动。

保存对 fstab 文件所做的更改。

使用下面的命令重新启动 vm。

# reboot -f

备注

您还可以使用"ctrl+x"命令,该命令也会重新启动虚拟机。

如果条目注释或修复成功,则系统应在门户中达到 Bash 提示。 检查是否可以连接到 VM。

使用根密码

使用本地用户和密码登录系统。

备注

你不能使用 SSH 密钥在串行控制台中登录系统。

查找指示磁盘未装入的错误。 在下面的示例中,系统尝试附加不再存在磁盘:

[DEPEND] Dependency failed for /datadisk1.

[DEPEND] Dependency failed for Local File Systems.

[DEPEND] Dependency failed for Relabel all filesystems, if necessary.

[DEPEND] Dependency failed for Migrate local... structure to the new structure.

Welcome to emergency mode! After logging in, type "journalctl -xb" to view

system logs, "systemctl reboot" to reboot, "systemctl default" or ^D to try again to boot into default mode.

Give root password for maintenance

(or type Control-D to continue):

使用基于 Red Hat 的 VM (根密码连接到 VM) 。

使用最喜爱的文本编辑器打开 fstab 文件。 装入磁盘后,为 Nano 运行以下命令:

$ nano /mnt/troubleshootingdisk/etc/fstab

查看列出的文件系统。 fstab 文件的每一行都指示 VM 启动时装入的文件系统。 有关 fstab 文件的语法详细信息,请运行 man fstab 命令。 若要解决启动失败问题,请查看每一行以确保它在结构和内容中都正确。

备注

每行上的字段由制表符或空格分隔。 空行将被忽略。 具有数字符号的行 (#) 作为第一个字符是注释。 注释行可以保留在 fstab 文件中,但不处理它们。 我们建议你为不确定的 fstab 行添加注释,而不是删除这些行。

对于要恢复和启动的 VM,文件系统分区应该是唯一需要的分区。 VM 可能会遇到有关其他注释分区的应用程序错误。 但是,VM 应在没有其他分区的情况下启动。 稍后可以取消注释任何注释行。

建议使用文件系统分区的 UUID 在 Azure VM 上装载数据磁盘。 例如,运行以下命令: /dev/sdc1: LABEL="cloudimg-rootfs" UUID="" TYPE="ext4" PARTUUID=""

若要确定文件系统的 UUID,请运行 blkid 命令。 有关语法详细信息,请运行 man blkid 命令。

nofail 选项可帮助确保 VM 启动,即使文件系统已损坏或启动时文件系统不存在。 我们建议使用 fstab 文件中 nofail 选项,以使启动在 VM 启动不需要的分区中发生错误后继续启动。

更改或注释掉 fstab 文件中任何不正确或不必要的行,以使 VM 能够正确启动。

保存对 fstab 文件所做的更改。

重新启动虚拟机。

如果条目注释或修复成功,则系统应在门户中达到 Bash 提示。 检查是否可以连接到 VM。

通过运行 mount –a 命令测试任何 fstab 更改时,请检查装入点。 如果没有错误,则装入点应该良好。

脱机修复 VM

将 VM 的系统磁盘作为数据磁盘附加到任何运行中的 Linux VM (恢复 VM) 。 为此,可以使用CLI命令,或者可以使用 VM 修复命令自动设置恢复 VM。

在恢复 VM 上将系统磁盘装载为数据磁盘后,在进行更改之前备份 fstab 文件,然后按照后续步骤更正 fstab 文件。

查找指示未装入磁盘的错误。 在下面的示例中,系统尝试附加不再存在磁盘:

[DEPEND] Dependency failed for /datadisk1.

[DEPEND] Dependency failed for Local File Systems.

[DEPEND] Dependency failed for Relabel all filesystems, if necessary.

[DEPEND] Dependency failed for Migrate local... structure to the new structure.

Welcome to emergency mode! After logging in, type "journalctl -xb" to view system logs, "systemctl reboot" to reboot, "systemctl default" or ^D to try again to boot into default mode.

Give root password for maintenance (or type Control-D to continue):

使用基于 Red Hat 的 VM (根密码连接到 VM) 。

使用最喜爱的文本编辑器打开 fstab 文件。 装入磁盘后,为 Nano 运行以下命令。 确保你正在处理位于已装载磁盘上的 fstab 文件,而不是位于安全 VM 上的 fstab 文件。

$ nano /mnt/troubleshootingdisk/etc/fstab

查看列出的文件系统。 fstab 文件的每一行都指示 VM 启动时装入的文件系统。 有关 fstab 文件的语法详细信息,请运行 man fstab 命令。 若要解决启动失败问题,请查看每一行以确保它在结构和内容中都正确。

备注

每行上的字段由制表符或空格分隔。 空行将被忽略。 具有数字符号的行 (#) 作为第一个字符是注释。 注释行可以保留在 fstab 文件中,但不处理它们。 我们建议你为不确定的 fstab 行添加注释,而不是删除这些行。

对于要恢复和启动的 VM,文件系统分区应该是唯一需要的分区。 VM 可能会遇到有关其他注释分区的应用程序错误。 但是,VM 应在没有其他分区的情况下启动。 稍后可以取消注释任何注释行。

建议使用文件系统分区的 UUID 在 Azure VM 上装载数据磁盘。 例如,运行以下命令: /dev/sdc1: LABEL="cloudimg-rootfs" UUID="" TYPE="ext4" PARTUUID=""

若要确定文件系统的 UUID,请运行 blkid 命令。 有关语法详细信息,请运行 man blkid 命令。 请注意,要恢复的磁盘现在已装载到新 VM 上。 尽管 UUID 应一致,但设备分区 (例如,"/dev/sda1") 在此 VM 上有所不同。 位于非系统 VHD 上的原始故障 VM 的文件系统分区对使用 CLI 命令的恢复 VM 不可用。

nofail 选项可帮助确保 VM 启动,即使文件系统已损坏或启动时文件系统不存在。 我们建议使用 fstab 文件中 nofail 选项,以使启动在 VM 启动不需要的分区中发生错误后继续启动。

更改或注释掉 fstab 文件中任何不正确或不必要的行,以使 VM 能够正确启动。

保存对 fstab 文件所做的更改。

重新启动虚拟机或重新生成原始 VM。

如果条目注释或修复成功,则系统应在门户中达到 Bash 提示。 检查是否可以连接到 VM。

通过运行 mount –a 命令测试任何 fstab 更改时,请检查装入点。 如果没有错误,则装入点应该良好。

卸载并分离原始虚拟硬盘,然后从原始系统磁盘创建 VM。 为此,可以使用 CLI 命令或 VM 修复命令(如果使用它们来创建恢复 VM)。

再次创建 VM 并且可以通过 SSH 连接到虚拟机后,请执行下列操作:

查看恢复期间更改或注释掉的任何 fstab 行。

请确保正确使用 UUID 和 nofail 选项。

在重新启动 VM 之前测试所有 fstab 更改。 为此,请使用以下命令: $ sudo mount -a

创建更正的 fstab 文件的其他副本,以用于将来的恢复方案。

后续步骤

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值