Log-structured file system

유석현(SeokHyun Yu)·2023년 6월 15일
0

운영체제

목록 보기
21/22
post-thumbnail

1. 개요

1990년대 초반에 로그 기반 파일 시스템(Log-structured File System)이라는 새로운 파일 시스템을 개발하였다.

배경은 다음과 같다.

  • 시스템 메모리 크기 증가

  • 임의 I/O와 순차 I/O의 성능 간의 격차

  • 많은 일반적인 워크로드에서 파일 시스템들의 성능이 좋지 않음

  • 파일 시스템이 RAID를 고려하지 않음

로그 기반 파일 시스템 또는 LFS는 디스크 기록시, 모든 갱신 정보를 세그먼트라 불리는 메모리 자료 구조에 보관한다.

세그먼트가 가득차면, 디스크에서 빈 공간을 찾아 한번에 기록한다.

LFS는 기존의 내용을 덮어 쓰지 않는다.

대신 항상 비어 있는 곳에 세그먼트들을 쓴다.

데이터 블록을 기록하면 메타데이터도 같이 갱신되어야 하기 때문에 해당 파일의 아이노드도 디스크에 기록하고 LFS의 경우 아이노드가 디스크 전역에 흩어져 있기 때문에 아이노드맵(inode map)이라는 자료구조를 개발하였고 또 이 아이노드 맵도 흩어져 있기 때문에 체크포인트 영역(checkpoint region, CR)이라는 영역도 생성하였다.


2. 읽기

디스크에서 파일을 읽는 과정을 따라가보자.

메모리에는 아무것도 없다고 하자.

가장 처음 읽어야 하는 디스크 상의 자료 구조는 체크포인트 영역이다.

체크포인트 영역은 전체 아이노드 맵 블럭들을 가리키는 포인터들을 갖고 있다.

LFS는 아이노드 맵 전체를 읽어서 메모리에 캐시한다.

파일의 아이노드 번호를 구한다.

LFS는 이 번호를 통해 가장 최신의 아이노드를 읽어들인다.

이제 파일에서 블럭을 읽으려면 LFS는 일반적인 unix 파일 시스템이 수행하는 동일한 절차를 밟는다.

직접 포인터를 따라가거나 간접 포인터 또는 이중 간접 포인터를 필요에 따라 따라간다.


3. 블럭의 최신 여부 판다나

세그먼트의 첫 머리에 세그먼트 요약 블럭(segment summary block)이라 부르는 자료구조를 통해 유효성 여부(최신인지)를 파악한다.

profile
Backend Engineer

0개의 댓글