UFFS(Ultra-low-cost Flash File System) 파일시스템을 FUSE로 구현한 테스트 환경입니다. 임베디드 환경에 UFFS를 올리기 전에 Linux 위에서 동작을 검증하는 목적으로 사용합니다.
⚠️ 주의: 부분 구현이 구현체는 UFFS 전체 스펙의 약 60%만 구현한 상태입니다. 기존 UFFS의 완전한 동작을 기대하고 사용하면 안 됩니다.
구현된 기능
- 마운트 / 언마운트
- 트리 구조 (dir / file / data 노드)
- 파일 생성, 쓰기, 읽기
- 디렉터리 생성, 목록 조회
미구현 기능
- 버퍼 캐시
- Copy-on-Write (CoW)
- 가비지 컬렉터
- CRC 검증
- 배드 블록 관리
- 파일 수정 (
truncate미구현으로 덮어쓰기(>) 불가,offset미처리로 추가쓰기(>>) 불가)
- OS: Ubuntu 22.04 (베어메탈)
- FUSE: 2.9.9
sudo apt install gcc make libfuse-devcd uffs-fuse
make# 디스크 이미지 생성 (128블록 * 32페이지 * 528바이트)
dd if=/dev/zero of=disk.img bs=$((128 * 32 * 528)) count=1
# 마운트
./mkuffs /mnt/uffs -f disk.img
# 언마운트
fusermount -u /mnt/uffs# 파일 쓰기/읽기 기본 테스트
bash test_simple.sh
# 파일 생성, 읽기, 쓰기 등 핵심기능에 대한 41개의 테스트
bash test.sh| 블록 | 용도 |
|---|---|
| 0 | 매직 넘버 |
| 1 | 루트 디렉터리 메타데이터 |
| 2~ | 파일/디렉터리/데이터 블록 |
페이지 구조: MiniHeader(4B) + Data(512B) + Tag(16B) = 528B
| 파일 | 설명 |
|---|---|
mkuffs.c |
FUSE 콜백 구현 (getattr, read, write, mkdir 등) |
uffs_tree.c |
트리 노드 관리 (dir / file / data) |
uffs_disk.c |
디스크 읽기/쓰기 (readPage, writePage) |
| Jae-hyeong | Sung-woon | byeong-hyeon |
|---|---|---|
![]() |
![]() |
![]() |
| JaehyeongIm | DingWoonee | bangbang444 |


