[운영체제] 파일 시스템

이명우·2023년 5월 11일

KOCW - 운영체제(이화여대 반효경 교수)
13장 파일 시스템

파일 시스템

Ext2 파일 시스템

  • 3 개의 indirect ptr - 매우 큰 파일을 가리키기 위해 존재

기존 UNIX 시스템과의 차이점

  • 보통 파일에 접근하는 방법은 그 파일의 메타데이터에 접근 -> 실제 파일 접근 순으로 이루어진다.

  • 만약 메타데이터와 실제 데이터가 먼 거리에 존재할 경우 HEAD의 이동거리는 늘어나게 됨.

  • 이를 개선(메타데이터와 실제 데이터 가까이 저장)시키기 위한 방법이 아래와 같은 블록의 그룹화임

  • 슈퍼 블록 : 파일 시스템에 관한 전체적인 정보를 저장하는 블록

  • 데이터 블록 비트맵 : 사용중인 블록과 빈 블록의 표시

  • 아이노드 비트맵 : 사용중인 아이노드와 빈 아이노드의 표시

  • 아이노드 테이블 : 실제 아이노드의 저장 위치

갑작스런 전원 공급 중단이 일어날 경우?

  • 파일 시스템 일관성 훼손(inconsistency) 발생

  • 만약 위와 같은 상황에서 전원 공급이 중단될 경우 파일 시스템은 비휘발성이라 GO WAST가 그대로 남지만, 버퍼캐시는 휘발성이기 때문에 아무것도 남지 않는다 -> 파일 시스템에는 GO WAST로 저장

Inconsistency 문제 해결을 위한 방법 - journaling

journaling

  • 5~30초 단위로 버퍼캐시에서 수정된 내용을 저널영역에 기록

  • 저널 영역에 쓰는 도중에 crash가 일어날 경우? -> 저널 영역에 있는 정보 모두 소실, 저널 영역 -> 파일 시스템 중에 전원 공급이 중단될 경우에는 그대로 복구 가능

Ext4의 저널링

메타데이터 저널링 모드

  • 메타데이터만 저널링 : 저널링 주기가 도래하면 데이터를 파일시스템에 저장한 후 메타데이터를 저널 영역에 기록, 체크포인트 주기가 도래하면 메타데이터를 파일시스템에 반영

  • 메타데이터만 저널링하면 크래쉬 발생 시 파일시스템 자체가 깨지는 것을 방지할 수 있음

데이터 저널링 모드

  • 메타데이터와 일반데이터를 모두 저널링 : 저널링 주기가 도래하면 데이터와 메타데이터를 모두 저널영역에 기록 -> 체크포인트 주기가 도래하면 데이터와 메타데이터를 파일시스템에 반영\

  • 저널링은 의미 단위의 업데이트가 기본임, 만약 복구가 되었을 경우 사람에게 의미있는 단위로 항상 복구

파일시스템을 위한 버퍼캐시 교체 알고리즘

LRU와 LFU

두 알고리즘의 개선 - LRFU 알고리즘

  • 캐시 블록 x 중 그 가치(value(X))가 제일 적은 블록 삭제

  • LFU적인 성질 : 과거의 모든 참조기록이 현재 시점의 블록 가치 계산에 합산됨

  • LRU적인 성질 : 최근에 사용된 기록일수록 value를 증가시키는데 더 많이 기여함(예전 기록일수록 반대) -> LRU적인 성질

LRFU 알고리즘의 실효성

  • Space overhead : 모든 참조에 대한 시간 기록을 가지고 있어야함 -> 공간적인 오버헤드 발생

  • Time overhead : O(N)만큼의 시간이 걸림(모든 참조 기록 N개를 참조하고 value를 게산해야하기 때문에)

LRFU의 효율적인 구현 방법

  • Space Complexity : t 시점의 시간값과 value값만 있으면 현재의 시점과 비교하여 바로 value를 게산할 수 있음 -> 모든 시점에 대한 정보 필요 x이기 때문에 공간적인 효율성 up

  • Time Complexity : 다시 사용되지 않은 블록들 간에는 가치의 대소관계가 변하지 않는다는 성질을 이용. -> 최소힙을 이용해서 정점 노드에 있는 블록만 out시키면 됨, 만약 어떤 블록의 value가 올라가면 그 블록의 자식과 비교해서 최소힙으로 만들면 됨

profile
백엔드 개발자

0개의 댓글