techblog

Ubuntuで急に読み込み専用ファイルシステムになった

Raspberry Pi 4上のUbuntuで読み取り専用ファイルシステム問題を解決。fsckを用いた詳細な修復手順を備忘録として共有。

目次

概要

Raspberry Pi 4 Model B Rev 1.2のUbuntu 20.10にて、Kubernetes v1.20.4を動かしており、POD上でgitlabの日次バックアップを実施している時間帯でファイルシステムが壊れ、読み込み専用ファイルシステムになっておりました。

これらの影響により、nodeが使用不可になり、名前解決が出来ない状態に陥りました。

備忘録として対応したことを記録する。

警告:fsck コマンドを使用して、システム領域を修正する場合は、手動で電源 Off/On できる環境で実施するようにしてください。

事象

/root/ 配下にtouchコマンドができない状態を確認。

touch test

touch: 'test' に touch できません: 読み込み専用ファイルシステムです

名前解決不可であることを確認。

curl ifconfig.io

curl: (6) Could not resolve host: ifconfig.io

Failed to start Network Name Resolution. となり、名前解決サービスが起動不可になることを確認。

systemctl status systemd-resolved

● systemd-resolved.service - Network Name Resolution
     Loaded: loaded (/lib/systemd/system/systemd-resolved.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Tue 2021-07-20 20:44:25 JST; 2s ago
       Docs: man:systemd-resolved.service(8)
             https://www.freedesktop.org/wiki/Software/systemd/resolved
             https://www.freedesktop.org/wiki/Software/systemd/writing-network-configuration-managers
             https://www.freedesktop.org/wiki/Software/systemd/writing-resolver-clients
    Process: 2930 ExecStart=/lib/systemd/systemd-resolved (code=exited, status=226/NAMESPACE)
   Main PID: 2930 (code=exited, status=226/NAMESPACE)

 7月 20 20:44:25 k8s-node-a systemd[1]: systemd-resolved.service: Start request repeated too quickly.
 7月 20 20:44:25 k8s-node-a systemd[1]: systemd-resolved.service: Failed with result 'exit-code'.
 7月 20 20:44:25 k8s-node-a systemd[1]: Failed to start Network Name Resolution.

現在時刻がおかしくなることを確認。

date

2021年  7月 20日 火曜日 20:37:43 JST

対処

/(ルート) システムで書き込みが出来ない状態になっていますので、fsckコマンドを使用し、ファイルシステムの修正をします。

ファイルシステム修正を実施するデバイスの確認をおこないます。

fdisk -l

...[中略]...
ディスク /dev/sda: 57.76 GiB, 62018519040 バイト, 121129920 セクタ
Disk model: USB 3.0 DISK
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0x254a9658

デバイス   起動 開始位置  最後から    セクタ サイズ Id タイプ
/dev/sda1  *        2048    526335    524288   256M  c W95 FAT32 (LBA)
/dev/sda2         526336 121129919 120603584  57.5G 83 Linux

デバイス /dev/sda2/(ルート) となります。

df -PTh

Filesystem     Type   Size  Used Avail Use% Mounted on
tmpfs          tmpfs  380M   19M  362M   5% /run
/dev/sda2      ext4    57G   29G   26G  53% /
tmpfs          tmpfs  1.9G     0  1.9G   0% /dev/shm
tmpfs          tmpfs  5.0M  4.0K  5.0M   1% /run/lock
tmpfs          tmpfs  4.0M     0  4.0M   0% /sys/fs/cgroup
/dev/sda1      vfat   253M  153M  100M  61% /boot/firmware
tmpfs          tmpfs  380M  8.0K  380M   1% /run/user/1000

fsck コマンドを使用し、対象のデバイスを修復します。

修正<y>? のように修正するか確認がでるので yes を押します。

他にも、修正箇所がある場合、都度確認が求められますので yes を押します。

fsck -f /dev/sda2

fsck from util-linux 2.36
e2fsck 1.45.6 (20-Mar-2020)
Pass 1: Checking iノードs, blocks, and sizes
Iノードs that were part of a corrupted orphan linked list found.  修正<y>? yes
Iノード 34490 was part of the orphaned iノード list.  FIXED.
Iノード 1181537 has a extra size (11824) which is invalid
修正<y>? yes
...[中略]...
writable: ***** ファイルシステムは変更されました *****
writable: ***** REBOOT SYSTEM *****
writable: 412572/3769136 files (0.2% non-contiguous), 7686354/15075448 blocks

ファイルシステムの修復が完了すると、 reboot する必要がありますので、手動で電源 Off/On します。

筆者の環境では、ファイルシステム修正後、 reboot コマンド、 shutdown コマンドが使用出来ない状態となったため、手動で再起動しています。

対処後

対処後、冒頭の事象で確認したコマンドを打ち、問題ないことが確認できれば問題ありません。

まとめ

原因はまったく分かりませんが、今後、発生しないことを祈ります。