はじめに
少し前になりますが、 8/4 にコンソール履歴という機能がリリースされました
この機能は、シリアル・コンソールによって取得されたOSレベルのエラー・メッセージが表示されるとのことで、インスタンスが起動しないなどの際のトラブルシューティングに利用できる機能となります
今回、Oracle Linux7 のインスタンスの /etc/fstab ファイルを不正な値に編集してしまった場合を想定し、実際の画面を用いて紹介させていただきたいと思います
1. OS上で認識しているディスク情報
1 2 3 4 5 6 |
[opc@blog202109 ~]$ sudo lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 46.6G 0 disk ├─sda2 8:2 0 8G 0 part [SWAP] ├─sda3 8:3 0 38.4G 0 part / └─sda1 8:1 0 200M 0 part /boot/efi |
/dev/sda デバイスが接続されており、/
, /boot/efi
, swap
のパーティション構成、マウント状態となっています
2. /etc/fstab を編集する
1 2 3 4 5 6 7 8 9 10 11 |
[opc@blog202109 ~]$ sudo cp -pi /etc/fstab{,.original} [opc@blog202109 ~]$ sudo vim /etc/fstab [opc@blog202109 ~]$ sudo diff /etc/fstab{.original,} 9,11c9,11 < UUID=efa8c2db-9721-448e-81db-ef48a83416ca / xfs defaults,_netdev,_netdev 0 0 < UUID=1F17-62E7 /boot/efi vfat defaults,uid=0,gid=0,umask=0077,shortname=winnt,_netdev,_netdev,x-initrd.mount 0 0 < UUID=5901d603-d1bb-44d2-8b04-5189dbe331d2 swap swap defaults,_netdev,x-initrd.mount 0 0 --- > #UUID=efa8c2db-9721-448e-81db-ef48a83416ca / xfs defaults,_netdev,_netdev 0 0 > #UUID=1F17-62E7 /boot/efi vfat defaults,uid=0,gid=0,umask=0077,shortname=winnt,_netdev,_netdev,x-initrd.mount 0 0 > #UUID=5901d603-d1bb-44d2-8b04-5189dbe331d2 swap swap defaults,_netdev,x-initrd.mount 0 0 |
今回は、エラーにするためが目的でありますので、マウントする全てのパーティションをコメントアウトしています
3. 再起動後にエラー表示
1 2 |
bash: cannot create temp file for here-document: Read-only file system -bash: cannot create temp file for here-document: Read-only file system |
予想では起動エラーになる予定でしたが、OSは起動しログインまですることが可能でした
しかし、何かしらのコマンドを実行しようとすると、上記のメッセージがターミナルに表示され、ファイルシステムがリードオンリーになっていることが読み取れます
4. dmesg を確認してみる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[Wed Sep 8 22:47:00 2021] sd 2:0:0:1: Power-on or device reset occurred [Wed Sep 8 22:47:00 2021] sd 2:0:0:1: [sda] 97677312 512-byte logical blocks: (50.0 GB/46.6 GiB) [Wed Sep 8 22:47:00 2021] sd 2:0:0:1: [sda] 4096-byte physical blocks [Wed Sep 8 22:47:00 2021] sd 2:0:0:1: [sda] Write Protect is off [Wed Sep 8 22:47:00 2021] sd 2:0:0:1: [sda] Mode Sense: 2b 00 10 08 [Wed Sep 8 22:47:00 2021] sd 2:0:0:1: [sda] Write cache: disabled, read cache: enabled, supports DPO and FUA [Wed Sep 8 22:47:00 2021] sd 2:0:0:1: [sda] Optimal transfer size 1048576 bytes [Wed Sep 8 22:47:00 2021] iscsi: registered transport (be2iscsi) [Wed Sep 8 22:47:00 2021] In beiscsi_module_init, tt=0000000058eae1b0 [Wed Sep 8 22:47:00 2021] sda: sda1 sda2 sda3 [Wed Sep 8 22:47:00 2021] sd 2:0:0:1: [sda] Attached SCSI disk [Wed Sep 8 22:47:01 2021] IPv6: ADDRCONF(NETDEV_CHANGE): ens3: link becomes ready [Wed Sep 8 22:47:03 2021] SGI XFS with ACLs, security attributes, realtime, scrub, repair, no debug enabled [Wed Sep 8 22:47:03 2021] XFS (sda3): Mounting V4 Filesystem [Wed Sep 8 22:47:03 2021] XFS (sda3): Ending clean mount [Wed Sep 8 22:47:03 2021] systemd-journald[150]: Received SIGTERM from PID 1 (systemd). [Wed Sep 8 22:47:03 2021] printk: systemd: 16 output lines suppressed due to ratelimiting [Wed Sep 8 22:47:03 2021] audit: type=1404 audit(1631141224.235:2): enforcing=1 old_enforcing=0 auid=4294967295 ses=4294967295 enabled=1 old-enabled=1 lsm=selinux res=1 |
dmesg コマンドでは、 sda1, sda2, sda3 がそれぞれ認識し、マウントも行えているようです
5. コンソール履歴を確認してみる
OCI のコンソールから、インスタンス詳細を確認すると、左下のリソースメニューに コンソール履歴
が追加されています
こちらの、現在の履歴を表示
ボタンをクリックすると、クリックした時点のシリアル・コンソールに出力されている OS レベルのエラーメッセージが表示されます
コンソール履歴を確認したところ、 tmpfiles-setup.service の開始に失敗しているようです
1 2 |
[FAILED] Failed to start Create Volatile Files and Directories. See 'systemctl status systemd-tmpfiles-setup.service' for details. |
おそらく、このサービスの開始に失敗しているため、 cannot create temp file for here-document: Read-only file system
というメッセージの出力につながっているのではないかと推測できます
まとめ
このように、OS レベルのエラーメッセージを手軽に確認することができます
また、コンソール履歴は過去のコンソール出力を保存しておくこともできますので、正常に起動したときのコンソール情報を保存しておき、何かしら異常があった際に差分比較する等の使い方も可能です
もし、OS 作業を伴ったトラブルシューティングを行いたい場合は、従来のインスタンス・コンソール接続を使用したインスタンスのトラブルシューティングを実施していただくなど、使い分けを行っていただきたいと思います