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 = 현재 운영중인 프로세스 정보
현재 시스템이 지원하는 파일 시스템 확인하기.
/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
'대학교 코딩공부 > 운영체제 실습' 카테고리의 다른 글
운영체제실습 기말고사 준비 (0) | 2022.12.01 |
---|---|
13주차 패키지 관리 (0) | 2022.11.23 |
운영체제 실습 11주차 리눅스 시스템, 데몬 프로세스 (0) | 2022.11.11 |
운영체제 실습 프로세스 ( fork, exc 함수 ) (0) | 2022.11.05 |
운영체제 실습 9주차 프로세스 (0) | 2022.10.26 |