We are Architect

11. 파일 시스템 검사하기 본문

운영체제/Linux

11. 파일 시스템 검사하기

the best infra 2024. 11. 29. 16:25

* 파일 시스템 검사 명령어 fsck(file system check)

  • 파일 시스템은 부적절한 시스템 종료나 전원의 불안정, 소프트웨어 오류로 인해서 손상 입을 수 있다.
  • 그래서 해당 시스템의 무결성을 확인하고 이상이 있다면 복구하는 시스템이다. 
  • 시스템 부팅 중에 실행되는 시스템이다. 물론 수동으로도 실행이 가능하다. 
  • fsck명령어는 fsck명령어는 마운트 되지 않은 파일시스템 혹은 읽기 모드의 파일 시스템만 사용해야 한다.
    • 데이터 손상의 위험 : 마운트 된 상태에서 실행하면 파일 시스템의 구조가 동적으로 변경될 수 있음.
    • 커널 캐싱 문제 : fsck명령어로 파일 시스템을 수정하게 되면 디스크의 데이토와 커널이 캐싱하고 있는 데이터 간의 불일치가 발생하여서 오류가 발생할 수 있음.
    • 파일 시스템의 안정성 : 마운트 되지 않고 혹은 단지 읽기 전용 파일 시스템이라면 데이터가 사전에 수정될 일이 없기 때문에 안전하게 파일 시스템의 무결성을 확인하고 수정할 수 있다. 
  • 마운트 해제 후 실행
# sda1은 사전에 기본 디스크로 장착되어 있을 확률이 높어서 sdb1로 예시를 들었다.
sudo umount /dev/sdb1
sudo fsck /dev/sdb1

 

 

  • 루트 파일 시스템 검사
    • 루트 파일 시스템은 해제 할 수 없기 때문에 반드시 복구 모드에서 실행해야 한다. 
# 부팅시 shift 또는 ESC키를 눌러서 복구 모드 실행 후 진행.
sudo fsck /dev/sda1

 

 

  • 읽기 전용 상태로 강제로 검사
# 읽기 모드로 다시 마운트 후 검사. 
sudo mount -o remount,ro /dev/sdb1
sudo fsck /dev/sdb1

 

 

* fsck의 주요 동작 

  • 파일 시스템 검사
    • 파일 시스템의 메타데이터(슈퍼블록, 인덱스 노드, 디렉토리 구조 등)와 데이터 블록을 확인.
    • 손상된 슈퍼블록
    • 잘못된 파일 크기 또는 블록 할당
    • 손실된 인덱스 노드(inode)
    • 불일치하는 디렉토리 항목
    • 잘못된 블록 포인터
  • 파일 시스템 수정
    • 오류가 발견되면 fsck는 문제를 해결하려고 시도.
    • 잘못된 블록 할당 해제: 손상된 데이터 블록을 제거.
    • 잘못된 인덱스 노드 수정: 잘못된 속성을 복구하거나 손실된 파일을 복구.
    • 슈퍼블록 복구: 백업 슈퍼블록을 사용해 복원.
    • 불일치 디렉토리디렉터리 수정: 손상된 디렉터리 항목 정리.

 

* 수정 여부 옵션 

  • 자동 수정 옵션
sudo fsck -y /dev/sdb1

 

 

  • 사용자 요청 확인(기본 설정)
sudo fsck /dev/sdb1

 

 

  • 수정 없이 검사만 수행
sudo fsck -n /dev/sdb1

 

 

* 파일 시스템을 수정해야 할 상황

  • 부팅 오류 : 파일 시스템의 오류로 인해 부팅되지 않을 때.
  • 파일 읽기/쓰기 오류 : I/O error(입출력 오류)가 발생 시.
  • 디스크 손상 : 전원 끊김, 하드웨어 오류, SW충돌 등.