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
。今質問は次のとおりです。
- スクリーンショットで失敗した依存関係のうち、依存関係は何ですか?
- fsckが失敗したときに
/dev/md127
パニックモードになる理由とそれを無効にする方法は?
編集2:
私が追加できる他のものは次のとおりです。
- この仮想マシンはkvm仮想マシンです。
- これはソフトウェア攻撃です
ありがとう、アンクール
答え1
あなたのシステム試験を終えた破損を修復し、自動的に起動しますが、それはできません。だから緊急モードに入ります。
この状態では、ファイルシステムをマウントできず、起動時にファイルシステムをマウントすることを指定したため、これは上書きできません。
次のいずれかの方法を試すことができます。
- ファイルシステムを損傷しないでください。データが記録されている間は、仮想マシンを強制的にシャットダウンするのではなく、正常にアンマウントしてください。
- ファイルシステムを自動的にマウントしません(
noauto
で設定/etc/fstab
)。 VMが起動しますが、後でファイルシステムを手動で入力してマウントする必要があります。 - XFSなど、より柔軟なファイルシステムに切り替えます。
答え2
nofail
バグのため、systemd は fsck 障害をサポートしません。私は持っています安定systemd 250以降で動作します。
以前のバージョンのsystemdを使用する必要がある場合は、/lib/systemd/systemd-fsck
バイナリを使用しないことが唯一の選択肢だと思います。おそらくファイルシステムを一覧表示するのではなく、/etc/fstab
独自のシステムデバイスを使用してfsckしてマウントすることもできます。