프로그래밍 공부
작성일
2022. 11. 17. 21:02
작성자
WDmil
728x90

리눅스 파일 시스템의 종류

물리적 하드디스크

  • A : 트랙(Track)
  • B : 지리적 섹터 (Geometrical sector)
  • C : 트렉 섹터 (Track Sector)
  • D : 클러스터(Cluster): 트랙 섹터의 집합

파일 시스템

파일과 디렉터리의 집합을 구조적으로 관리하는 체계

어떤 구조를 구성하여 파일이나 디렉터리를 관리하느냐에 따라 다양한 형식의 파일 시스템이 존재

리눅스 고유의 디스크 기반 파일 시스템

  • ext(ext1)
    • Extended File System의 약자로 1992년 4월 리눅스 0.96.c에 포함되어 발표됨
    • 파일 시스템의 최대 크기는 2G, 파일 이름의 길이는 255 바이트 까지 지원
    • inode 수정과 데이터의 수정 시간 지원이 안 되고, 파일 시스템이 복잡해지고 파편화되는 문제
  • ext2
    • ext 파일시스템이 가지고 있던 문제를 해결하고 1993년 1월 발표
    • ex2는 ex3 파일시스템이 도입되기 전 까지 사실상 리눅스의 표준 파일 시스템으로 사용
    • 이론적으로는 32TB까지 가능
  • ext3
    • ext3는 ext2를 기반으로 개발되어 호환이 가능하며, 2001년 11월 공개되었다.
    • ext3의 가장 큰 장점은 저널링 기능을 도입 복구기능 강화가 있다.
    • 파일 시스템의 최대 크기는 블록의 크기에 따라 2~32TB까지 지원한다.
  • ext4
    • ext4 파일 시스템은 1EB(엑사바이트, 1EB = 1,024x1,024TB) 이상의 볼륨과 16TB이상의 파일을 지원
    • ext2 및 ext3와 호환을 유지하며 2008년 12월 발표되었다.
    • 기가바이트 > 테라바이트 > 페타바이트 > 엑사바이트 > 제타바이트

리눅스에서 지원하는 다른 디스크 기반 파일 시스템

파일 시스템 기능
msdos MS-DOS 파티션을 사용하기 위한 파일 시스템 이다.
iso9660 CD-ROM,DVD의 표준 파일 시스템으로 읽기 전용으로 사용된다.
nfs Network File System으로 원격 서버의 디스크를 연결할 때 사용된다.
ufs Unix File System으로 유닉스의 표준 파일 시스템이다.
vfat 윈도 95, 98, NT를 지원하기 위한 파일 시스템 이다.
hpfs HPFS를 지원하기 위한 파일 시스템이다.
ntfs 윈도의 NTFS를 지원하기 위한 파일 시스템이다.
sysv 유닉스 시스템 V를 지원하기 위한 파일 시스템이다.
hfs 맥의 hfs 파일 시스템을 지원하기 위한 파일 시스템이다.

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

파일 시스템 기능
swap 스왑 영역을 관리하기 위한 스왑 파일 시스템이다.
tmpfs Temporay File System으로 메모리에 임시 파일을 저장하기 위한 파일 시스템이며,ㅔ 시스템이 재시작할 때마다 기존 내용이 없어진다.(플레시메모리)
proc proc 파일 시스템으로 /proc  디렉터리이다.
커널의 현재 상태를 나타내는 파일을 가진다.
ramfs 램 디스크를 지원하는 파일 시스템이다.
rootfs RootFileSystem으로 / 디렉터리이다.
스시템 포기화와 관리에 필요한 내용을 관리한다.

/proc/[PID}의 구조

현재 실행중인 프로세스와 관련된 정보를 포함한다.

1 = 현재 운영중인 프로세스 정보

bash 의 이름은 2082이다
2082에 들어가서 ls를 찍어보면 현재 bash에 대한 데이터를 가지고 있는 모습을 볼 수 있다.

현재 시스템이 지원하는 파일 시스템 확인하기.

/proc/filesystems는 현재 커널이 지원하는 파일 시스템의 종류를 알려준다.

 

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

파일은 inode로 관리된다.

디렉터리는 단순히 파일 목록을 가지고 있는 파일일 뿐

특수파일 을 통해 장치에 접근이 가능하다.

 

ext4파일시스템의 구조

효율적으로 디스크를 사용하기 위해 저장장치를 논리적 블록의 집합으로 구분한다.

파일시스템을 구성하는 정보들은 각 Block Group에 분산된다.

Boot Block Block group 0 ....... Block group n-1 Block group n

일반적으로 블록은 4KB이고 실제 크기는 시스템의 설정에 따라 변경이 가능하다.

블록 그룹 유형

  • 그룹 0 : 파일 시스템의 첫번째 블록 그룹으로 특별하게 패딩, 수퍼블록, 그룹 디스크럽터를 가진다.
  • 그룹 a : 파일 시스템에서 첫번쨰 블록이 아닌 그룹으로 0 패딩이 없으나, 수퍼블록, 그룹디스크럽터를 가진다.
  • 그룹 b : 파일 시스템에서 첫번째 블록이 아닌 그룹으로 0 패딩, 수퍼블록, 그룹 디스크럽터가 없고 바로 데이터 블록 비트맵으로 시작한다.

 

그룹 0 패딩

블록 그룹의 첫 1024바이트는 Partition boot sector를 위해 예약된다.

Bootloader인 LINO 또는 GRUB가 들어간다.

수퍼블록

파일 시스템을 대표하는 블록으로 파일 시스템과 관련된 다양한 정보가 저장된다.

  • 전체 inode의 개수
  • 전체 블록의 개수
  • 할당되지 않은 블록 개수
  • 블록 크기
  • 그룹당 블록의 개수
  • 마운트 시간
  • 파일시스템 상태
  • 그룹 디스크립터의 크기

수퍼 블록에 문제가 생기면 전체 파일 시스템을 사용할 수 없게 된다.

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

 

그룹 디스크립터와 GDT예약 블록

그룹 디스크립터도 블록 그룹 0에 있는 것으로 수퍼블록의 다음에 위치한다.

각 Block Group을 관리하는 정보를 저장한다.

  • 블록 비트맵의 주소
  • inode 테이블 주소
  • inode 비트맵의 주소
  • 할당되지 않은 inode의 개수
  • 할당되지 않은 블록 개수
  • 블록 비트맵, inode 비트맵 체크성
  • 디렉터리의 개수

데이터 블록 비트맵과 inode 비트맵

  • 데이터 블록 비트맵은 블록 그룹에 포함된 데이터 블록의 사용 여부를 확인하는데 사용된다.
  • inode 비트맵은 inode 테이블의 항목이 사용중인지를 표시한다.
  • 블록 그룹당 최대 블록의 개수
    • 4KB
    • 블록의 크기가 작을 수록 블록 그룹 개수 증가

inode 테이블과 데이터 블록

  • inode에는 파일 정보를 저장하고 데이터 블록에는 실제 데이터를 저장
  • 연속된 블록으로 연결, 각 블록은 미리 정의된 inode 개수를 포함한다.
  • inode의 첫번째 블록의 번호를 GDT에 저장한다.

 

inode의 구조

  • 파일이나 디렉터리의 모든 정보를 가진 자료구조이다.
  • 모든 inode들은 고유한 주소를 가진다.
  • inode의 주소를 기반으로 inode가 속한 블록 그룹 계산이 가능하다.
  • file system 생성 지정된 개수만큼의 inode를 생성한다.
    • 최대 파일 개수
  • indoe 1 : Super block
  • inode 2 : 루트 디렉토리
728x90