리눅스 파일 시스템

EEEFFEE·2023년 10월 31일

리눅스 명령어

목록 보기
3/6

23.10.31 최초 작성

1. 파일 시스템

  • 파일과 디렉토리의 집합을 구조적으로 관리하는 체계
  • 어떤 구조를 구성해 파일이나 디렉토리를 관리하느냐에 따라 다양한 파일 시스템이 존재

1.1 리눅스 파일 시스템의 종류

  1. ext1

    • 최대 크기는 2GB, 파일 이름의 길이는 225B까지 지원
    • inode 수정과 데이터의 수정 시간 지원이 안되고 파일 시스템이 복잡해지고 파편화되는 문제
  2. ext2

    • 이론적으로 32TB까지 가능
    • ext3가 도입되기 전까지 리눅스 표준 파일 시스템
  3. ext3

    • ext2기반으로 개발되어 호환 가능
    • 저널링 기능을 도입해 복구 기능을 강화했음
    • 파일 시스템의 최대 크기는 블록 크기에 따라 2~32TB까지 지원
  4. ext4

    • 1EB이상의 볼륨과 16TB 이상의 파일 지원
    • ext2, ext3와의 호환성 유지
  5. XFS

    • 64bit 파일시스템으로 최대 16EB까지 가능
    • 2001년부터 리눅스에 이식되었고 대부분 리눅스 배포판에서 지원

1.2 특수 용도의 가상파일 시스템

  1. swap

    • 스왑 영역을 관리하기 위한 스왑 파일 시스템
  2. tmpfs

    • 메모리에 임시 파일을 저장하기 위한 파일 시스템, 시스템이 재시작할 때마다 기존 내용이 없어짐
  3. proc

    • 커널의 현재 상태를 나타내는 파일을 가짐
      -/proc 디렉토리
  4. ramfs

    • 램 디스크를 지원하는 파일 시스템
  5. rootfs

    • root file system으로 /디렉토리
    • 시스템 초기화 및 관리에 필요한 내용을 관리

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

  • 파일은 inode로 관리됨
  • 디렉토리는 단순히 파일의 목록을 가진 파일임
  • 특수 파일을 통해 장치에 접근 가능

2.1 ext4 파일 시스템 구조

  • 효율을 위해 저장장치를 블록 그룹으로 구분

    • 블록 그룹 0 : 파일 시스템의 첫 번째 블록 그룹으로 그룹 0 패딩과 슈퍼블록, 그룹 디스크립터를 가짐
    • 블록 그룹 a : 그룹 0 패딩이 없으나 슈퍼블록과 그룹 디스크립터에 대한 복사본을 가짐
    • 블록 그룹 b : 그룹 0 패딩, 슈퍼블록, 그룹 디스크립터가 없고 바로 데이터 블록 비트맵으로 시작함

2.1.1 슈퍼블록

  • 파일 시스템과 관련된 다양한 정보가 저장
  • 슈퍼 블록에 문제가 생길 경우 전체 파일 시스템을 사용할 수 없게 됨
  • 슈퍼블록을 다른 블록 그룹에 복사하고 블록 그룹 0의 슈퍼블록을 읽을 수 없을 경우 복사본을 사용해 복구
슈퍼블록이 저장하는 정보
전체 inode 갯수전체 블록의 갯수할당되지 않은 블록의 갯수
할당되지 않은 inode의 갯수첫 번째 데이터 블록의 주소블록의 크기
그룹당 블록의 개수마운트 시간파일 시스템의 생태
그룹 디스크립터의 크기

2.1.2 inode 구조

  • mode : 권한
  • owner : 사용자 정보
  • size : 파일 크기
  • timestamps : 파일 생성 시간
  • direct blocks : 12개의 주소 공간 포함, 각 공간이 실제 데이터 블록의 주소를 가리킴
  • indirect blocks : 데이터 블록을 가리키는 direct block를 가리킴

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

  • 디렉터리 계층 구조는 리눅스의 전체 파일과 디렉터리를 어떤 구조로 정리하고 관리할 것인지를 정리 한 것

  • 실제 파일 시스템은 디렉토리 계층 구조에 연결되어야 사용자가 접근 가능

  • 하나 또는 여러 파일 시스템으로 구성할 수 있으며 여러 파일 시스템으로 구성할 경우 하나에 문제가 생기더라도 나머지에 영향을 주지 않음

3. 파일 시스템 마운트

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

  • 마운트 포인트 : 파일 시스템이 연결되는 디렉토리

  • /etc/fstab : 시스템이 부팅될 때 자동으로 파일 시스템이 마운트 되는 설정 정보 저장

    • 장치명 : 파일 시스템 장치 명, UUID로 표기됨
      (로컬 시스템과 다른 시스템에서 파일 시스템을 구분해주는 128비트의 숫자)
    • 마운트 포인트 : 파일 시스템이 마운트될 마운트 포인트를 설정
    • 파일 시스템의 종류 : 파일 시스템의 종류를 설정
    • 옵션 : 파일 시스템의 속성 지정
    • 덤프 관련 설정 : 0-dump 불가, 1-dump 가능
    • 파일 점검 옵션 : 0-부팅 시 fsck 안함, 1-루트 파일 시스템, 2- 루트 파일 시스템 이외

4. 마운트 관련 명령


mount [옵션] [장치명 또는 마운트 포인트]		//지정한 장치 마운트, mount만 입력 시 현재 마운트 되어 있는 정보 출력
umount [옵션] <장치명 또는 마운트 포인트>

///
-t <파일 시스템 종류>: 파일 시스템의 종류 지정
-o <마운트 옵션> : 마운트 옵션 지정
-f : 마운트 할 수 있는지 점검
-r : 읽기만 가능하게 마운트 

마운트 하고자 하는 장치의 파일 시스템을 일치시켜줘야 함

mount /dev/sdb1 /mnt								//mnt를 /dev/sdb1밑으로 마운트

fdisk			//장치명 확인

///
-l : 현재 시스템에서 사용할 수 있는 하드디스크 정보 출력

5. 디스크 관리

5.1 디스크 용량 확인


df [옵션] [파일 시스템]		//디스크의 남은 공간에 대한 정보 출력

///
-a : 모든 파일 시스템을 대상으로 확인
-k, m, h : 디스크 사용량을 kB/mB/사람이 읽기 쉬운 단위로 출력
-t <파일 시스템 종류>: 해당 파일 시스템이 공간을 얼마나 사용하는지 출력
-T : 파일 시스템 종류도 같이 출력

du [옵션] [디렉토리]		//디렉토리나 사용자별 디스크의 사용 공간에 대한 정보 출력

///
-s :특정 디렠토기의 전체 사용량 출력
-h : 디스크 사용량을 알기 쉬운 단위로 출력

5.2 파일 시스템 검사 및 복구


fsck [옵션] [장치명]			// 리눅스 파일 시스템을 점검

///
-f : 강제로 점검
-b 슈퍼블록 : 슈퍼블록으로 지정한 백업 슈퍼블록을 사용함
-y : 모든 질문에 y로 답함
-a : 파일 시스템 검사에서 문제를 발견했을 때 자동으로 복구

파일 시스템 사용 중 정보가 바뀔수도 있으므로 unmount 된 장치에 사용하도록 한다


e2fsck [옵션] [장치명]		//리눅스의 확장 파일 시스템(ext2, 3, 4)을 점검

///
-f : 강제로 점검
-b 슈퍼블록 : 슈퍼블록으로 지정한 백업 슈퍼블록을 사용함
-y : 모든 질문에 y로 답함
-j ext3/ext4 : ext3, ext4 파일 시스템을 검사할 때 지정


badblocks [옵션] <장치명> 		//장치의 배드 볼록을 검색

///
-v : 검색 결과 자세히 출력
-o <출력 파일> : 검사 결과를 파일에 저장


dumpe2fs <장치명>		//백업 슈퍼블록의 위치 파악



0개의 댓글