플래시 파일 시스템
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
플래시 파일 시스템은 플래시 메모리의 특성, 즉 블록 단위의 데이터 삭제와 제한된 쓰기 횟수 때문에 일반적인 파일 시스템을 사용할 수 없는 문제를 해결하기 위해 개발되었다. 플래시 메모리는 블록 지우기, 무작위 접근, 웨어 레벨링 등의 문제점을 가지고 있으며, 이를 해결하기 위해 로그 구조 파일 시스템의 특성을 활용한 JFFS2, YAFFS, UBIFS, F2FS 등이 개발되었다. 플래시 파일 시스템은 주로 컨트롤러가 없는 임베디드 플래시 메모리인 MTD에 사용되며, 이동식 플래시 메모리 카드나 USB 플래시 드라이브는 자체 컨트롤러를 내장하여 플래시 변환 계층(FTL)을 통해 웨어 레벨링, 불량 블록 관리, 오류 정정 등의 기능을 수행한다. 최초의 플래시 파일 시스템은 M-Systems의 TrueFFS였으며, 이후 다양한 플래시 파일 시스템과 FTL 기술이 개발되어 SSD, eMMC, SD 카드 등 다양한 플래시 기반 저장 장치에 사용되고 있다.
더 읽어볼만한 페이지
- 컴퓨터 메모리 - 플래시 메모리
플래시 메모리는 전기적으로 데이터의 쓰기 및 삭제가 가능한 비휘발성 메모리 기술로, 마스오카 후지오 박사가 발명하여 카메라 플래시와 유사한 소거 방식으로 인해 명명되었으며, NOR형과 NAND형으로 나뉘어 각기 다른 분야에 적용된다. - 컴퓨터 메모리 - 메모리 계층 구조
메모리 계층 구조는 CPU 데이터 접근 속도 향상을 위해 레지스터, 캐시, RAM, 보조 기억 장치 등으로 구성되며, 속도, 용량, 비용이 다른 계층들을 통해 효율적인 메모리 관리를 가능하게 한다. - 파일 시스템 - 부트 섹터
부트 섹터는 시스템 부팅 코드를 담은 저장 매체의 특정 영역으로, 볼륨 부트 레코드(VBR)와 마스터 부트 레코드(MBR)로 나뉘며, BIOS는 이를 실행하고 UEFI는 부트로더를 직접 로드하지만 바이러스 공격에 취약하다. - 파일 시스템 - ZFS
ZFS는 Jeff Bonwick 등이 설계하고 구현한 파일 시스템으로, 데이터 무결성, 스냅샷, RAID-Z 등의 기능을 제공하며, 썬 마이크로시스템즈에서 개발되어 OpenZFS 프로젝트를 통해 다양한 운영체제에서 사용된다.
플래시 파일 시스템 | |
---|---|
기본 정보 | |
이름 | 플래시 파일 시스템 |
종류 | 파일 시스템 |
개발사 | 도시바 샌디스크 인텔 마이크론 삼성전자 |
초기 버전 | 1996년 |
디자인 | |
특성 | 저널링 웨어 레벨링 플래시 메모리 기반 |
종류 | |
대표적인 플래시 파일 시스템 | JFFS JFFS2 YAFFS UBIFS LogFS NILFS F2FS exFAT TFAT FAT32 NTFS Reliance Nitro SafeTI ROM-DOS UDF |
설명 | |
설명 | 플래시 메모리 장치에 데이터를 저장하도록 설계된 파일 시스템이다. |
특징 | 플래시 메모리의 특성(블록 단위 삭제, 제한된 쓰기 횟수 등)을 고려하여 설계되었다. |
기능 | 웨어 레벨링: 플래시 메모리의 각 블록에 대한 쓰기 횟수를 균등하게 분산시켜 수명을 연장하는 기능. 저널링: 파일 시스템의 무결성을 보장하기 위해 파일 시스템 변경 사항을 로그에 기록하는 기능. |
2. 플래시 메모리의 특징과 문제점
플래시 메모리는 블록 장치 계층을 통해 범용 파일 시스템에서 사용할 수 있도록 디스크 드라이브를 에뮬레이트할 수 있지만, 블록 단위로 데이터를 지우고 써야 하며 각 블록의 쓰기 횟수가 제한되는 특징 때문에 몇 가지 문제점이 발생한다.
플래시 메모리의 특성상, 웨어 레벨링 및 오류 정정을 수행하는 컨트롤러를 사용하거나, 플래시 쓰기를 미디어에 분산시키고 NAND 플래시 블록의 긴 지우기 시간을 처리하도록 특별히 설계된 플래시 파일 시스템을 사용하는 것이 가장 좋다. 플래시 파일 시스템은 플래시 저장소를 업데이트해야 할 때 변경된 데이터의 새 복사본을 새 블록에 쓰고, 파일 포인터를 다시 매핑한 다음, 시간이 있을 때 이전 블록을 지우는 방식으로 동작한다.
로그 구조 파일 시스템은 플래시 파일 시스템에 필요한 모든 속성을 가지고 있으며, [1] JFFS2 및 YAFFS가 이에 해당한다.
실제로 플래시 파일 시스템은 컨트롤러가 없는 임베디드 플래시 메모리인 메모리 기술 장치(MTD)에만 사용된다. 이동식 플래시 메모리 카드 및 USB 플래시 드라이브는 웨어 레벨링, 불량 블록 복구, 전원 손실 복구, 가비지 수집 및 오류 정정과 같은 전용 알고리즘으로 MTD를 관리하기 위한 내장 컨트롤러를 가지고 있으므로,[2][3] 플래시 파일 시스템의 사용은 제한적인 이점이 있다.
2. 1. 블록 지우기
플래시 메모리 블록은 데이터를 쓰기 전에 명시적으로 지워야 한다.[1] 블록을 지우는 데는 상당한 시간이 걸릴 수 있으므로, 장치가 유휴 상태일 때 사용하지 않는 블록을 미리 지워두는 것이 좋다.[1]2. 2. 임의 접근
범용 파일 시스템은 탐색 비용이 높기 때문에 가능한 한 탐색을 피하도록 최적화되어 있다. 그러나 플래시 메모리 장치는 탐색 대기 시간을 부과하지 않으므로, 이러한 최적화는 불필요하다.[1]2. 3. 웨어 레벨링 (Wear Leveling)
플래시 메모리 장치는 단일 블록이 반복적으로 덮어쓰여질 때 마모되는 경향이 있다. 플래시 파일 시스템은 쓰기를 균등하게 분산하도록 설계되었다.[1] 플래시 메모리의 각 블록은 쓰기 횟수가 제한되어 있어 특정 블록에만 쓰기 작업이 집중되면 해당 블록의 수명이 빠르게 단축되어 전체 장치의 신뢰성을 저하시킨다. 따라서 쓰기 작업을 여러 블록에 균등하게 분산시키는 웨어 레벨링 기술이 필요하다.3. 플래시 파일 시스템의 종류
플래시 메모리는 데이터를 쓰기 전에 블록을 지워야 하고, 탐색 대기 시간이 없으며, 특정 블록에 쓰기가 반복되면 마모되는 특성을 지니고 있다. 이러한 특성 때문에 일반적인 파일 시스템을 플래시 메모리에 그대로 사용하기는 어렵다. 따라서 플래시 메모리의 문제점을 해결하고 효율적인 데이터 관리를 위해 다양한 플래시 파일 시스템이 개발되었다.
플래시 기반 메모리 장치는 모바일 장치 사용 증가, 가격 하락, 용량 증가 등으로 인해 점점 더 널리 사용되고 있다.
3. 1. 로그 구조 파일 시스템 (Log-structured File System)
로그 구조 파일 시스템은 플래시 메모리의 특성에 맞는 파일 시스템이다.[1] 변경된 데이터를 순차적으로 로그 형태로 기록하고, 나중에 유효하지 않은 데이터를 정리하는 방식으로 작동한다. JFFS2, YAFFS 등이 대표적인 로그 구조 파일 시스템이다.[1]플래시 메모리는 웨어 레벨링과 오류 정정을 수행하는 컨트롤러를 사용하거나, 플래시 쓰기를 미디어에 분산시키고 NAND 플래시 블록의 긴 지우기 시간을 처리하도록 특별히 설계된 파일 시스템과 함께 사용하는 것이 가장 좋다. 플래시 파일 시스템은 플래시 저장소를 업데이트해야 할 때, 변경된 데이터의 새 복사본을 새 블록에 쓰고, 파일 포인터를 다시 매핑한 다음, 시간이 있을 때 이전 블록을 지우는 방식으로 동작한다.
3. 2. F2FS (Flash-Friendly File System)
F2FS (Flash-Friendly File System, 플래시 친화적 파일 시스템)는 삼성전자가 개발하여 리눅스 커널 3.8에 포함된 플래시 파일 시스템이다[21]。F2FS는 플래시 변환 계층(FTL)을 사용하는 SD 카드와 같은 플래시 기반 저장 장치에 최적화되어 있다[22]。3. 3. JFFS, JFFS2, YAFFS (리눅스 환경)
JFFS는 리눅스를 위한 최초의 플래시 전용 파일 시스템이었지만, 곧 JFFS2에 의해 대체되었다. JFFS2는 원래 NOR형 플래시 메모리용으로 개발되었다. 이후 2002년에 NAND형 플래시 메모리를 특별히 처리하기 위해 YAFFS가 출시되었고, JFFS2도 NAND 플래시를 지원하도록 업데이트되었다.[7]로그 구조 파일 시스템의 특성은 플래시 파일 시스템에 바람직하다.[12] 그러한 파일 시스템에는 JFFS2, YAFFS가 있다.
3. 4. UBIFS (리눅스 환경)
UBIFS는 2008년 리눅스 2.6.22[7]에 병합되었다. UBIFS는 초기 병합 이후 적극적으로 개발되어 왔다.[8] UBIFS는 JFFS2 및 MTD 드라이버와 함께 ''infradead.org''에서 [http://www.linux-mtd.infradead.org/doc/ubifs.html 문서]를 호스팅하고 있다. 초기 비교에서 UBIFS는 압축을 사용하면 F2FS보다 빠르다는 것을 보여준다.[9]3. 5. LogFS (리눅스 환경)
LogFS는 JFFS2의 확장성 문제를 해결하기 위해 개발되고 있는 또 다른 리눅스용 플래시 파일 시스템이다.[7]4. 플래시 변환 계층 (FTL, Flash Translation Layer)
블록 장치 계층은 범용 파일 시스템이 플래시 기반 저장 장치에서 사용될 수 있도록 디스크 드라이브를 에뮬레이트할 수 있지만, 다음과 같은 이유로 최적은 아니다.
- 블록 지우기: 플래시 메모리 블록은 쓰기 전에 명시적으로 지워야 한다. 블록을 지우는 데는 상당한 시간이 걸릴 수 있으므로, 장치가 유휴 상태일 때 사용하지 않는 블록을 지우는 것이 좋다.
- 임의 접근: 범용 파일 시스템은 탐색 비용이 높기 때문에 가능한 한 디스크 탐색을 피하도록 최적화되어 있다. 플래시 메모리 장치는 탐색 대기 시간을 부과하지 않는다.
- 웨어 레벨링: 플래시 메모리 장치는 단일 블록이 반복적으로 덮어쓰여질 때 마모되는 경향이 있다. 플래시 파일 시스템은 쓰기를 균등하게 분산하도록 설계되었다.
로그 구조 파일 시스템은 플래시 파일 시스템에 필요한 모든 속성을 가지고 있다.[1] 이러한 파일 시스템에는 JFFS2 및 YAFFS가 포함된다.
플래시 메모리의 특성상, 웨어 레벨링 및 오류 정정을 수행하는 컨트롤러나 플래시 쓰기를 미디어에 분산시키고 NAND 플래시 블록의 긴 지우기 시간을 처리하도록 특별히 설계된 플래시 파일 시스템과 함께 사용하는 것이 가장 좋다. 플래시 파일 시스템의 기본 개념은 다음과 같다. 플래시 저장소를 업데이트해야 할 때, 파일 시스템은 변경된 데이터의 새 복사본을 새 블록에 쓰고, 파일 포인터를 다시 매핑한 다음, 시간이 있을 때 이전 블록을 지운다.
실제로 플래시 파일 시스템은 컨트롤러가 없는 임베디드 플래시 메모리인 메모리 기술 장치(MTD)에만 사용된다. 이동식 플래시 메모리 카드 및 USB 플래시 드라이브는 웨어 레벨링, 불량 블록 복구, 전원 손실 복구, 가비지 수집 및 오류 정정과 같은 전용 알고리즘으로 MTD를 관리하기 위한 내장 컨트롤러를 가지고 있으므로,[2][3] 플래시 파일 시스템의 사용은 제한적인 이점이 있다.
5. 역사
최초의 플래시 파일 시스템은 이스라엘의 M-Systems가 개발한 TrueFFS로, 1992년 7월 캘리포니아주 산타클라라에서 열린 PC-Card 엑스포에서 소프트웨어 제품으로 선보였으며 1993년에 특허를 받았다.[4] TrueFFS는 플래시 메모리를 자유롭게 쓰기 가능한 디스크처럼 사용할 수 있도록 해주는 기술이었다.
초창기 플래시 파일 시스템 중 하나는 1992년 가을에 출시된 마이크로소프트의 FFS2로, MS-DOS와 함께 사용되었다.[5] FFS2에 앞서 "FFS"라는 이전 제품이 있었지만, 자유롭게 쓰기 가능한 디스크가 아닌 WORM(Write Once Read Many) 공간으로 플래시 어레이를 관리하여 플래시 파일 시스템에는 미치지 못했다.
1994년경, 산업 단체인 PCMCIA는 M-Systems의 TrueFFS 설계를 기반으로 한 ''플래시 변환 계층''(FTL) 사양을 승인했다. 이 사양은 M-Systems와 SCM 마이크로시스템즈가 공동으로 작성하고 제안했으며, FTL의 최초 작동 구현을 제공했다. 인텔의 지지를 받은[6] FTL은 PCMCIA 외 미디어에서도 널리 사용되는 플래시 파일 시스템 설계가 되었다.
6. 유니온 파일 시스템(Union filesystems)
OverlayFS, UnionFS, 그리고 aufs는 여러 파일 시스템을 결합하여 사용자에게 단일 트리로 제공할 수 있는 유니온 파일 시스템이다. 이를 통해 시스템 설계자는 일반적으로 읽기 전용인 운영 체제의 일부를 일반적인 읽기-쓰기 영역과 다른 미디어에 배치할 수 있다. OpenWrt는 일반적으로 FTL 없이 원시 플래시 칩에 설치된다. 이는 압축된 읽기 전용 SquashFS와 JFFS2를 결합하기 위해 OverlayFS를 사용한다.
참조
[1]
웹사이트
Optimizing Linux with cheap flash drives
https://lwn.net/Arti[...]
LWN.net
2011-02-18
[2]
웹사이트
Phison's USBkey controller PS2251-63
http://www.phison.co[...]
2011-05-26
[3]
문서
OpenNFM: An open source NAND FTL for SSD and embedded storage module
https://code.google.[...]
[4]
특허
Flash file system, Amir Ban
[5]
웹사이트
Microsoft FFS2 patent
http://patft.uspto.g[...]
2009-01-09
[6]
웹사이트
Understanding the Flash Translation Layer (FTL) Specification
http://staff.ustc.ed[...]
Intel
1998-12-01
[7]
웹사이트
UBIFS
http://lwn.net/Artic[...]
LWN
2008-04-02
[8]
웹사이트
UBI: Fastmap request for inclusion
https://lwn.net/Arti[...]
LKML
2012-09-24
[9]
웹사이트
JFFS2, UBIFS, and the growth of flash storage
https://lwn.net/Arti[...]
LWN
2012-12-11
[10]
웹사이트
Filesystems and storage
http://www.h-online.[...]
The H
2013-01-21
[11]
웹사이트
An f2fs teardown
https://lwn.net/Arti[...]
LWN.net
2012-10-10
[12]
웹사이트
Optimizing Linux with cheap flash drives
http://lwn.net/Artic[...]
LWN.net
2011-02-18
[13]
문서
Phison's USBkey controller PS2251-63
http://www.phison.co[...]
[14]
문서
OpenNFM: An open source NAND FTL for SSD and embedded storage module
https://code.google.[...]
[15]
특허
Flash file system, Amir Ban
[16]
웹사이트
Microsoft FFS2 patent
http://patft.uspto.g[...]
[17]
웹사이트
Understanding the Flash Translation Layer (FTL) Specification
http://staff.ustc.ed[...]
Intel
1998-12-01
[18]
웹사이트
UBIFS
http://lwn.net/Artic[...]
LWN
2008-04-02
[19]
웹사이트
UBI: Fastmap request for inclusion
http://lwn.net/Artic[...]
LKML
2012-09-24
[20]
웹사이트
JFFS2, UBIFS, and the growth of flash storage
http://lwn.net/Artic[...]
LWN
2012-12-11
[21]
웹사이트
Filesystems and storage
http://www.h-online.[...]
The H
2013-01-21
[22]
웹사이트
An f2fs teardown
https://lwn.net/Arti[...]
LWN.net
2012-10-10
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com