tune2fs -l / dev / mmcblk0pN은 파일 시스템 오류를 확인하는 데 신뢰할 수 있습니까?


0

우리는 BBB 기반의 커스텀 보드를 가지고 있으며 256MB 램과 4GB 또는 eMMC를 가지고 있습니다. 우리는 Linux-3.12를 사용하고 있습니다. eMMC에는 ext4 파티션이 있습니다.

주기적으로 실행되고 파일 시스템 오류를 검사하는 스크립트를 작성 중이며 파티션이 마운트되지 않은 경우 e2fsck를 사용하여 오류를 수정하려고합니다.
처음에 나는 e2fsck -n /dev/mmcblk0pN (N is partition number) 파일 시스템 파티션의 오류를 검사합니다.
그러나 위의 명령은 파티션이 마운트되고 파일이 파티션에 만들어 질 때 잘못된 결과를 제공하기 시작했습니다.

이제 파일 시스템 오류를 검사 할 대안이 필요했습니다.
하나는 옵션을 사용하는 것입니다. tune2fs -l 해당 파티션에서 명령이 다음을 확인합니다. Filesystem state 들.

이 필드가 파일 시스템 오류를 검사하는 데 신뢰할 수 있는지 여부는 확실하지 않습니다. 이 필드가 가질 수있는 가능한 값은 무엇입니까? 나는 그 가치를 보았다. clean, clean with errorsnot clean 그러나 나는 man 페이지에서 더 많은 정보를 얻지 못했다.

그래서, ~이다. tune2fs -l /dev/mmcblk0pN | grep “Filesystem state” | grep “error” 신뢰할 수있는 파일 시스템 오류를 감지? 파티션의 파일 시스템 오류를 검사하는 다른 더 좋은 옵션은 무엇입니까?

어떤 제안 / 포인터 / 정보?

답변:


1

"Tune2fs -l"은 커널이 실행 중일 때 파일 시스템 손상 문제를 발견했는지 알려줍니다. 예를 들어, ext4에 파일 삭제를 요청한 경우 ext4가 해당 파일의 일부 블록이 이미 할당 해제 된 것으로 표시되면 할당 비트 맵이 손상되었음을 나타냅니다. allocaiton 비트 맵은 ext4가 발견했을 때 이미 손상되었음을 유의하십시오. 사실, 며칠 또는 몇 주 동안 손상되었을 수 있었고 새로운 파일을 작성했다면 ext4가 이전 파일에 사용 된 새 파일에 대한 블록을 할당했을 가능성이 있으며 사용자가 데이터를 잃어버린 것처럼 보일 수 있습니다 결과.

확실하게 파일 시스템이 일관성이 있는지 또는 부패가 어느 정도 있는지 여부를 확실하게 밝힐 수있는 유일한 방법은 e2fsck를 실행하는 것입니다. 이렇게하려면 파일 시스템을 마운트 해제하거나 읽기 전용 스냅 샷을 작성해야합니다. LVM을 사용하는 경우 읽기 전용 스냅 샷을 만들고 읽기 전용 스냅 샷을 확인한 다음 파일 시스템이 손상된 것으로 확인되면 시스템을 재부팅하고 e2fsck에서 파일 시스템을 수정하도록 할 수 있습니다. 시스템 관리자에게 전자 메일을 보내 파일 시스템을 수정하기위한 가동 중지 시간을 예약하십시오.)

이 모든 것은 파일 시스템이 손상된 경우 하드웨어 문제가 가장 흔한 경우라고 할 수 있습니다. 업스트림이 아닌 안정적인 커널에 대해 회귀 테스트를 주기적으로 실행하기는하지만 커널 버그가 원인 일 수 있습니다. 오랫동안 fs 손상 문제가 없었습니다. 장치 드라이버에 메모리 손상 버그가있을 수 있으며 (a) 장치 드라이버가 업스트림이 아니며 하드웨어 공급 업체가 적절한 품질 제어를 수행하지 않았거나 (b) 버그가 업스트림에서 수정 된 것일 수 있습니다 심지어는 최신의 안정적인 커널로 밀어 넣었지만, 장치 커널은 안정된 커널 시리즈에서 업데이트를받지 못했습니다.

커널이 뭔가 잘못되었을 때 파일 시스템이 손상된 것으로 판명되면 dmesg 또는 / var / log / messages를 긁어 낼 필요가 없습니다. / sys / fs / ext4 // first_error_time 파일을 읽어 볼 수도 있습니다. 이 파일에 0이 아닌 값이 포함되어 있으면 커널에서 파일 시스템 손상을 감지 한 시간 (Unix 시대를 사용)을 알 수 있습니다. 그 디렉토리에있는 errors_count 파일은 얼마나 많은 파일 시스템 훼손이 발견되었는지를 알려줍니다 (하지만 시스템은 동일한 문제를 반복해서 반복해서 반복 할 수 있습니다). 또한 커널에서 파일 시스템 오류를 감지하는 방법을 테스트하려는 경우 trigger_fs_error 파일에 문자열을 쓰도록 시도 할 수 있습니다 (예 : echo "test error"& gt; / sys / fs / ext4 / sda1 / trigger_fs_error "

마지막으로 tune2fs에서 설정할 수있는 오류 비헤이비어 노브를 살펴보십시오. 파일 시스템 손상 문제가 감지 된 후에 더 많은 피해가 발생하지 않도록하려면 문제가 발견되었을 때 읽기 전용으로 다시 마운트하도록 파일 시스템을 구성하려고합니다. 또는 단지 재부팅을 강요하므로 부팅 시퀀스 중에 e2fsck를 실행하여 (더 많은) 사용자 데이터가 손상되거나 손실되기 전에 문제를 해결할 수 있습니다.


자세한 답변 Theodore에 대해 대단히 감사합니다. 현재 우리는 busybox SysVInit을 사용하고 있으며 고유하지 않습니다. fsck 부팅 할 때 확인하십시오. 우리는 가지고 있지 않다. filesystem_check 데몬 같은 systemd 이제 우리가 할 수있는 일은 스크립트를 작성하여 시작시 및 정상적인 시스템 실행 중에 주기적으로 실행하는 것입니다. 부팅 스크립트는 모든 ext4 파티션을 검사하고 다음을 사용하여 오류를 수정합니다. e2fsck -y( Or e2fsck -p), 필요한 경우 다시 부팅하십시오. 정상적인 작동에서는 똑같은 일을하지만 오류를 정정하지는 않겠지 만이를보고합니다.
AnkurTank

나는 두 가지 질문을 가지고있다. 1) 언 마운트 된 파티션에 마운트 된 파일 시스템 오류를 어떻게 안정적으로 확인할 수 있습니까? 또한 파티션을 마운트 해제해야한다고 지적하고 파티션이 마운트되고 쓰기가 진행될 때도 테스트했습니다. e2fsck 올바른 결과를 줄 수는 없습니다. 2) 언 마운트 된 파티션에 파일 시스템 오류가있을 수 있습니까? (하드웨어 badblocks가 범인이 될 수는 있지만 다른 이유는 생각할 수 없다).
AnkurTank

E2fsck는 마운트 된 파일 시스템을 검사 할 때 신뢰할 수있는 결과를 제공 할 수 없습니다. 한 가지 예외는 LVM을 사용하고 읽기 전용 스냅 샷을 만드는 경우입니다. 읽기 전용 스냅 샷은 안정적으로 검사 할 수 있지만 실행중인 파일 시스템을 수정할 수는 없습니다. 위의 모든 내용을 설명했습니다.
Theodore Ts'o

마운트되지 않은 파일 시스템은 (a) 하드웨어 문제, (b) 커널 버그, (c) 플래시 스토리지가 정전 실패 인증을받지 않은 경우 부정한 종료로 인해 오류가 발생할 수 있습니다. 모든 플래시 장치가 정전이 발생하면 올바른 작업을 수행 할 수있는 것은 아닙니다.
Theodore Ts'o

시어 도어에 답해 주셔서 감사합니다. 이 경우 마운트 된 파티션에서 파일 시스템 오류를 모니터하고 그에 기반한 조치를 취하는 방법은 무엇입니까? 그것을 모니터 할 수 없습니까? 우리는 파일 시스템 오류가 읽기 전용으로 다시 마운트 된 상태에 도달하기를 원하지 않으며 사용자가이 작업을 수행 할 수 없습니다. eMMC 데이터 시트에서 확인해야하는 특정 인증이 있습니까? 이것이 정전 인증인지 알 수 있습니까?
AnkurTank
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.