문맥
저는 제가 이해할 수 없는 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
이 오류를 이해할 수 없습니다. 도와주실 수 있나요?
좋은 하루 되세요!