完全な停電により、Embedded Linux(A20 Olimex Lime 2)で破損したEXT4ファイルシステム

完全な停電により、Embedded Linux(A20 Olimex Lime 2)で破損したEXT4ファイルシステム

コンテキスト

私は私が理解できないEXT4ファイルシステムの問題について議論するために来ました。当社は組み込みLinuxシステムを研究しています。私達はボードを使用しますオリマックスライム2

T2-OLinuXino-LIME2-e16Gs16M-IND

私たちはOlinuxイメージ(A20-OLinuXino-bullseye-minimal-20230515-130040.img.)

効果的にファイルシステムの耐性をテストしようとしています。

どうすればいいですか?

自動ドライバボードAC電源。 AC電源を定期的にオン/オフします。

Olimex Lime 2が起動すると、オートメーションデバイスに接続されているピン出力を切り替えて有効になっており、システムが正常に起動したことを示します。

電源を入れてから2分後にシステムが起動しない場合は、エラーを検出してテストを停止します。

ボードの電源が自動的にオフになると、ボード上のpoweroffスクリプトはシステムをシャットダウンするコマンドを実行します(バッテリがあります)。

2分後、ボードの電源が自動的にオンになり、サイクルが繰り返されます。

RaspberryPiを使用してボードログを保存します。 Raspberry Piはシリアル通信を介して接続されます。

使用されたLinuxイメージ

イメージは3つのパーティションで構成されています(すべてext4にあります)。

  • boot:カーネルとその資産を含みます。
  • root: メインファイルシステム
  • data:保存データ(例:ログ)

最初の2つは読み取り専用モードです。 3番目だけが読み取りと書き込みを許可します。

私たちは主にDockerを使用してアプリケーションをデプロイして実行します。

質問:(

半日が過ぎると、パーティションがdata破損しているように見え、システムが緊急モードで起動します。

[FAILED] Failed to start File Systeâ¦ck on /dev/disk/by-label/data.
See 'systemctl status "systemd-fsck@devâ¦y\\x2dlabel-data.service"' for details.
[DEPEND] Dependency failed for /mnt/data.
[DEPEND] Dependency failed for Local File Systems.
         Starting Load AppArmor profiles...
         Starting Set console font and keymap...
         Starting Create Volatile Files and Directories...
[  OK  ] Finished Set console font and keymap.
[  OK  ] Finished Create Volatile Files and Directories.
         Starting Update UTMP about System Boot/Shutdown...
[  OK  ] Finished Update UTMP about System Boot/Shutdown.
         Starting Update UTMP about System Runlevel Changes...
[  OK  ] Finished Update UTMP about System Runlevel Changes.
[FAILED] Failed to start Load AppArmor profiles.
See 'systemctl status apparmor.service' for details.
[  OK  ] Started ifup for eth0.
         Starting Raise network interfaces...
[  OK  ] Finished Raise network interfaces.
[  OK  ] Reached target Network.
[  OK  ] Reached target Network is Online.
You are in emergency mode. After logging in, type "journalctl -xb" to view
system logs, "systemctl reboot" to reboot, "systemctl default" or "exit"
to boot into default mode.
Give root password for maintenance

完全なログはこちら

FSCK

fsck from util-linux 2.34                                                 
e2fsck 1.45.5 (07-Jan-2020)                                               
Pass 1: Checking inodes, blocks, and sizes                                
Pass 2: Checking directory structure                                      
Directory inode 170220, block #0, offset 0: directory has no checksum.    
Fix? no                                                                   
                                                                          
Directory inode 170220, block #0, offset 0: directory corrupted           
Salvage? no                                                               
                                                                          
e2fsck: aborted                                                           
                                                                          
data: ********** WARNING: Filesystem still has errors **********

デバッグファイルシステム

#> sudo debugfs -R 'ncheck 170220' /dev/sdk3                                                   
                                                                                                 
debugfs 1.45.5 (07-Jan-2020)                                                                                                 
Inode   Pathname                                                                                                             
170220  /system/var/lib/docker/image/overlay2/layerdb/sha256/b5fe77bd4ece5a7f9ed642c1efc878aaddf4e9c9b49514e1ab0e9799505be38d

その他の詳細

  • 私たちはテストで2つのボードでした、同じ画像の1つはSDカードを使用し、もう1つは埋め込みemmcを使用します。問題が現れるただSDカードボードに。

  • 最後の停電が発生する前(ボードが正しく起動しない前)、ext4 fsエラーのカーネルログがありました。

a20-olinuxino login: [   34.961248] EXT4-fs error (device mmcblk0p3): __ext4_find_entry:1547: inode #170220: comm0

このエラーを理解できません。助けてもらえますか?

良い一日になろう!

関連情報