2013-05-30 3 views
0

저는 저장 장치에 지속적으로 정보를 써야하는 장치를위한 프로젝트 작업을하고 있습니다. 장치는 전력을 잃을 수 있어야하지만 전력이 손실 될 때까지 수집 한 정보를 정확하게 유지해야합니다.파일에 쓰는 동안 전원이 끊깁니다.

나는 이와 같은 시스템에서 전원이 손실되면 어떻게되는지에 대한 해답을 찾고있었습니다. 전원을 끄고 파일을 닫지 않는 데 문제가 있습니까? 데이터 손상 가능성이 있습니까? 정확한 솔루션은 데이터의 정확한 유형에 따라 달라집니다, 속도 데이터가 저장되어 -

답변

3

일반적인 방법으로 해결하는 것은 매우 어렵다 "전원이 차단 될 수 있습니다 때 안전하게 데이터를 저장하기"의 전체 주제는 감사

"전원이 꺼져있는 동안"정보를 유지하려면 데이터를 비 휘발성 메모리 (플래시, eeprom 또는 배터리 백업 RAM)에 저장해야합니다. 다시 말하지만, 이것은 하드웨어 솔루션입니다.

"파일에 기록 된 데이터를 잃어 버릴 수 있습니까?" 예, 시스템이 쓰기 중일 때 파일 저장 장치의 전원이 끊어지면 파일이 올바르게 쓰여지지 않을 수도 있습니다.

이 답변은 실제로이 상황에 대처하기 위해 하드웨어를 구축/사용자 정의해야하는 자유에 달려 있습니다. 높은 신뢰성을 위해 설계된 시스템은 전원 차단을 감지하고 전원 차단 후 수 초 동안 (때로는 훨씬 더) 실행되는 방법을 가지며 전원 차단이 발생하면 "모든 데이터 저장, 그리고 멋지게 종료 "모드. 일반적으로 이것은 외부 전원이 차단되었다는 신호를 보내는 경보 장치가있는 무정전 전원 공급 장치 (UPS)를 사용하여 수행되며 시스템에서이 신호를 수신하면 비상 종료가 시작됩니다.

UPS를 연결하고 정상적으로 종료 할 방법이 없다면 좋은 데이터 세트를 제공 할 수있는 저널링 파일 시스템과 같은 다른 기능이 있지만 보증 할 수는 없습니다 완전한 데이터 (그리고 당신은 "데이터를 잘라 버리면 (cut off data)"이 파일을 완전히 망가 뜨리지 않도록 fileformat을 처리 할 필요가 있습니다. 전형적인 예는 zip 파일이며, "directory" 파일이. 그래서 당신은 완전한 파일의 99.9 %를 가질 수 있지만, 누락 된 0.1 %는 모든 콘텐츠를 디코딩해야 할 것입니다.

0

예, 데이터 손상이 확실히 가능성이다.

을 그러나이됩니다 몇 가지 지침 예를 들어 (

  • 는 저널링 파일 시스템을 사용하여 최대 저널 모드로 전환 : 순수 소프트웨어 방법으로 그것을 inimize. ext3/ext4 사용 data=journal, 이하).
  • 소프트웨어 버퍼를 피하십시오. 선택의 여지가 없다면 최대한 빨리 버리십시오.
  • 최대한 빨리 파일 시스템을 동기화하십시오 (sync/syncfs/fsync 시스템 호출을 사용하거나 sync 마운트 옵션 사용).
  • 기존 데이터를 덮어 쓰지 않고 기존 파일에 새 데이터를 추가하기 만하면됩니다.
  • 불완전한 데이터 레코드를 처리 할 준비가되어 있어야합니다.

이렇게하면 데이터를 잃어 버린 경우에도 마지막 몇 바이트 만 기록되며 일반적으로 파일 시스템이 손상되지 않습니다.

내가 Unix-y OS를 사용한다는 것을 알게 될 것입니다.지금까지 내가 아는 한, 윈도우는 당신에게 파일 시스템에 대한 제약의 종류를 시행하기에 충분한 제어를 제공하지 않습니다.

관련 문제