예기치 않은 전원 손실로 Linux 설치가 손상 될 수 있습니까? 또는 olimex와 같은 Linux 임베디드 보드

Raspberry Pi, Beagle Board / Bone 또는 olimex와 같은 Linux 임베디드 보드 (Debian 실행)에서 응용 프로그램을 개발 중입니다. 보드는 전기가 예기치 않게 차단되는 환경 (PSU 등을 배치하기가 너무 복잡함)에서 작동하며 매일 몇 번 발생합니다. 예기치 않은 정전으로 인해 Linux 운영 체제에서 충돌 / 문제가 발생하는지 궁금합니다. 내가 걱정해야 할 것이 있다면, 예기치 않은 정전으로 인한 OS 손상을 방지하기 위해 무엇을 제안 하시겠습니까?

추신. 응용 프로그램은 일부 데이터를 저장 매체 (SD 카드)에 기록해야합니다. 읽기 전용으로 마운트하는 것이 적합하지 않다고 생각합니다.



답변

예기치 않은 전원 차단으로 인해 파일 시스템 데이터가 손상 될 수 있습니다. 예를 들어 프로세스가 파일 쓰기를 시작했지만 아직 파일 쓰기가 완료되지 않은 경우 파일의 절반 만 기록 될 수 있습니다. 이제 커널 업그레이드의 절반이되었을 때 정전이 발생한다고 상상해보십시오.

l0b0이 작성한 것처럼 저널링 파일 시스템을 사용하면 실제로 수행 한 작업을 추적 할 수 있으므로 도움이됩니다. l0b0가 연결하는 위키 피 디아 정보 이외에, 당신은에 관심이있을 수 있습니다 /unix/12699/do-journaling-filesystems-guarantee-against-corruption-after-a-power-failure 아니라 .

프로그래머는 분명히 파일 쓰기를 처리하는 방법을 신중하게 고려해야하므로 파일이 원자 프로세스가됩니다 (즉, 완전히 수행되거나 전혀 수행되지 않지만 결코 반으로 끝나지 않음). 상당히 복잡한 문제입니다.


답변

OS 손상 가능성을 최소화하려면 SD 카드에 별도의 “시스템”및 “데이터”파티션을 두는 것이 가장 좋습니다. 이렇게하면 “시스템”파티션을 읽기 전용으로 마운트하고 “데이터”파티션에서 탄력성이 높은 FS를 사용할 수 있습니다.

또한 대부분의 보드는 전력 요구 사항이 매우 낮아 배터리 백업이 가능합니다. Raspberry Pi 용 “LiPo rider”보드는 기본 UPS로 사용하여 전력 손실시 깨끗하게 종료 할 수 있습니다.


답변

이것은에 달려 있습니다

  1. 당신이 사용하고 있는지 저널링 파일 시스템
  2. 애플리케이션이 중단 된 처리를 얼마나 잘 처리 할 수 ​​있는지

예를 들어 파일을 처리하고 결과가 계산 될 때 (입력 라인 당 하나의 출력 라인) 다른 파일에 결과를 기록하는 응용 프로그램을 고려하십시오. 처리 중에 전원이 차단되고 재시작 후 동일한 응용 프로그램이 실행되면 입력 파일의 시작 부분부터 처리를 다시 시작할 수 없으며 출력 파일에 중복 정보가 포함됩니다.

가상의 복잡한 시스템에 대해 명확한 것을 말하기는 매우 어려울 수 있지만 가장 안정적인 Linux 소프트웨어는 충돌을 아주 잘 처리 할 수있는 것 같습니다.


답변

특정 파일 시스템을 언급 한 사람이 없기 때문에 최신 파일 시스템 (ext3, ext4, ntfs)은 저널링 으로 인해 이전 파일 시스템 (ext2, ext, fat32)보다 훨씬 더 충돌을 처리 할 수 ​​있습니다 .

하드 드라이브가 충돌 하지 않고 거짓말을 하지 않는다고 가정하면 완전한 정전이 파일 시스템을 손상시키지 않아야합니다. 기록중인 개별 파일이 여전히 손상 될 수 있으므로 정전이 발생했을 때 OS를 업데이트하는 도중에 있으면 OS를 중단시킬 수 있습니다.