破損したRAIDディスク障害により、緊急/メンテナンスモードのUbuntu 18.04 VM

破損したRAIDディスク障害により、緊急/メンテナンスモードのUbuntu 18.04 VM

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.

私の考えでは、ディスクの破損によりOSが緊急/メンテナンスモードに切り替わったようです。

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

私が望むのは、破損したドライブが破損しているかマウント解除されているかどうかにかかわらず、VMが起動するため、緊急/メンテナンスモードに切り替えてはいけません。緊急/メンテナンスモードを無効にするには、次の投稿に従いました。

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バグのため、systemd は fsck 障害をサポートしません。私は持っています安定systemd 250以降で動作します。

以前のバージョンのsystemdを使用する必要がある場合は、/lib/systemd/systemd-fsckバイナリを使用しないことが唯一の選択肢だと思います。おそらくファイルシステムを一覧表示するのではなく、/etc/fstab独自のシステムデバイスを使用してfsckしてマウントすることもできます。

関連情報