임베디드 시스템 파일 시스템

2025. 2. 21. 10:55프로그래밍/시스템

 

1. 플래시 기반 파일 시스템

임베디드 시스템에서는 주로 NAND/NOR 플래시 메모리를 저장 장치로 사용하기 때문에, 이를 최적화한 파일 시스템이 필요합니다.

1) JFFS2 (Journaling Flash File System 2) - (https://gangdonggil.tistory.com/263)

  • 특징:
    • NOR 플래시에 최적화됨 (NAND도 지원 가능).
    • 저널링 지원 (크래시 복구 기능).
    • 압축 기능 포함 (Zlib, LZO 압축 지원).
  • 장점:
    • 전원 차단 후 데이터 일관성을 보장.
    • 쓰기 시 메모리 블록이 고르게 사용됨 (Wear Leveling).
  • 단점:
    • 부팅 시 전체 파일 시스템을 스캔해야 하므로 부팅 속도가 느림.
    • 대용량 데이터 처리 시 성능 저하.

2) YAFFS2 (Yet Another Flash File System 2) - (https://gangdonggil.tistory.com/264)

  • 특징:
    • NAND 플래시에 최적화됨.
    • 작은 블록 단위(페이지)로 동작하여 성능이 우수함.
    • 전원 차단 후 빠른 복구 가능.
  • 장점:
    • 부팅 속도가 빠름 (JFFS2보다 빠름).
    • NAND 플래시의 ECC(오류 정정 코드) 및 블록 관리 기능 지원.
  • 단점:
    • NOR 플래시에서는 비효율적.

3) UBIFS (Unsorted Block Image File System) - (https://gangdonggil.tistory.com/265)

  • 특징:
    • NAND 플래시에 최적화됨.
    • JFFS2의 한계를 극복하기 위해 개발되었으며, 블록 기반이 아닌 동적 관리 구조를 가짐.
    • 동적 Wear Leveling 및 데이터 압축 지원.
  • 장점:
    • JFFS2보다 빠른 부팅 속도.
    • 대용량 데이터 처리 가능.
    • 파일 크기 및 디렉터리 크기 제한이 적음.
  • 단점:
    • 상대적으로 복잡한 구조.

4) F2FS (Flash-Friendly File System) - (https://gangdonggil.tistory.com/266)

  • 특징:
    • 삼성에서 개발한 플래시 스토리지 전용 파일 시스템으로, 현재는 리눅스 커널의 일부로 포함되어 있으며, 넓은 오픈소스 커뮤니티에 의해 유지보수되고 있음.
    • NAND 플래시 메모리를 효과적으로 사용하도록 설계됨.
  • 장점:
    • 빠른 성능과 Wear Leveling 지원.
    • SSD, eMMC, UFS 같은 최신 저장 장치에 적합.
  • 단점:
    • 상대적으로 새로운 기술이므로 일부 시스템에서 지원이 부족할 수 있음.

2. 일반적인 파일 시스템

일반적인 블록 기반 저장 장치를 사용하는 임베디드 시스템에서는 다음과 같은 파일 시스템이 많이 사용됩니다.

1) FAT (File Allocation Table)

  • 특징:
    • FAT12, FAT16, FAT32로 구분.
    • SD 카드, USB 드라이브 등에 널리 사용됨.
  • 장점:
    • 호환성이 뛰어나 다양한 운영 체제에서 지원.
    • 단순한 구조로 구현이 쉬움.
  • 단점:
    • 저널링 기능이 없어 전원 차단 시 데이터 손실 가능.
    • 대용량 파일 저장 시 비효율적 (FAT32는 최대 4GB 파일 크기 제한).

2) exFAT (Extended File Allocation Table)

  • 특징:
    • FAT32의 확장 버전으로 4GB 이상의 파일 저장 가능.
    • 최근 마이크로소프트가 exFAT 사양을 공개하고 리눅스 커널에 포함시켜, 라이선스 문제 없이 자유롭게 사용할 수 있음.
  • 장점:
    • SDXC 카드와 같은 대용량 저장 장치에 적합.
    • FAT보다 향상된 성능 제공.
  • 단점:
    • 일부 구형 시스템에서 지원이 부족할 수 있음.

3) ext2/ext3/ext4 (Extended File System)

  • 특징:
    • 리눅스 기반 임베디드 시스템에서 사용됨.
    • 저널링 기능 (ext3, ext4).
  • 장점:
    • 안정적이며, 대용량 파일을 처리할 수 있음.
    • ext4는 성능과 안정성이 뛰어남.
  • 단점:
    • Windows 등 타 OS와의 호환성이 낮음.

3. 네트워크 파일 시스템

네트워크를 통해 파일을 공유하는 임베디드 시스템에서는 다음과 같은 파일 시스템이 사용됩니다.

1) NFS (Network File System)

  • 특징:
    • 네트워크를 통해 파일 시스템을 공유.
    • 리눅스 기반 임베디드 시스템에서 많이 사용됨.
  • 장점:
    • 여러 기기가 같은 파일 시스템을 공유 가능.
  • 단점:
    • 네트워크 의존성이 높아 성능이 불안정할 수 있음.

2) SMB/CIFS (Server Message Block/Common Internet File System)

  • 특징:
    • Windows 및 Linux 간 파일 공유에 사용됨.
    • 최신 버전인 SMB3에서는 보안과 성능이 대폭 개선됨 (암호화 지원, 네트워크 성능 향상).
  • 장점:
    • 윈도우와의 높은 호환성.
    • SMB3는 네트워크 환경에서 빠르고 안정적인 파일 공유 가능.
  • 단점:
    • 구형 SMB1 프로토콜은 보안 취약점이 있어 최신 버전으로의 업그레이드 필요.

4. RAM 기반 파일 시스템

일시적인 데이터 저장을 위한 RAM 디스크 용도로 사용됩니다.

1) tmpfs

  • 특징:
    • 휘발성 메모리에 데이터를 저장하는 파일 시스템.
  • 장점:
    • 매우 빠른 속도.
  • 단점:
    • 전원 차단 시 데이터 손실.

2) ramfs

  • 특징:
    • tmpfs와 유사하지만 크기 제한이 없음.
  • 장점:
    • 동적으로 크기 조정 가능.
  • 단점:
    • 메모리 과다 사용 가능.

5. 결론

임베디드 시스템에서 파일 시스템을 선택할 때 고려해야 할 요소는 다음과 같습니다.

파일 시스템 적합한 환경 주요 특징
JFFS2 NOR 플래시 저널링 지원, Wear Leveling, 부팅 느림
YAFFS2 NAND 플래시 빠른 부팅, NAND 최적화
UBIFS NAND 플래시 동적 Wear Leveling, 대용량 지원
F2FS 플래시 기반 스토리지 빠른 성능, 최신 리눅스 지원
FAT SD 카드, USB 단순한 구조, 높은 호환성
exFAT SDXC, 대용량 저장 장치 4GB 이상 파일 지원, 라이선스 문제 없음
ext3/ext4 리눅스 기반 시스템 저널링 지원, 안정적
NFS 네트워크 공유 원격 파일 시스템 공유
SMB3 Windows-Linux 파일 공유 보안 및 성능 향상됨

파일 시스템 선택은 하드웨어 유형 (NOR/NAND 플래시, SD 카드, HDD), 데이터 무결성 요구 사항, 부팅 속도, 저장 장치 수명 연장 등의 요소를 고려하여 결정하는 것이 중요합니다.