■ 리눅스 파일 시스템 종류
파일 시스템이란? 파일과 디렉터리의 집합을 구조적으로 관리하는 체계
- 리눅스 고유의 디스크 기반 파일 시스템
초기에 미닉스의 파일 시스템 (MFS)를 이용했으나, 이후 고유 파일 시스템인 ext을 만들어 사용하게 되었다.
대용량 파일 시스템을 위해 XFS도 도입했다. CentOS 7부터 XFS과 ext4를 기본으로 사용한다.
1. ext (Extended File System) : 92년 출시. Linked list로 구현되어 문제가 많다. (파편화, 복잡한 시스템)
2. ext2 : ext 기반으로 문제점을 고치고 확장성을 고려했다! 현재까지 사용되는 파일 시스템
3. ext3 : ext2 기반으로 호환가능 (바로 이식 O). 가장 큰 특징은 저널링* 기능 도입이다.
데이터 복구 기능 강화 버전!! 디스크에 기록하기 전에 먼저 저널에 수정 사항을 기록
4. ext4 : ext2와 ext3와 호환가능. 온라인 조각 모음 기능 지원
5. XFS : 고성능 저널링 파일 시스템.
- 리눅스에서 지원하는 다양한 파일 시스템
타 시스템과 호환되도록, 외부 저장 장치를 사용하도록 하는 파일 시스템
- 특수 용도의 가상 파일 시스템
가상 파일 시스템은 특수한 용도를 가지고 필요에 따라 생기거나 없어지는 메모리용 파일 시스템이다.
- 현재 시스템이 지원하는 파일 시스템 확인
다양한 파일 시스템이 존재하기 때문에 파일 시스템 종류를 확인해야 하는 경우가 있다.
/proc/filesystems : 현재 커널에서 지원하는 파일 시스템의 종류를 출력
■ 리눅스 파일 시스템 구조
리눅스도 유닉스를 기반이므로 주요 개념이 같다!
1. 파일은 inode로 관리
2. 디렉터리도 파일
3. 특수 파일로 장치에 접근 가능 (장치 파일)
- ext4 파일 시스템의 구조
효율적인 디스크 사용을 위해 논리 블록의 집합(블록 그룹)으로 구분한다.
블록은 4KB. 블록 그룹의 개수 = 장치의 크기 ÷ 블록 그룹의 크기
- 블록 그룹 0 : 첫 블록 그룹. 그룹 0 패딩과 슈퍼블록, 그룹 디스크립터를 가짐.
- 블록 그룹 a : 첫 번째가 아닌 블록 그룹. 슈퍼 블록과 그룹 디스크립터의 복사본을 가짐.
- 블록 그룹 b : 첫 번째가 아닌 블록 그룹. 바로 데이터 블록 비트맵으로 시작.
- inode 구조
inode는 크게 파일 정보와 위치 정보를 저장하는 두 부분으로 나뉜다.
저장되는 파일 정보는 우리가 'ls -l' 명령으로 확인하는 정보이다.
- 직접 블록 : 데이터 블록에 대한 주소를 직접 가짐
- 간접, 이중 간접 블록 : 데이터 블록의 주소를 가지고 있는 블록에 대한 주소를 저장 (pointer..?)
- 파일 시스템과 디렉터리 계층 구조
파일 시스템은 디렉터리 계층 구조에 연결되어야 사용자가 접근하여 사용할 수 있다.
이 때 하나의 파일 시스템으로 구성할 수 있고, 여러 파일 시스템으로 구성할 수 있다.
여러 파일 시스템으로 나누어 디렉터리 계층 구조를 구성할 경우, 일부 파일 시스템에 문제가 생겨도 다른 파일 시스템의 파일은 안전하다. (ex. Window의 C:, D: 나누기)
■ 파일 시스템 마운트
마운트란? 파일 시스템을 디렉터리 계층 구조의 특정 디렉터리와 연결하는 것!
- 마운트 포인트
디렉터리 계층 구조에서 파일 시스템이 연결되는 디렉터리
루트 파일 시스템에서 / 디렉터리도 마운트 포인트가 된다.
- 파일 시스템 마운트 설정 파일
부팅 시 리눅스 시스템이 자동으로 마운트한다. 이 때 /etc/fstab 파일 설정이 필요하다.
/etc/fstab 파일
-기능 : 파일 시스템의 마운트 설정 정보를 가진다. (정보 : 장치명, 마운트 포인트, 옵션)
- 구조 : 장치명 + 마운트 포인트 + 파일 시스템 종류 + 옵션 + 덤프 설정 + 파일 점검 옵션
- 마운트 관련 명령
mount [옵션] [장치명] [마운트 포인트] : 파일 시스템을 마운트
-t 시스템 종류 : 종류 지정
-o : 마운트 옵션 지정
-f : 마운트 가능 여부 체크
-r : 읽기만 가능하게 마운트
umount [옵션] [장치명 or 마운트 포인트] : 파일 시스템을 언마운트
-t 시스템 종류 : 종류 지정
■ 디스크 추가 설치
추가하는 단계는 다음과 같다.
새 디스크 장착 → 디스크 파티션 나누기 → 파티션에 파일 시스템 생성 (포맷) → 디스크 마운트
- 가상머신에 디스크를 추가하는 방법
- Skip -
- 디스크 파티션을 나누는 방법
파티션이란? 하나의 영역을 독립된 영역으로 구분하는 것! 윈도우의 C:, D: 와 같은 개념!
fdisk [옵션] [장치명] : 디스크의 파티션을 관리한다.
-b 크기 : 섹터 크기를 지정
-l : 파티션 테이블을 출력
- 파일 시스템을 생성하는 방법
파일 시스템을 생성하는 것은 결국 파일과 디렉터리를 관리하기 위한 구조를 만드는 것이다!
mkfs [옵션] [장치명] : 리눅스 파일 시스템을 만든다.
-t 종류 : 파일 시스템 종류 지정 (default : ext2)
mke2fs [옵션] [장치명] : 리눅스 개정판 확장 파일 시스템(ext2, ext3, ext4)을 만든다.
-t 종류 : 파일 시스템 종류 지정 (default : ext2)
-b 블록 크기 : 크기 지정 (byte 수)
-c : 배드 블록 체크
-f 프래그먼트 크기 : 크기를 지정 (byte 수)
-i inode당 바이트 수 : 수 지정
-m 퍼센트 : 수 지정
- 디스크를 마운트하는 방법
< Example >
Step 1. 마운트 준비 → 'mkdir /mnt/test'
Step 2. 파일 시스템 마운트 → 'mount /dev/sdb1 /mnt/test'
Step 3. 파일 시스템 사용하기 → 'cp /etc/hosts /mnt/test' → 'ls /mnt/test' → 출력성공!!
- 여러 디스크를 하나의 디스크로 사용하는 방법
LVM란? 독립적으로 구성된 디스크 파티션을 하나로 연결해 한 파티션처럼 사용할 수 있게 해주는 것!
<LVM 용어>
-PV(물리 볼륨) : 실제 하드디스크의 파티션
-VG(볼륨 그룹) : 여러 개의 PV를 그룹으로 묶은 것
-LV(논리 볼륨) : VG를 다시 적절한 크기로 나눌 때의 각 파티션
-PE : PV가 가진 일정한 블록 / LE : LV가 가진 일정한 블록
<LVM 관련 명령>
구분 | 기능 | 명령 |
PV | PV 생성 | pvcreate [이름] |
PV 상태 확인 | pvscan | |
VG | VG 생성 | vgcreate [VG명] [PV명] [PV명] |
VG 활성화 | vgchange -a y [VG명] | |
VG 비활성화 | vgchange -a n [VG명] | |
VG 삭제 | vgremove [VG명] | |
VG 정보 확인 | vgdisplay -v [VG명] | |
VG에 PV 추가 | vgextend [VG명] [PV명] | |
VG에서 PV 삭제 | vgreduce [VG명] [PV명] | |
VG명 변경 | vgrename [old] [new] | |
LV | LV 생성 | lvcreate -l [PE수] [VG명] -n [LV명] |
LV 삭제 | lvremove [LV명] | |
LV 상태 확인 | lvscan | |
LV 용량 확대 | lvextent -l +[PE수] [LV명] | |
LV 용량 축소 | lvextent -l -[PE수] [LV명] |
<LVM 생성 과정>
■ 디스크 관리
- 디스크 사용량 확인
df [옵션] [파일 시스템] : 디스크의 남은 공간에 대한 정보 출력 (시스템 단위)
-a : 모든 파일 시스템을 대상으로 사용량 확인
-k : 사용량을 KB 단위로 출력
-m : 사용량을 MB 단위로 출력
-h : 사용량을 GB, MB, KB 등의 단위로 출력
-t 파일 시스템 종류 : 지정한 파일 시스템 종류에 해당하는 디스크의 사용량 출력
-T : 파일 시스템 종류도 출력
du [옵션] [디렉터리] : 디스크의 사용 공간에 대한 정보 출력 (디렉토리 단위)
-s : 특정 디렉터리의 전체 사용량 출력
-h : 사용량을 GB, MB, KB 등의 단위로 출력
- 파일 시스템 검사 및 복구
fsck [옵션] [장치명] : 파일 시스템을 점검
-f : 강제 점검
-b 슈퍼블록 : 슈퍼블록으로 지정한 백업 슈퍼블록을 사용
-y : 모든 질문에 yes로 응답
-a : 문제 발견 시 자동으로 복구
e2fsck [옵션] [장치명] : 확장 파일 시스템(ext2, ext3, ext4)을 점검
-f : 강제 점검
-b 슈퍼블록 : 슈퍼블록으로 지정한 백업 슈퍼블록을 사용
-y : 모든 질문에 yes로 응답
-j ext3/ext4 : ext3/ext4 검사할 때 지정
기본 슈퍼블록에 문제가 있을 경우를 대비해 백업 슈퍼블록이 존재하는데
이 백업 슈퍼블록을 이용해서 파일 시스템을 복구할 수 있다!
dumpe2fs [장치명] : 파일 시스템 정보 출력 (백업 슈퍼블록 위치 파악)
백업 슈퍼블록을 이용해 복구할 때 fsck(e2fsck) 명령의 -b 옵션을 활용한다.
'개인 공부 > Linux (CentOS 리눅스)' 카테고리의 다른 글
CentOS 리눅스 : 리눅스의 부팅과 종료 (8장) (0) | 2022.06.17 |
---|---|
CentOS 리눅스 : 연습문제 해답 (7장) (0) | 2022.06.17 |
CentOS 리눅스 : 연습문제 해답 (6장) (0) | 2022.05.04 |
CentOS 리눅스 : 프로세스 관리 (6장) (2) | 2022.05.04 |
CentOS 리눅스 : 연습문제 해답 (5장) (2) | 2022.05.04 |
댓글