파일 시스템이란?
- 파일과 디렉토리의 집합을 구조적으로 관리하는 체계
- 어떤 구조를 구성하여 파일이나 디렉토리를 관리하느냐에 따라 다양한 파일 시스템이 존재
- 리눅스 고유의 디스크 기반 파일 시스템 -> ext -> ext2 -> ext3 -> ext4 -> XFS
- 파일은 inode로 관리된다
- 디렉토리는 단순히 파일의 목록을 가지고 있는 파일일 뿐이다
- 특수 파일을 통해 장치에 접근 할 수 있다.
- 효율적으로 디스크를 사용하기 위해 저장 장치를 논리적인 블록의 집합으로 구분
- 일반적으로 블록은 4kb 이고 실제 크기는 시스템의 설정에 따라 변경 가능
블록 그룹 유형
- 블록 그룹 0 : 파일 시스템의 첫 번째 블록 그룹으로 특별하게 그룹 0 패딩과 슈퍼블록, 그룹 디스크립터를 가지고 있다.
- 블록 그룹 a : 파일 시스템에서 첫 번째 블록 그룹이 아닌 블록 그룹으로 그룹 0 패딩이 없으나 슈퍼 블록과 그룹 디스크립터에 대한 복사본을 가지고 있다.
-블록 그룹 b : 파일 시스템에서 첫 번째 블록 그룹이 아닌 블록 그룹으로 그룹 0 패딩, 슈퍼 블록, 그룹 디스크립터가 없고 바로 데이터 블록 비트맵으로 시작한다.
파일 시스템과 관련된 다양한 정보가 저장
- 전제 inode의 개수
- 전체 블록의 개수
- 할당되지 않은 블록의 개수
- 할당되지 않은 inode의 개수
- 첫 번째 데이터 블록의 주소
- 블록의 크기
- 그룹당 블록의 개수
- 마운트 시간
- 파일 시스템의 상태
- 그룹 디스크립터의 크기
슈퍼 블록에 문제가 생길 경우 전체 파일 시스템을 사용할 수 없게 됨
- 슈퍼 블록을 다른 블록 그룹에 복사하고 블록 그룹 0 의 슈퍼 블록을 읽을 수 없을 경우 복사본을 사용하여 복구
- 디렉토리 계층 구조는 리눅스의 전체 파일과 디렉토리를 어떤 구조로 정리하고 관리할 것인지를 정의한 것
- 실제 파일이 저장되어 있는 파일 시스템은 디렉토리 계층 구조에 연결되어야 사용자가 접근 가능
1. 한개의 파일 시스템으로 구성하기
- 디렉토리 계층 구조에서 보이는 모든 디렉토리와 파일을 하나의 파일 시스템으로 구성
2. 여러개의 파일 시스템으로 구성하기
- 디렉토리 계층 구조를 여러 파일 시스템으로 구분하여 구성
- 여러 파일 시스템으로 나누어 디렉토리 계층 구조를 구성할 경우, 일부 파일 시스템에 문제가 생기더라도 다른 파일 시스템은 안전함
- 파일 시스템을 디렉토리 계층 구조의 특정 디렉토리와 연결하는 것
1. 마운트 포인트
- 디렉토리 계층 구조에서 파일 시스템이 연결되는 디렉토리를 마운트 포인트라 함
2. 파일 시스템 마운트 설정 파일
- 리눅스에서 시스템이 부팅될 때, 자동으로 파일 시스템이 마운트되게 하려면
- etc/fstab 파일에서 마운트 설정
mount [옵션] [장치명 또는 마운트 포인트] : 파일 시스템을 마운트 함
unmount [옵션] [장치명 또는 마운트 포인트] : 파일 시스템을 마운트 해제 함
- 디스크의 남은 공간에 대한 정보를 출력
df명령으로 출력되는 항목
- 파일 시스템 장치명
- 파일 시스템의 전체 용량
- 파일 시스템의 사용량
- 파일 시스템의 사용 가능한 남은 용량
- 퍼센트로 나타낸 사용량
- 마운트 포인트
- 디스크의 사용 공간에 대한 정보를 출력한다
- 파일 시스템은 부적절한 시스템 종료나 전원의 불안정, 소프트웨어 오류, 하드웨어 오작동 등 다양한 이유로 손상 가능
- 손상된 파일 시스템의 용량을 확인 할 뿐만 아니라 파일 시스템의 상태를 점검하고 문제가 있을때 복구해야함
inode 및 블록, 디렉터리, 파일 링크 등을 검사하고 필요시 복구 작업도 수행
1. 일반적인 파일 시스템 검사
sudo fsck /dev/sdd1
2. 파일 시스템 강제 검사
sudo fsck -f /dev/sdd2
3. 파일 시스템 종류를 지정해 검사
sudo fsck.ext4 /dev/sdd3
리눅스의 확장 파일 시스템(ext2, ext3, ext4)을 점검한다
장치의 배드 블록을 검사한다
1. 배드 블록 검색하기
sudo badblocks -v /dev/sdd1
2. 검색 결과를 파일로 저장하기: badblocks -o
sudo badblocks -v -o bad.out /dev/sdd1
- 파일 시스템의 기본 슈퍼블록에 문제가 있으면 해당 파일 시스템을 사용할 수 없음
- 이 경우 백업 슈퍼블록 중 하나를 사용하여 파일 시스템을 복구
1. 백업 슈퍼블록의 위치 파악하기 : dumpe2fs
- 파일 시스템의 정보를 출력한다
2. 슈퍼블록에 관한 정보만 추출
sudo dumpe2fs | grep superblock
3. 파일 시스템 복구하기 : e2fsck -b
sudo e2fsck -b 8193 -y /dev/sdd1 // 여기서 8193은 백업 슈퍼블록의 위치, 슈퍼블록에 관한 정보만 추출에서 알 수 있음