23.12.21 최초 작성
NAND 플래시 메모리 기반 저장장치
내부에 cpu, DRAM과 같은 하드웨어 존재
FTL (Flash Translation Layer))FTL
비휘발성의 저장장치이며 디스크보다 빠르게 동작 (기계적인 부분 없음)
덮어 쓸 때 먼저 해당 내용을 지워줘야 함
덮어 쓰는데 제한이 있음(Overwrite Limitation)
읽기/쓰기 단위는 4KB, 삭제는 2MB 단위로 이루어짐
갱신 처리 방법
내용 갱신 시 기존 데이터를 DRAM에 복사하고 지운 다음 다시 플래시 메모리로 복사
(처리 속도가 느리고 덮어 쓰기 횟수 소모)
FTL 활용
Out of place update : 다른 위치에 기존 데이터를 기록 및 매핑 변경하고 기존 위치를 무효화 함Garbage collection : 위의 과정을 반복하며 남은 용량이 부족해 졌을 때 유효한 데이터를 복사한 다음 블록 초기화Greedy, Age기반 블록 선정)Wear-leveling 및 Bad block Handling : 각 블록이 Overwrite Limitation에 도달하지 않도록 조절write 동작을 첨부만 가능한 로그 구조로 관리superblock이 파일 시스템을 나타내며 checkpoint region은 inode map, segment usage, segment summary의 위치를 가짐
inode map은 directory inode와 file inode를 가짐
directory inode는 디렉토리의 데이터를 가리킴file inode는 direct pointer block, indirect pointer block을 통해 파일 데이터를 가르킴디스크 블록 대신 세그먼트 단위로 superblock을 제외한 디스크 공간을 관리
write 요청 시 로그를 세그먼트에 순차적으로 씀, 다 사용할 경우 다음 세그먼트에 이어 씀
segment cleaning
valid한 상태로 설정write cost = =
=
utilization에 성능 영향을 받음Greedy : 이용률이 적은 세그먼트 선택Cost-benefit : 세그먼트에 기록된 내용의 나이를 고려write cliff : 활용률이 증가함에 따라 garbage collection에 의한 성능 하락
wandering tree problem : 파일 데이터 수정 시 상위 자료구조를 모조리 수정해야 하는 문제
플래시 메모리에 최적화 된 파일 시스템 (LFS 기반)
Multi-head logging : 다중 로깅을 통해 병렬로 I/O 처리
hot/cold-aware을 통해 자주 사용되는 세그먼트를 cleaning하지 않도록 함
superblock : 파일 시스템 정보checkpoint : consistency 나타냄segment info table : 유효 블록의 정보NAT : 노드 블록의 위치segment summary area : 블록의 정보Main area : 노드와 데이터NAT (Node Address Translation)도입 해 checkpoint와 함께 하위 자료구조를 가르킴checkpoint 수정