임베디드 시스템에서는 저장장치를 하드디스크가 아닌 flash 기반의 저장장치를 많이 쓰고 있습니다.

 nand, nor, sd/mmc  등이 많이 쓰이죠


 전통적으로 nor 의 경우 jffs2 가 많이 쓰이구요

 sd/mmc 의 경우에는 일반 파일시스템이 많이 쓰입니다.

 

 그에 비해 nand 의 경우는 디바이스의 특성에 따른 제한이 있습니다.

 페이지 쓰기와 블럭 지우기 그리고 내구성에 대한 부분입니다.


 jffs2 를 많이 쓰기도 하지만 초기 설계가 다른 부분이 있어 일부에서는 선호하지 않기도 합니다.

 또 어떤 경우에는 ubi 파일 시스템을 쓰기도 하지만 embedded 의 특성상 재부팅 상황에  

 매우 취약점을 드러내는게 약점입니다.


 그에 반해 yaffs 의 경우 nand 기반의 파일 시스템으로 커널에 릴리즈되어 들어오진 않았지만

 별도의 프로젝트로 꾸준하게 많이 쓰이고 있고 체크포인트를 이용한 빠른 마운트와

 간결한 구조의 파일 시스템, gabage collection 지원, 내구성 관리 등이 지원되는 점이 장점입니다.

 그리 어렵지는 않지만 별도로 포팅을 해야 하는 번거로움이 있다는 것 정도가 어려움이겠네요


 전통적으로 nand 의 경우 삼성제품이 가장 많이 쓰이고 모바일에서 특히 많이 쓰입니다.

 낸드를 통한 파일 시스템은 간략히 하면 아래와 같은 구조입니다.


  MTD (blodk)   -   FTL (trranslation) -  FS


 mtd  -  로우레벨 인터페이스

 ftl - 쓰기전에 지우는 특성, 내구성, 배드 관리 등의 기능

 fs - 파일 시스템


 대충 이런 구조와 역할인데 문제는 이런 특성을 고려한 설계의 fs 이 없었다는데에 있습니다.

 yaffs 는 ftl 을 이용하지 않고 직접 mtd 에 접근하는 구조였구요


 그래서 f2fs 라는 파일 시스템이 커널에 들어와 있습니다.

 이 파일시스템의 개발자는 한국... 삼성분입니다.


 중요한 것은 이제 커널에서 mtd - ftl - fs 기반의 파일 시스템을 사용할수 있다는데에 있습니다.

 이제 커널에 릴리즈 되어 있기 때문에 안정적으로 지원이 된다는 것도 장점이겠죠.


 성능 테스트 결과가 있는데 상당히 좋아 보이는군요.

 링크를 한번 보시면 결과가 있습니다.