개발사 | 엑시스 커뮤니케이션스 |
---|---|
정식 명칭 | 저널링 플래시 파일 시스템 Journaling Flash File System |
기타 | |
지원 운영 체제 | 리눅스 |
저널링 플래시 파일 시스템(영어: Journalling Flash File System 흔히들 JFFS라고 한다.)은 NOR 플래시 메모리 장치에 쓰이는 리눅스 로그 구조 파일 시스템이다. 후속 버전으로는 JFFS2가 있다.
플래시 메모리는 마그네틱 디스크와는 달리 제약 사항이 몇 가지 있다. 특히 플래시 메모리의 어떤 부분을 지우는 것은
ext2와 같은 파일 시스템들은, 대개, 파일 시스템용 자료 구조들을 자체 공간을 사용하는 방식(in-place 방식)으로 업데이트한다. 수정 동작(modification) 후 행해지는, 아이노드(inode) 및 디렉터리 등과 같은 자료 구조들 업데이트 말이다. 웨어 레벨링(wear leveling)의 결여(디스크 수명을 생각하지 않음) 때문에, 전통적인 파일 시스템은 플래시 장치에 적당하지 않다.
JFFS는 플래시 장치를 일종의 순환 로그(circular log)로서 취급한다. 그럼으로써 JFFS는 웨어 레벨링을 하고 있다. JFFS는 노드들 내의 로그(log) 꼬리(tail)에, 파일과 디렉터리에 관한 모든 변경 사항을 기록한다. 각 노드 내에서는 파일 메타데이터를 담고 있는 헤더가 먼저 기록되고, 그것에 이어 데이터가 기록된다. JFFS는 노드들을 오프셋 포인터(offset pointer)를 써서 체인(Hyungrak-Jo)처럼 엮고 있다. 노드들은 처음에는 "유효"(valid) 상태로 시작했다가 나중에 그 노드의 새로운 버전이 생성되면 "쓸모없음"(obsolete) 상태가 된다.
로그의 꼬리(tail)와 로그의 머리(head)사이의 공간이 파일 시스템의 남은 공간(free space)이 된다. 이 남은 공간이 많이 부족할 경우 JFFS는 쓰레기 수집을 한다. 쓰레기 수집 동작 중 머리부터 시작해 유효한 노드들은 로그의 꼬리쪽으로 보내고 쓸모없는 노드들은 그냥 지나친다. 그렇게 함으로써 디스크 공간을 확보한다.
이 글은 운영체제에 관한 토막글입니다. 여러분의 지식으로 알차게 문서를 완성해 갑시다. |