UBIFS
| 개발사 | 노키아 및 세게드 대학교의 도움 |
|---|---|
| 정식 명칭 | Unsorted Block Image File System |
| 도입 | 2008년 - 리눅스 커널 2.6.27 |
| 구조 | |
| 디렉터리 내용 | B+ 트리 |
| 제약사항 | |
| 파일 이름 내 허용 문자 | NUL 및 슬래시 "/"를 제외한 모든 바이트 |
| 기능 | |
| 포크 | 예 |
| 특성 | 예 |
| 파일 시스템 권한 | 유닉스 권한 |
| 투명한 압축 | 예 |
| 기타 | |
| 지원 운영 체제 | 리눅스 |
UBIFS(Unsorted Block Image File System, UBI 파일 시스템, 더 자세히는 Unsorted Block Image File System)는 비관리형 플래시 메모리 장치를 위한 플래시 파일 시스템이다.[1] UBIFS는 UBI (Unsorted Block Image) 계층 위에 작동하며,[2] UBI 자체는 메모리 기술 장치 (MTD) 계층 위에 있다.[3] 이 파일 시스템은 헝가리의 세게드 대학교의 도움을 받아 노키아 엔지니어들이 개발했다. 개발은 2007년에 본격적으로 시작되었으며, 첫 안정 버전은 2008년 10월에 리눅스 커널 2.6.27에 출시되었다.[4]
UBIFS와 JFFS2의 두 가지 주요 차이점은 UBIFS가 쓰기 캐싱을 지원하고,[5] UBIFS는 여유 공간 계산에서 비관적인 측면에서 오류를 범한다는 점이다.[6] UBIFS는 대용량 NAND 플래시 메모리 장치에서 JFFS2보다 더 나은 성능을 보이는 경향이 있다.[7] 이는 UBIFS 설계 목표의 결과이다.[8] 더 빠른 마운트, 대용량 파일에 대한 더 빠른 접근, 향상된 쓰기 속도. UBIFS는 또한 JFFS2의 온더플라이 압축, 복구 가능성 및 전원 장애 허용 오차를 유지하거나 개선한다.[8] UBIFS의 온더플라이 데이터 압축은 Zlib (DEFLATE 알고리즘), LZO 또는 Zstandard를 허용한다.
UBIFS는 플래시에 인덱스를 저장하는 반면 JFFS2는 메모리에 파일 시스템 인덱스를 저장한다.[9] 이는 볼륨이 마운트될 때마다 테이블을 재구축해야 하므로 JFFS2의 확장성에 직접적인 영향을 미친다. 또한, JFFS2 테이블은 일부 이미지를 사용할 수 없을 정도로 충분한 시스템 RAM을 소비할 수 있다.
UBI
[편집]UBI (Unsorted Block Images)[10]는 플래시 메모리 장치를 위한 지우기 블록 관리 계층이다. UBI는 NAND 플래시 불량 블록 추적 및 웨어 레벨링이라는 두 가지 목적을 수행한다. 웨어 레벨링은 지우기 및 쓰기 작업을 전체 플래시 장치에 분산시킨다. UBI는 상위 계층에 논리 지우기 블록을 제공하고 이를 물리적 지우기 블록에 매핑한다. UBI는 UBIFS가 웨어 레벨링 및 불량 블록을 처리할 필요가 없도록 UBIFS를 위해 특별히 작성되었다. 그러나 UBI는 Squashfs 및 NAND 플래시와도 유용할 수 있다. Squashfs는 NAND 플래시 불량 블록을 인식하지 못한다.
UBI의 문서는 UBI가 완전한 플래시 변환 계층 (FTL)이 아니라고 설명한다. FTL도 불량 블록과 웨어 레벨링을 처리하지만, FTL이 제공하는 인터페이스는 작고 (일반적으로 512바이트) 완전히 독립적으로 쓸 수 있는 섹터가 있는 블록 장치이다. 이와 달리 UBI의 인터페이스는 지우기 블록과 프로그래밍 가능한 페이지(크기가 다르며, 일반적인 블록 장치 섹터보다 훨씬 크다)를 직접 노출하며, UBI를 사용하는 파일 시스템은 블록을 쓰기 전에 어떻게 지워야 하는지에 대한 크기와 제약을 인식해야 한다.
UBI는 어떤 면에서 논리 볼륨 관리자와 유사하다. 일반적인 사용에서 플래시를 고정된 영역으로 분할하는 대신, 단일 UBI 장치가 전체 플래시(부트로더를 위해 예약된 몇 페이지를 제외하고)를 포괄하며, UBI 장치 내에 여러 볼륨이 생성된다. 이는 일부 볼륨이 다른 볼륨보다 더 자주 쓰여지더라도 전체 플래시에 웨어 레벨링이 분산되도록 허용한다. UBI 볼륨은 정적(한 번 쓰여지고 UBI에 의해 CRC-32로 보호되는 전체 파일 또는 이미지를 포함)이거나 동적(자체 데이터 무결성을 담당하는 읽기/쓰기 파일 시스템을 포함)일 수 있다. UBI를 직접 지원하는 유일한 파일 시스템은 UBIFS이지만, gluebi를 사용하여 MTD 장치를 에뮬레이트할 수 있으며, 이를 사용하여 JFFS2 및 YAFFS와 같은 다른 플래시 파일 시스템을 실행할 수 있고, ubiblk를 사용하여 블록 장치를 에뮬레이트할 수 있으며, 이를 통해 Ext4와 같은 일반적인 파일 시스템을 실행할 수 있다.
Fastmap
[편집]리눅스 3.7에서 UBI는 fastmap 지원으로 강화되었다.[11][12] Fastmap은 전체 플래시 장치를 스캔하여 이전에 메모리에서 생성된 정보의 디스크 버전을 유지한다. 코드는 실패 시 전체 스캔의 이전 메커니즘으로 폴백하며, 이전 UBI 시스템은 fastmap 정보를 단순히 무시한다.
같이 보기
[편집]각주
[편집]- ↑ Jonathan Corbet (2008년 4월 2일). “UBIFS”. LWN.net. 2016년 12월 18일에 확인함.
- ↑ “UBIFS – UBI File-System: Big red note”. 2015년 1월 22일. 2016년 12월 18일에 확인함.
It does not work on top of block devices. UBIFS was designed to work on top of raw flash.
- ↑ “UBIFS – UBI File-System: Overview”. 2015년 1월 22일. 2016년 12월 18일에 확인함.
- ↑ Artem Bityutskiy (2008년 3월 27일). “UBIFS – new flash file system”. 2016년 12월 18일에 확인함.
- ↑ “UBIFS – UBI File-System: Write-back support”. 2015년 1월 22일. 2016년 12월 18일에 확인함.
- ↑ “UBIFS FAQ and HOWTO: Why does df report too little free space?”. 2015년 12월 18일. 2016년 12월 18일에 확인함.
- ↑ “UBIFS – UBI File-System: Scalability”. 2015년 1월 22일. 2016년 12월 18일에 확인함.
- 1 2 Bityutskiy, Artem; Hunter, Adrian (2008년 9월 24일). “UBIFS File System” (PDF). 9쪽.
- ↑ Adrian Hunter (2008년 3월 27일). “A Brief Introduction to the Design of UBIFS” (PDF).
- ↑ “UBI – Unsorted Block Images”. 2015년 1월 22일. 2016년 12월 18일에 확인함.
- ↑ Thomas Petazzoni (2012년 10월 3일). “UBI fastmap making its way to mainline”. 2012년 11월 15일에 원본 문서에서 보존된 문서. 2016년 12월 18일에 확인함.
- ↑ Richard Weinberger (2012년 9월 24일). “UBI: Fastmap request for inclusion (v18)”. 2016년 12월 18일에 확인함.
외부 링크
[편집]- 홈페이지
- 세게드 대학교: UBIFS 보관됨 28 9월 2013 - 웨이백 머신
- XO 노트북 (OLPC)에서의 UBIFS 실험
- UBIFS 파일 시스템