Linux 임베디드 시스템에서 파일 시스템 손상 방지

Linux 임베디드 시스템에서 파일 시스템 손상 방지

저는 요즘 임베디드 시스템 관련 작업을 하고 있습니다. 정상적인 종료가 이루어지지 않으면 전원을 차단해야 합니다. 우리는 Aufs를 읽기 전용 파일 시스템으로 고려하고 있습니다. 하지만 문제는 애플리케이션에 업데이트 가능한 일부 데이터가 있고 사용자가 IP, 날짜 시간 등을 변경할 수 있다는 것입니다. 따라서 시스템에는 추가 R/W 파티션이 필요합니다.

설명이 필요한 몇 가지 질문이 있습니다.

  1. 갑작스러운 정전 시 시스템 손상을 방지하려면 어떻게 해야 합니까?
  2. 이와 같은 임베디드 시스템에 가장 적합한 파일 시스템은 무엇인지 궁금합니다.
  3. ext3/ext4는 저널 파일 시스템과 같이 불완전한 파일을 자동으로 복구하여 항상 백업합니까?
  4. 현재 RAID1의 BTRFS가 최고의 솔루션입니까?
  5. 시스템 손상을 방지하기 위해 임베디드 시스템에 널리 사용되는 다른 솔루션이 있습니까?

답변1

파일 시스템 관점에서 기본 옵션과 함께 ext3 또는 ext4를 사용하면 일반적으로 적절한 충돌 일관성을 얻을 수 있습니다. 정전 이전에 기록되지 않은 파일에 대한 파일 시스템 손실이나 손상은 확실히 발생하지 않습니다.

모든 파일 시스템에서 충돌 일관성을 처리하는 방법에 대해 많은 고려 사항이 있습니다. 애플리케이션이 새 파일만 생성하거나 임시 파일을 생성하여 기존 파일을 덮어쓰고 이름을 변경하여 자동으로 덮어쓰는 경우 ext4의 기본 data=ordered 모드는 괜찮습니다. 파일 및 디렉터리 항목에 대한 fsync() 호출이 완료될 때까지 또는 운영 체제가 캐시를 플러시할 때까지 데이터가 정전 후에도 유지된다는 보장은 없습니다. 이는 또한 저장 장치가 fsync()를 지원한다고 가정합니다.

애플리케이션이 성능에 대한 걱정 없이 파일 메타데이터와 데이터 간의 일관성을 보장해야 하는 경우 data=journal을 사용하여 메타데이터뿐만 아니라 파일 및 파일 시스템 메타데이터에 대한 모든 변경 사항이 기록되도록 할 수 있습니다. 이렇게 하면 파일 크기가 커지지만 추가된 데이터가 손실되어 널 문자로 대체되는 불완전한 쓰기 상황을 방지할 수 있습니다.

관련 정보