対処した内容
rootパスワードでログインせよ、と記載されているのでrootパスワードを入力してログインしてみる。ログインすると通常のコマンドを受け付ける状態になる。
emergency modeの冒頭のメッセージに記載されていた
journalctl -xb
を素直に叩いてみる。すると、大量の起動時のログが出力されるので、ひたすらスペースキーを押して確認していくと、ログの終盤に赤字のエラーログを発見した。メッセージは以下。
Time out waiting for device dev-mapper-rhel\x2ddata.device.
どうやらLVM2のデーモンがデバイスのタイムアウトで異常終了している模様。直前に設定した/etc/fstabがあやしいので確認してみると、デバイス名をミスっている。。。[root@localhost ~]# cat /etc/fstab
/dev/mapper/rhel-root / xfs defaults 0 0
UUID=1b3eb24d-7d2c-4023-9d4d-933bea63cd3f /boot xfs defaults 0 0
/dev/mapper/rhel-swap swap swap defaults 0 0
/dev/mapper/rhel-data /data xfs defaults 0 0
↑★rhel-dataではなくdata-dataが正しい
上記を修正して再起動すると、問題なく起動することができた。よかったよかった。
……と思ったのだが、fstabの記述ミスはともかく、障害等でディスクが見えない状況となった場合もemergency modeになってしまい、OSが起動できなくなるという問題がある。
そこで今回は、もしマウントが失敗する場合であっても、該当のマウント処理をスキップしてOSを起動させる方法も調べてみた。
回避策「fstabでnofail
をオプションを指定する」
emergency modeとなった原因の「/etc/fstab」は、以下構文で記載する。
<ストレージデバイス> <マウントポイント> <ファイルシステム> <マウントオプション> <dumpコマンドの対象とするか> <起動時にfsckでファイルチェックを行うか>
上記の「マウントオプション」は通常defaults
のみ指定をすることが多いが、ここにnofail
オプションも追加し、nofail,defaults
を指定する。このオプションにより、OS起動時にストレージデバイスが存在しない場合でもエラーとならず、OS起動に成功する。
# cat /etc/fstab
/dev/mapper/rhel-root / xfs defaults 0 0
UUID=68f1f8f7-ab56-410a-aa4c-8401fc6f7894 /boot xfs defaults 0 0
/dev/mapper/rhel-swap swap swap defaults 0 0
/dev/mapper/vg_sdb1-lv_sdb1 / xfs nofail,defaults 0 0 ←★nofailを指定
「/var/log/messages」にはemergency mode時と同様に、Timed out waiting for device dev-mapper-vg_sdb1\x2dlv_sdb1.device.
のエラーメッセージが出力されるが、その後Startup finished
と表示されており、起動に成功していることがわかる。
# tail /var/log/messages
Aug 29 16:01:01 localhost systemd: Removed slice User Slice of root.
Aug 29 16:01:37 localhost systemd: Job dev-mapper-vg_sdb1\x2dlv_sdb1.device/start timed out.
Aug 29 16:01:37 localhost systemd: Timed out waiting for device dev-mapper-vg_sdb1\x2dlv_sdb1.device.
Aug 29 16:01:37 localhost systemd: Dependency failed for /mnt2.
Aug 29 16:01:37 localhost systemd: Job mnt2.mount/start failed with result 'dependency'.
Aug 29 16:01:37 localhost systemd: Startup finished in 498ms (kernel) + 3.065s (initrd) + 1min 30.363s (userspace) = 1min 33.927s.
Aug 29 16:01:37 localhost systemd: Job dev-mapper-vg_sdb1\x2dlv_sdb1.device/start failed with result 'timeout'.
Aug 29 16:01:49 localhost systemd: Created slice User Slice of root.
Aug 29 16:01:49 localhost systemd: Started Session 2 of user root.
Aug 29 16:01:49 localhost systemd-logind: New session 2 of user root.
上記設定をしたのち、試しに仮想ディスクを取り外した状態で仮想マシンを起動させてみたところ、問題なく起動することができた。
最初のルートパスワードを入力することすら知らず、途方に暮れておりました。 大変有用な情報ありがとうございました。
返信削除お役に立ててよかったです!
削除