Search
Duplicate
🗂️

파일 시스템의 기초

간단소개
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
Linux
Scrap
태그
9 more properties
CentOS 리눅스 시스템 & 네트워크

0. 개요

리눅스 시스템에는 시스템을 동작시키는 데 필요한 수많은 파일이 있다.
파일 시스템은 이런 디렉토리나 파일을 체계적으로 관리할 수 있도록 도와주는 것이다. 디스크나 USB 메모리 같은 저장장치에 파일 시스템을 생성해야 파일과 디렉토리를 만들 수 있으며, 파일 시스템은 디렉토리 계층 구조와 연결되어야 사용자가 사용할 수 있다

1. 리눅스 파일 시스템의 종류

1) 리눅스 고유의 디스크 기반의 (표준) 파일 시스템 : ext1, ext2, ext3, ext4, XFS
2) 리눅스에서 지원하는 파일 시스템 :
3) 특수 용도의 가상 파일 시스템 :
디스크가 아닌 메모리에 생성되어 사용되는 가상 파일 시스템으로 특수한 용도를 가지고 필요에 따라 생기거나 없어진다.
-현재 시스템에서 지원하는 파일 시스템 확인 : cat /proc/filesystems

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

-ext4 파일 시스템의 구조
ext4 파일 시스템은 효율적으로 디스크를 사용하기 위해 저장 장치를 논리적인 블록의 집합으로 구분한다. 블록 그룹의 개수는 장치 크기를 블록 그룹의 크기로 나눈 값이다.
블록 그룹은 세 가지 유형이 있다.
그룹 0 패딩: 블록 그룹 0의 첫 1024바이트는 x86 부트 섹터와 부가 정보를 저장하기 위한 것이다
슈퍼 블록 : 파일 시스템과 관련된 다양한 정보가 저장된다. 슈퍼 블록에 문제가 생기면 전체 파일 시스템을 사용할 수 없게 된다. 따라서 슈퍼 블록은 복사복은 만들어 두고 필요한 경우 이를 사용하여 복구한다.
슈퍼 블록에는 아래의 정보가 포함되어 있다.
그룹 디스크립터 : 그룹 디스크립터는 아래의 정보를 포함하고 있다.
GDT 예약 블록 : 그룹 디스크립터의 확장 예비 공간
데이터 블록 비트맵 : 블록 그룹에 포함된 데이터 블록의 사용 여부 확인 가능
inode 비트맵: inode 테이블의 사용 여부 확인 가능
inode 테이블 : inode 테이블
데이터 블록: 실제 파일의 데이터가 저장된다. 일반 파일은 블록에 파일 내용을 저장하고 디렉토리는 해당 디렉토리에 있는 파일이나 서브 디렉토리의 정보(inode)가 저장된다.
-inode의 구조
inode에는 크게 두 부분, 파일의 정보를 저장하는 부분과 실제 파일 내용이 저장되어 있는 데이터 블록의 주소를 저장하는 부분으로 나누어진다.
데이터 블록을 저장하는 부분은 직접 블록, 간접 블록, 이중 간접 블록으로 구분된다. 직접 블록은 데이터 블록의 주소를 가지고 있고, 간접과 이중 간접 블록은 데이터 블록의 주소를 가지고 있는 블록의 주소가 저장되어 있다. 데이터 블록의 크기는 지정될 수 있다.
-파일 시스템과 디렉토리 계층 구조
실제 파일이 저장되어 있는 파일 시스템은 디렉토리 계층 구조에 연결되어야 사용자가 접근하여 사용할 수 있다!
한 파일 시스템으로 구성할 수도 있고 여러 파일 시스템으로 구성할 수도 있다.
여러 파일 시스템으로 나누어 디렉토리 계층 구조를 구성할 경우 일부 파일 시스템에 문제가 생기더라도 다른 파일 시스템의 파일은 안전하다.

3. 파일 시스템 마운트

파일 시스템을 디렉토리 계층 구조의 특정 디렉토리와 연결하는 것을 마운트라 한다. 위의 그림에서 시스템 3은 /home 디렉토리에, 2는 /user 디렉토리에 마운트한 것이다.
-마운트 포인트
앞서 설명했듯이 디렉토리 계층 구조에 파일 시스템을 마운트하지 않으면 사용자가 접근할 수 없으므로, 마운트하지 않은 파일 시스템의 디렉토리로 이동할 수 없다. 이처럼 어느 디렉토리를 기점으로 파일 시스템은 연결되어 있어야 하며 이 기점을 마운트 포인터라 한다. 물론 루트 파일 시스템을 마운트한 /디렉토리도 마운트 포인트가 된다.
-파일 시스템 마운트 설정 파일
CD_ROM, DVD, USB와 같은 이동식 메모리 저장 장치를 제외한 대부분의 파일 시스템은 부팅할 때 마운트되도록 하는 것이 편리하다.
자동으로 마운트되게 하려면 /etc/fstab 파일에 설정해야 한다. 해당 파일은 파일 시스템의 마운트 설정 정보를 가지고 있다.
행을 순서대로 각각의 구성 요소를 보면
장치명 : 특정 디스크, 각 환경 시스템의 이름이라 생각하면 된다.
마운트 포인트
파일 시스템 종류
옵션 : 파일 시스템의 옵션을 지정하는 옵션이다
덤프 관련 설정 : dump 명령어 실행 가능 여부가 지정되어 있다. 0일 경우 실행 불가, 1일 경우 dump 명령어를 통해 데이터 백업할 수 있다.
파일 점검 옵션 : 0 또는 1이나 2를 지정할 수 있다. 0으로 지정된 파일 시스템은 부팅시 fsck 명령을 실행하지 않으며, 다음으로 1은 루트 파일 시스템이 fsck 명령으로 파일 시스템 점검을 수행하고, 2는 나열된 순서대로 fsck 명령을 사용하여 점검하게 된다.
+
UUID : 파일 시스템을 유일하게 구분해주는 128비트의 숫자. 시스템의 하드웨어의 정보와 시간 정보를 조합하여 랜덤으로 생성된다. UUID로 지정된 장치는 /dev/disk/by-uuid 디렉토리에서 찾을 수 있다.
-마운트 관련 명령
장치를 디렉토리와 연결하려면 mount 명령을 사용하면 된다. 연결을 해제할 때는 unmount명령을 사용하여 수행한다.
//USB 메모리 연결하기 생략
//윈도우용 USB 메모리 연결하기 생략
//CD-ROM/DVD 연결하기 생략