리눅스데브코스 [5주차 - 4]< Filesystem and Disk>

심우열·2023년 5월 6일
0

1. 리눅스 파일 시스템

파일 시스템이란?

  • 파일과 디렉토리의 집합을 구조적으로 관리하는 체계
  • 어떤 구조를 구성하여 파일이나 디렉토리를 관리하느냐에 따라 다양한 파일 시스템이 존재
  • 리눅스 고유의 디스크 기반 파일 시스템 -> ext -> ext2 -> ext3 -> ext4 -> XFS

1. 리눅스 파일 시스템의 구조

1. 리눅스의 모든 파일 시스템의 기본 개념

  • 파일은 inode로 관리된다
  • 디렉토리는 단순히 파일의 목록을 가지고 있는 파일일 뿐이다
  • 특수 파일을 통해 장치에 접근 할 수 있다.

2. ext4 파일 시스템의 구조

  • 효율적으로 디스크를 사용하기 위해 저장 장치를 논리적인 블록의 집합으로 구분
  • 일반적으로 블록은 4kb 이고 실제 크기는 시스템의 설정에 따라 변경 가능

블록 그룹 유형

  • 블록 그룹 0 : 파일 시스템의 첫 번째 블록 그룹으로 특별하게 그룹 0 패딩과 슈퍼블록, 그룹 디스크립터를 가지고 있다.
  • 블록 그룹 a : 파일 시스템에서 첫 번째 블록 그룹이 아닌 블록 그룹으로 그룹 0 패딩이 없으나 슈퍼 블록과 그룹 디스크립터에 대한 복사본을 가지고 있다.
    -블록 그룹 b : 파일 시스템에서 첫 번째 블록 그룹이 아닌 블록 그룹으로 그룹 0 패딩, 슈퍼 블록, 그룹 디스크립터가 없고 바로 데이터 블록 비트맵으로 시작한다.

3. 슈퍼블록

파일 시스템과 관련된 다양한 정보가 저장

  1. 전제 inode의 개수
  2. 전체 블록의 개수
  3. 할당되지 않은 블록의 개수
  4. 할당되지 않은 inode의 개수
  5. 첫 번째 데이터 블록의 주소
  6. 블록의 크기
  7. 그룹당 블록의 개수
  8. 마운트 시간
  9. 파일 시스템의 상태
  10. 그룹 디스크립터의 크기

슈퍼 블록에 문제가 생길 경우 전체 파일 시스템을 사용할 수 없게 됨

  • 슈퍼 블록을 다른 블록 그룹에 복사하고 블록 그룹 0 의 슈퍼 블록을 읽을 수 없을 경우 복사본을 사용하여 복구

4. 파일 시스템과 디렉토리 계층 구조

  • 디렉토리 계층 구조는 리눅스의 전체 파일과 디렉토리를 어떤 구조로 정리하고 관리할 것인지를 정의한 것
  • 실제 파일이 저장되어 있는 파일 시스템은 디렉토리 계층 구조에 연결되어야 사용자가 접근 가능

1. 한개의 파일 시스템으로 구성하기

  • 디렉토리 계층 구조에서 보이는 모든 디렉토리와 파일을 하나의 파일 시스템으로 구성

2. 여러개의 파일 시스템으로 구성하기

  • 디렉토리 계층 구조를 여러 파일 시스템으로 구분하여 구성
  • 여러 파일 시스템으로 나누어 디렉토리 계층 구조를 구성할 경우, 일부 파일 시스템에 문제가 생기더라도 다른 파일 시스템은 안전함

2. 파일 시스템 마운트

1. 마운트란?

  • 파일 시스템을 디렉토리 계층 구조의 특정 디렉토리와 연결하는 것

1. 마운트 포인트

  • 디렉토리 계층 구조에서 파일 시스템이 연결되는 디렉토리를 마운트 포인트라 함

2. 파일 시스템 마운트 설정 파일

  • 리눅스에서 시스템이 부팅될 때, 자동으로 파일 시스템이 마운트되게 하려면
  • etc/fstab 파일에서 마운트 설정

2. 마운트, 마운트 해제 명령 : mount, unmount

mount [옵션] [장치명 또는 마운트 포인트] : 파일 시스템을 마운트 함
unmount [옵션] [장치명 또는 마운트 포인트] : 파일 시스템을 마운트 해제 함

3. 디스크 관리

1. 파일 시스템 별 디스크 사용량 확인하기 : df [옵션][파일시스템]

  • 디스크의 남은 공간에 대한 정보를 출력

df명령으로 출력되는 항목

  1. 파일 시스템 장치명
  2. 파일 시스템의 전체 용량
  3. 파일 시스템의 사용량
  4. 파일 시스템의 사용 가능한 남은 용량
  5. 퍼센트로 나타낸 사용량
  6. 마운트 포인트

2. 디렉토리나 사용자 별 디스크 사용량 확인하기: du [옵션][디렉토리]

  • 디스크의 사용 공간에 대한 정보를 출력한다

3. 파일 시스템 검사하고 복구하기

  1. 파일 시스템은 부적절한 시스템 종료나 전원의 불안정, 소프트웨어 오류, 하드웨어 오작동 등 다양한 이유로 손상 가능
  2. 손상된 파일 시스템의 용량을 확인 할 뿐만 아니라 파일 시스템의 상태를 점검하고 문제가 있을때 복구해야함

1. 파일 시스템 검사하기 : fsck

inode 및 블록, 디렉터리, 파일 링크 등을 검사하고 필요시 복구 작업도 수행

1. 일반적인 파일 시스템 검사

sudo fsck /dev/sdd1

2. 파일 시스템 강제 검사

sudo fsck -f /dev/sdd2

3. 파일 시스템 종류를 지정해 검사

sudo fsck.ext4 /dev/sdd3

2. 파일 시스템 검사하기: e2fsck

리눅스의 확장 파일 시스템(ext2, ext3, ext4)을 점검한다

3. 배드 블록 검사하기 : badblocks

장치의 배드 블록을 검사한다

1. 배드 블록 검색하기

sudo badblocks -v /dev/sdd1

2. 검색 결과를 파일로 저장하기: badblocks -o

sudo badblocks -v -o bad.out /dev/sdd1

4. 백업 슈퍼블록을 이용해 파일 시스템 복구하기

  • 파일 시스템의 기본 슈퍼블록에 문제가 있으면 해당 파일 시스템을 사용할 수 없음
  • 이 경우 백업 슈퍼블록 중 하나를 사용하여 파일 시스템을 복구

1. 백업 슈퍼블록의 위치 파악하기 : dumpe2fs

  • 파일 시스템의 정보를 출력한다

2. 슈퍼블록에 관한 정보만 추출

sudo dumpe2fs | grep superblock

3. 파일 시스템 복구하기 : e2fsck -b

sudo e2fsck -b 8193 -y /dev/sdd1
// 여기서 8193은 백업 슈퍼블록의 위치, 슈퍼블록에 관한 정보만 추출에서 알 수 있음
profile
Dev Ops, "Git, Linux, Docker, Kubernetes, ansible, " .

0개의 댓글