SD 카드 손상 방지


11

내 임베디드 리눅스 장치는 SD 카드를 사용하여 특정 진단 데이터를 저장하는데 내부 플래시에 비해 훨씬 풍부합니다.

문제는 장치가 예기치 않게 꺼지면 카드의 파일 시스템 (FAT32)이 손상된 것입니다.

예기치 않은 정전이나 사용자가 이와 같은 방식으로 전원을 끄는 것을 방지 할 수있는 방법이 없으며 장치는 유지 보수가 필요 없습니다. 더구나, 데이터가 지속적으로 기록되므로 손상이 매우 빈번하며 결함이있는 FS를 감지하면 Linux가 자동으로 읽기 전용으로 다시 마운트합니다.

이를 완화하기 위해 어떤 방법을 제안 하시겠습니까? 시작시 충분하게 fsck.vfat를 실행합니까?

더 많은 정보 :

  • 사용자가 카드를 분리 할 수없는 것으로 간주해서는 안됩니다. 내부 디스크로 생각됩니다. 저장된 데이터는 네트워크 또는 USB 드라이브를 통해 다운로드 할 수 있으며 시스템은 가장 오래된 항목을 자동으로 제거합니다. 즉, 일반 PC에서 읽을 필요가 없습니다.
  • 이 시스템은 현재 FAT, yaffs 및 jffs2를 지원합니다. 커널에 다른 파일 시스템을 추가하는 것도 가능하지만 다른 방법이 있다면 우선 선호합니다.
  • 데이터 손실없이 몇 분 동안이라도 요청시 쓰기를 일시 중단 할 수 있습니다.
  • 부분적인 데이터 손실 또는 사소한 손상은 허용됩니다. 로깅의 완전한 중지는 아닙니다.
  • 대부분의 경우 전원 끄기 이벤트는 완전히 예측할 수 없습니다.
  • 시스템은 ARM9, 200MHZ, 64MB RAM, 32MB 내부 플래시에서 실행 중이며 기본 역할을 위해 대부분의 CPU 전원을 사용합니다. 멋진 리소스가 많은 솔루션을 생각하면서 이것을 고려하십시오.

3
당신은 아마 이미 그것을 고려하고 있지만,이 질문을 방황하는 다른 사람들에게는 언급 할 가치가 있습니다. 대부분의 플래시 카드 (SD, CF 등)는 쓰기 사이클이 수 천주기 (최고)입니다. 데이터 로깅 또는 이와 유사한 작업에 일반 카드를 사용하면 결국 카드를 죽일 수 있습니다 (일반적으로 사람들이 생각하는 것보다 적은 시간 내에).
Chris S

@ChrisS : 이것은 대부분 추가 ​​전용이며, 가장 오래된 항목을 최신 항목으로 대체하며, 쓰기의로드 밸런싱이 매우 우수합니다. 특히 카드를 채우는 데 몇 개월이 걸립니다. 문제는 FAT 항목 자체에있을 수 있지만 컨트롤러가 그것에 대해 합리적인 것을 만든다고 믿습니다.
SF.

기기의 전원이 꺼져 있고이 데이터를 카드에 쓰지 않는 경우 비용은 얼마입니까? 진단 데이터가 작성되지 않은 경우처럼 많은 시간이나 돈을 잃거나 로그 파일이없는 것입니까?
Freiheit

1
@Freiheit : 고객을 위해 판매 된 중요하지 않은 기능은 없지만 다소 모호하지만 다른 사람이 정말로 나쁜 일을하고 희생양을 찾는 경우 법정에서 방어 수단 중 하나를 잃게됩니다. 고장이 발생하기 전의 데이터는 가장 중요합니다. 장치가 마지막 순간까지 올바르게 작동했으며 자체 장애로 인해 이벤트가 재해로 확대되지 않았 음을 증명합니다.
SF.

유명한. 중요한 것을 위해 데이터를 명확하게 캡처하고 있습니다!
Freiheit

답변:


8

block2mtd드라이버를 사용하여 SD 카드를 위해 다른 곳에서 사용하고있는 트랜잭션 jffs2 또는 yaffs (2) 파일 시스템을 사용할 수 있습니다. 그러면 전원이 꺼질 때 데이터 손실 또는 파일 시스템 손상 문제가 해결됩니다.

그래도 다른 문제가 발생할 수 있습니다. SD 카드에는웨어 레벨링 및 섹터 리매핑을위한 자체 메커니즘이있을 가능성이 높기 때문에 jffs2 및 yaffs의 구현 방식이 간섭을 유발하여 SD 카드의 수명 또는 성능을 저하시킬 수 있습니다. 이것이 문제가되지 않으면 시도해 볼 가치가 있습니다.


2GB SD 카드를 채우는 데 한 달 또는 두 달이 걸리므로 완전히 무작위로로드 밸런싱을해도 마모 한계에 도달해도 문제가되지 않습니다.
SF.

5

사용하는 커널이 vfat에 대해 flush 및 / 또는 sync 플래그를 지원하는지 확인하십시오 (일부 버전에서는이를 무시하는 것 같습니다).

아니면 그냥 모두 파일 시스템 페지 또는 몇 개의 고정 된 크기의 파일로 (! 원시 로그 스트림의 경우 것 같은) 모든 것이 하나 개의 파일에 갈 수있는 경우 (사용 파티션)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.