문제

블록 장치 에뮬레이션을 갖춘 플래시 스토리지에있는 파일 시스템에 R/W에 액세스 해야하는 여러 임베디드 시스템이 있습니다. 우리의 가장 오래된 플랫폼은 Compact Flash에서 실행되며 이러한 시스템은 부팅 중에 단일 FSCK를 실행하지 않고 3 년 이상 사용되어 왔으며 지금까지 파일 시스템 또는 CF에 기인 한 실패는 없습니다.

최신 플랫폼에서 우리는 초기 생산에 USB 플래시를 사용했으며 이제 R/W 스토리지를 위해 디스크 온 모듈로 마이그레이션하고 있습니다. 얼마 전 우리는 USB 저장지에서 실행되는 많은 장치에서 파일 시스템에 문제가 있었으므로 도움이 될지 확인하기 위해 E2FSCK를 활성화했습니다. 그것이 밝혀 지자 우리는 나쁜 플래시 메모리의 배송을 받았으므로 일단 교체되면 문제가 사라졌습니다. 우리는 시스템을 더 신뢰할 수 있고 역사적으로 우리는 그것 없이는 괜찮았다는 징후가 없기 때문에 E2FSCK를 비활성화했습니다.

이제 우리는 디스크 온 모듈 장치를 넣기 시작 했으므로 파일 시스템 오류가 다시 나타나기 시작했습니다. 갑자기 시스템이 특정 파일을 읽거나 쓸 수 없으며 방금 발생하는 비상 콘솔에서 파일에 액세스하려고하면 "입력/출력 오류". E2FSCK를 다시 활성화하고 모든 파일이 수정되었습니다.

오라일리의 "내장 된 리눅스 시스템 구축"EXT2 파일 시스템에서 E2FSCK를 실행하는 것이 좋습니다. 그러나 EXT3와 관련하여 언급하지 않으므로 활성화 여부에 대해 약간 혼란스러워합니다.

임베디드 시스템에서 FSCK를 실행하는 데 무엇이 있습니까? 우리는 AR/O 파티션에 바이너리를 배치하는 것을 고려하고 동일한 플래시 장치에서 AR/W 파티션에서 수정 해야하는 파일 만 FSCK를 실수로 중요한 시스템 바이너리를 삭제할 수 없으며, 그러한 종류의 설정에 대한 경험이 있습니까? (좋은/나쁜)?

도움이 되었습니까?

해결책

귀하의 질문에 대한 답은 응용 프로그램이 데이터와 관련하여 어떤 유형의 일관성 요구 사항과 관련이 있다고 생각합니다. 즉, 시스템의 공식적인 종료없이 전원이 손실되면 무엇을 보장해야합니까? 일반적으로 데스크톱 운영 체제 유형 파일 시스템은 특정 애플리케이션을 처리하지 않고도이 모든 것을 처리하고 파일의 파일을 닫고 디스크 캐시의 플러싱 등을 처리해야합니다. 미디어에 헌신 한 사실.

FSCK를 실행하면 파일 시스템이 수정되지만 위의 치료가 없으면 실제로 변경 사항이 실제로 유지되는지 보장 할 수 없습니다. IE : 정전의 결과로 잃어버린 것이 무엇인지 정확히 결정하지는 않습니다.

나는 당신의 바이너리 또는 기타 중요한 읽기 전용 데이터를 별도의 읽기 전용 파티션에 넣는 것이 파일 시스템 구조에 대한 FSCK 보정으로 인해 잘못 던져 질 수 없도록하는 데 도움이된다는 데 동의합니다. 최소한 R/W 데이터가 보유 된 곳과 다른 하위 지시에 넣는 것이 도움이됩니다. 그러나 두 경우 모두 소프트웨어 업데이트를 지원하는 경우 어쨌든 "읽기 전용"영역 작성을 처리 할 계획이 여전히 필요합니다.

응용 프로그램에서는 실제로 Binaries와 같은 것들에 대한 한 쌍의 디렉토리를 유지하고 시스템은 두 영역 중 하나에서 부팅하도록 설정됩니다. 소프트웨어 업데이트 중에 첫 번째 디렉토리를 업데이트하고 미디어에 모든 것을 동기화하고 디스크의 MD5 체크섬을 확인하기 전에 두 번째 사본의 업데이트로 이동합니다. 부팅 중에는 MD5 체크섬이 양호한 경우에만 사용됩니다. 이렇게하면 항상 일관된 이미지를 부팅 할 수 있습니다.

다른 팁

데이브,

나는 항상 여러 번의 재부팅 후에 FSCK를 실행하는 것이지만 매번마다는 아닙니다.

그 이유는 ext3가 저널 -Ed이기 때문입니다. 따라서 WriteBack (Journal-Less)을 활성화하지 않으면 대부분의 경우 메타 데이터/파일 시스템 테이블이 데이터 (파일)와 동기화되어야합니다.

그러나 Jeff가 언급했듯이 파일 시스템 위의 계층을 보장하지는 않습니다. 일부 레코드가 파일 시스템에 기록되지 않았기 때문에 여전히 "손상된"파일을 얻는다는 의미입니다.

어떤 임베디드 장치를 실행 중인지 잘 모르겠지만 얼마나 자주 재부팅됩니까? 재부팅이 제어되면 다시 시작하기 전에 항상 "동기화; 동기화; 동기화"를 수행 할 수 있습니다.

나는 수년간 CF를 직접 사용해 왔으며 매우 드문 경우 파일 시스템 오류가 발생했습니다. FSCK는이 경우에 도움이됩니다.

그리고 당신의 파티션을 분리하는 것에 대해, 나는 그것의 이점을 의심합니다. 파일 시스템의 모든 데이터/파일의 경우 이와 관련된 메타 데이터가 있습니다. 대부분의 경우 파일을 변경하지 않으면 예를 들어. 이진/시스템 파일이면이 메타 데이터가 변경되지 않아야합니다. 크로스 토킹 쓰기 및 읽기와 같은 하드웨어가 결함이 없다면 읽기 전용 파일은 안전해야합니다.

대부분의 문제는 글을 쓸 수있는 일이있을 때 발생하며, 어디에 있는지 상관없이 응용 프로그램이 잘 처리되지 않으면 문제가 발생할 수 있습니다.

도움이되기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top