리눅스프로그래밍

우분투 리눅스 - 파일 시스템의 구조

헬로월드! 2020. 5. 31. 13:47

리눅스의 모든 파일 시스템은 기본적으로 유닉스 운영체제에서 유래된 공통의 개념을 바탕으로 구현된다.

1) 파일은 inode 로 관리된다.

2) 디렉터리는 단순히 파일의 목록을 가지고 있는 파일일 뿐이다.

3) 특수 파일을 통해 장치에 접근할 수 있다.

 

1. ext4 파일 시스템의 구조

ext4 파일 시스템은 효율적으로 디스크를 사용하기 위해 저장 장치를 논리적인 블록의 집합 ( 블록 그룹, 크기가 4 KB )으로 구분한다. 실제 크기는 시스템 설정에 따라 달라질 수 있다.

 

1) 블록 그룹 0 : 파일 시스템의 첫 번째 블록 그룹 /  그룹 0 패딩 , 슈퍼블록, 그룹 디스크립터를 가지고 있다.

2) 블록 그룹 a : 파일 시스템에서 첫 번째 블록 그룹이 아닌 블록 그룹 / 그룹 0 패딩이 없으나 슈퍼블록과 그룹 디스크립터의 복사본을 가지고 있다.

3) 블록 그룹 b : 파일 시스템에서 첫 번째 블록 그룹이 아닌 블록 그룹 / 그룹 0 패딩, 슈퍼 블록, 그룹 디스크립터가 없고 바로 데이터 블록 비트맵으로 시작한다. 

 

그룹 0 패딩 ) 블록 그룹 0 의 첫 1,024 B 는 x86 부트 섹터와 부가 정보를 저장하는 특별한 용도로 사용된다.

 

슈퍼블록) 파일 시스템과 관련된 다양한 정보 저장된다. => 문제가 생기면 전체 파일 시스템 사용 못하게됨 따라서 다른 블록 그룹에 복사해두고 슈퍼블록을 읽을 수 없을 경우 복사본을 사용하여 복구함! 

 

그룹 디스크립터) 슈퍼블록과 함께 다른 블록 그룹에 복사되어, 블록 그룹 0에 문제가 있을 때 복구하는 데 사용된다.

 

GDT 예약 블록) 그룹 디스크립터 확장을 위한 예비 공간

 

데이터 블록 비트맵) 블록 그룹에 포함된 데이터 블록의 사용 여부 확인 

 

inode 비트맵) inode 테이블의 항목(inode)이 사용중인지 표시 

 

데이터 블록 ) 실제 데이터가 저장되는 곳

 

2. inode 의 구조

inode = > 1) 파일 정보를 저장하는 부분(ls -l 의 결과로 나오는!!)

  2) 실제 파일 내용이 저장되어 있는 데이터 블록의 주소를 저장하는 부분 

으로 나누어진다. 

 

inode 에서 데이터 블록의 주소를 저장하는 부분은 1) 직접 블록, 2) 간접 블록, 3) 이중 간접 블록 으로 구분된다.

직접 블록은 데이터 블록에 대한 주소를 직접 가지고,

간접 블록, 이중 간접 블록은 데이터 블록에 대한 주소를 가지고 있는 블록에 대한 주소가 저장된다.