ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Consistency / FSCK (File System Checker)
    운영체제 2024. 6. 15. 14:30

    비휘발성 -> 전원을 꺼도 데이터가 남아있음

    일관성을 유지시킬 필요가 있음

     

    Consistency Definition

    의미 있는 상태에서, 또다른 의미있는 상태로 바뀌도록 보장하는 것

    그 방법 중 FSCK, Journaling 이 있음

    그 외에도 소프트 업데이트, COW, Integrity checking, Optimistic 등이 있음

     

    구체적인 예시

    파일 사이즈가 4KB라 가정

    어떤 파일에 4KB를 추가로 appending 한다고 하면

    데이터 비트맵, inode 블록, 데이터 블록 총 세 번의 write가 필요함

     

    이때, 지연 쓰기를 한다고 하면

    갑자기 전원이 꺼지거나 시스템이 크래시되면 몇몇 라이트는 써지지 않을 수 있음

    1. 데이터 블록만 써짐

    - 문제 없음

     

    2. 데이터 비트맵만 써짐

    - 공간 낭비

     

    3. inode만 써짐

    - 쓰레기 값 읽음

    - inconsistency: inode, bitmap

     

    4. 데이터 블록이랑 데이터 비트맵만 써짐

    - inconsistency: inode 없음

     

    5. 데이터 블록이랑 inode만 써짐

    - inconsistency: 데이터 비트맵 없음

     

    6. inode랑 비트맵만 써짐

    - 쓰레기 값 읽음


    FSCK (File System Checker)

    파일시스템 처음부터 끝까지 쭉 읽으며 일관되지 않은 것 해결

     

    1. 슈퍼블록

    Sanity check

    특정 키 패턴을 슈퍼블록에 써놓음 (매직 넘버)

    그 매직넘버가 그대로면 괜찮은 상태

    요즘엔 전체 자료구조 내용을 해싱해서 디지털 시그니터로 사용

    이러면 전체 내용이 유효한지 아닌지 체크 가능

     

    2. 프리 블록

    모든 Inode와 그것들이 가리키는 데이터 블록을 체크

    만약 비트맵과 비일관적인 케이스가 있으면 고침 (보통 inode 정보를 따름)

     

    3. Inode state

    validity chack in each node, 이상하면 고침

    - Inode links: 전체 디렉토리 트리를 스캔해서 링크를 카운트하고, inode는 있는데 디렉토리가 없는 파일들을 lost+found 디렉토리로 옮김

    - Duplicate pointers: 2개 이상의 inode가 가리키는 블록을 찾음

    - Bad blocks : 유효 범위를 벗어난 곳을 가리키는 경우를 찾음

    4. Directory checks: 파일 시스템에 특정한 지식을 기반으로 디렉토리 체크 (e.g. ".", "..")

     

    문제: 너무 느림

    전부 다 체크하는 거라 느릴 수 밖에 없음

    사실상 최후의 수단이고,

    일반적으론 저널링을 사용

     

    '운영체제' 카테고리의 다른 글

    Consistency other approaches / Ext2,3,4  (0) 2024.06.15
    Consistency / Journaling  (0) 2024.06.15
    Fast File System  (0) 2024.05.28
    파일 시스템 - 레이아웃  (0) 2024.05.20
    파일 - 인터페이스  (0) 2024.05.20
Designed by Tistory.