완전한 정전으로 인해 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 이미지

이미지는 세 개의 파티션으로 구성됩니다(모두 ext4에 있음).

  • boot: 커널과 해당 자산을 포함합니다.
  • root: 메인 파일 시스템
  • data:저장 데이터(예: 로그)

처음 두 개는 읽기 전용 모드입니다. 세 번째만이 읽기와 쓰기를 허용합니다.

우리는 주로 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

그 외 세부 사항

  • 우리는 테스트에서 두 개의 보드였으며 그들은동일한이미지 중 하나는 SD 카드를 사용하고 다른 하나는 임베디드 emmc를 사용합니다. 문제가 나타남오직SD 카드 보드에.

  • 마지막 정전이 발생하기 전(보드가 제대로 부팅되지 않기 전) ext4 fs 오류에 대한 커널 로그가 있었습니다.

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

이 오류를 이해할 수 없습니다. 도와주실 수 있나요?

좋은 하루 되세요!

관련 정보