23.12.21 최초 작성
일관성 (Consistency)
inconsistency)inconsistency 예시파일 수정이 이뤄지는 경우
bitmap, inode, data block에 수정 발생, 지연 쓰기 중 전원 결함으로 시스템 고장 발생 해 수정된 내용 일부 writedata block에만 write : 문제 Xbitmap에만 write : space leak 발생inode에만 write : garbage read, 비트맵과 아이노드 간 inconsistency발생data block, bitmap에 write : 비트맵과 아이노드 간 inconsistency발생data block, inode에 write : 비트맵과 아이노드 간 inconsistency발생 bitmap, inode에 write : garbage readfsck (file system checker)
파일의 일관성을 확인하고 복구하는 방법
확인 절차
superblock 확인 (magic number, file size 등 체크)free block 확인 (free block 체크)inode 확인 (link 갯수, data block를 여러 inode가 가르키는지, bad block 등 체크)directory 체크 (file name과 inde체크)전부 확인하기 때문에 느린 속도를 가짐
COW (Copy On Write)
데이터의 수정을 요청하면 다른 위치에 갱신하는 방법(out of place update)
transaction 단위의 동작
commit : 해당 수정 내용을 반영 (다른 위치에 기록된 내용)roll back : 수정되지 않은 원래 내용 반영 (같은 위치에 기록된 내용)Journaling
WAL (Write-Ahead Logging)이라고도 하며 수정 요청 시 이후 작업 내용을 미리 기록
전원 결함 발생 시 기록해 놓은 내용을 바탕으로 다시 작업 수행
디스크의 journal공간을 생성해 기록
write 동작 과정
write 요청 시 내용 기록하기 전 commit을 통해 작업 내용 기록
journal공간에 TxB, TxE를 기준으로 작업 내용 기록 → transactionbitmap, inode, data block)checkpointing을 통해 내용 수정
fault handling
redo : commit이후 checkpointing도중 전원 오류 발생 시 journal 내용이 유효하다면 해당 내용을 바탕으로 다시 수행undo : commit도중 오류 발생 시 journal 내용이 유효하지 않다면 journal삭제journal 유효성 판단
TxB, bitmap, inode, data block, TxE 순으로 잘 기록되어있는지 확인journaling 이 도입된 파일 시스템Extent 기반 매핑을 통해 가변적인 크기의 데이터 블록을 가르키는 것이 가능해짐I/O를 순차적으로 하기 위해 블록들을 선할당(Pre-allocation)
선할당 시 inode에 정보를 저장해 consistency를 유지
지연 할당을 사용 해 I/O 횟수 줄임
JBD (Journaling)를 사용
디렉토리 인덱싱(Directory hash)를 사용해 빠른 접근 가능
빠른 fsck을 통해 무결성 확인을 위한 시간 단축
나노 초 단위 관리
inode 구조
inode → index node ~ → leaf node 순으로 각 노드를 가리키며 이를 트리 형태로 관리 함
inode의 경우 오직 root디렉토리만 가리킴index node는 extent의 entry정보를 저장하며 extent를 가리킴leaf node는 extent를 관리하며 extent 실제 물리적 하드 디스크를 매핑함파일이 삭제/생성되면 트리에서 merge/split을 통해 디스크 관리
// /fs/ext4/ext4_extent.h
작은 파일 시스템에서 메타 데이터를 위한 공간을 줄이기 위해 고안
bitmap과 inode 기능을 FAT (File Allocation Table)이란 자료구조로 통합linked list형태로 관리
inode
linked list형태로 관리하며 각 node에 숫자를 기록
데이터 블록의 위치는 디스크 블록과 FAT에 분산해 저장
FAT 주소를 저장FAT 주소를 저장FAT에 EOF로 이동해 파일의 마지막 위치를 인식bitmap
00이면 free block을 나타 냄Network File System)으로 client와 server로 나뉨Google File System)b