Ubuntu 18.04 VM 由于失败的损坏的 raid 磁盘而处于紧急/维护模式

Ubuntu 18.04 VM 由于失败的损坏的 raid 磁盘而处于紧急/维护模式

我有一个虚拟机,它有一个附加的带有 fstab 条目的 raid 设备:

/dev/md127 /mnt/blah ext4 nofail 0 2

RAID 磁盘已损坏,并且在启动过程中设备进入紧急/维护模式,这意味着只有本地主机用户才能退出此模式并正常启动。在正常启动期间,系统日志中发生以下情况:

systemd-fsck[1272]: /dev/md127 contains a file system with errors, check forced.
systemd-fsck[1272]: /dev/md127: Inodes that were part of a corrupted orphan linked list found.
systemd-fsck[1272]: /dev/md127: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
systemd-fsck[1272]: #011(i.e., without -a or -p options)
systemd-fsck[1272]: fsck failed with exit status 4.
systemd-fsck[1272]: Running request emergency.target/start/replace
systemd[1]: [email protected]: Main process exited, code=exited, status=1/FAILURE
systemd[1]: [email protected]: Failed with result 'exit-code'.
systemd[1]: Failed to start File System Check on /dev/md127.
systemd[1]: Dependency failed for /mnt/blah.
systemd[1]: Dependency failed for Provisioner client daemon.

我的猜测是,由于袭击磁盘损坏,操作系统进入紧急/维护模式:

systemctl --state=failed
  UNIT                           LOAD   ACTIVE SUB    DESCRIPTION                                            [email protected] loaded failed failed File System Check on /dev/md127

我想要的是无论被攻击的驱动器是否损坏/无法安装,虚拟机都会启动,因此它不应该进入紧急/维护模式。我按照这些帖子尝试禁用紧急/维护模式:

我必须首先local-fs.target.d在 中创建目录/etc/systemd/system/,这感觉不对。然后我创建了一个nofail.conf包含/etc/systemd/system/local-fs.target.d/nofail.conf

[Unit]
OnFailure=

加载该放置文件后,我能够确认 local-fs.target 找到了该放置文件:

sudo systemctl status local-fs.target 
● local-fs.target - Local File Systems
   Loaded: loaded (/lib/systemd/system/local-fs.target; static; vendor preset: enabled)
  Drop-In: /etc/systemd/system/local-fs.target.d
           └─nofail.conf
   Active: active since Tue 2019-01-08 12:36:41 UTC; 3h 55min ago
     Docs: man:systemd.special(7)

但是,重新启动后,虚拟机仍然处于紧急/维护模式。我错过了什么吗? nofail.conf 解决方案不适用于 raid 磁盘吗?


编辑:当系统启动到紧急模式时,我能够从日志中打印出来(抱歉,这是一个屏幕截图,因为我无权访问主机,不得不向所有者询问):

在此输入图像描述

这是以下的输出systemctl for systemd-fsck@dev-md127

 sudo systemctl status --no-pager --full systemd-fsck@dev-md127[email protected] - File System Check on /dev/md127
    Loaded: loaded (/lib/systemd/system/[email protected]; static; vendor preset: enabled)
    Active: failed (Result: exit-code) since Thu 2019-01-10 12:05:44 UTC; 2h 57min ago
      Docs: man:[email protected](8)
   Process: 1025 ExecStart=/lib/systemd/systemd-fsck /dev/md127 (code=exited, status=1/FAILURE)
  Main PID: 1025 (code=exited, status=1/FAILURE)

 systemd[1]: Starting File System Check on /dev/md127...
 systemd-fsck[1025]: /dev/md127 contains a file system with errors, check forced.
 systemd-fsck[1025]: /dev/md127: Inodes that were part of a corrupted orphan linked list found.
 systemd-fsck[1025]: /dev/md127: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
 systemd-fsck[1025]:         (i.e., without -a or -p options)
 systemd-fsck[1025]: fsck failed with exit status 4.
 systemd-fsck[1025]: Running request emergency.target/start/replace
 systemd[1]: [email protected]: Main process exited, code=exited, status=1/FAILURE
 systemd[1]: [email protected]: Failed with result 'exit-code'.
 systemd[1]: Failed to start File System Check on /dev/md127.

正如我之前指出的,我已经nofail开始了/etc/fstab。现在的问题是:

  1. 截图中失败的依赖项中的依赖项是什么?
  2. 如果 fsck 失败/dev/md127,为什么会进入紧急模式以及如何禁用它?

编辑2:

我可以添加的其他一些内容是:

  1. 该虚拟机是一个 kvm 虚拟机
  2. 这是一次软件袭击

亲切的问候,安库尔

答案1

你的系统尝试过修复损坏并自动启动,但它不能。这就是它进入紧急模式的原因。

这不是您可以覆盖的内容,因为文件系统无法在此状态下挂载,并且您指定在引导时挂载文件系统。

您可以尝试以下方法之一:

  • 不要损坏文件系统。在数据仍在写入时,正常卸载它,而不是硬关闭虚拟机。
  • 不要自动挂载文件系统(noauto在 中设置/etc/fstab)。 VM 将启动,但您仍然需要稍后手动进入并挂载文件系统。
  • 切换到更具弹性的文件系统,例如 XFS。

答案2

nofail由于 bug,systemd 不支持fsck 失败。我有固定的它适用于 systemd 250 及更高版本。

如果您坚持使用旧版本的 systemd,我认为您唯一的选择就是不使用/lib/systemd/systemd-fsck二进制文件。也许不要在 中列出文件系统/etc/fstab,而是使用您自己的 systemd 单元来 fsck 并挂载它。

相关内容