Linux 하드 드라이브 파티션 관리
왜 하드 드라이브를 파티셔닝 해야 하나요?
- 운영 체제 파일과 사용자 파일을 분리하여, 애플리케이션 데이터가 운영 시스템 디스크를 가득 차게 방지.
- 애플리케이션 또는 사용자의 사용 가능한 공간을 제한.
- 한 파티션이 논리적 손상을 입더라도 다른 파티션에 영향을 주지 않음.
- 스왑 파티션 생성 용도.
- 디스크 공간 사용을 제한하여 진단 도구와 백업 이미지의 성능 향상.
- 예: 많은 작은 파일을 저장하는 파일 시스템이나 큰 파일을 저장하는 파일 시스템 등을 맞춤 설정.
MBR 파티션 스키마
일반적으로 디스크의 첫 번째 섹터를 부트 섹터라고 부르며, 이 섹터는 MBR 부트 코드를 포함하고 있으며, 시스템 부팅을 담당합니다. 이 섹터는 디스크 상의 어떤 파티션에도 속하지 않으므로 파티션 내에서 포맷 명령을 실행해도 주 부트 레코드의 정보는 삭제되지 않습니다.
1982년부터 MBR(Master Boot Record) 파티션 스키마는 BIOS 펌웨어를 사용하는 시스템에서 디스크를 어떻게 파티셔닝할지를 지정하였습니다. 메인 부트 섹터는 세 부분으로 구성됩니다:
- 부트로더(446 바이트), 디스크 시작 시 특정 운영 체제로 제어를 전달.
- 디스크 파티션 테이블 항목(DPT, Disk Partition Table)(각 16바이트 크기의 4개 항목).
- 종료 플래그(2바이트), 값은 AA55(16진수).
이 스키마는 최대 4개의 기본 파티션을 지원합니다. Linux 시스템에서는 관리자가 확장 파티션과 논리 파티션을 사용하여 최대 15개의 파티션을 만들 수 있습니다. 주 파티션 및 논리 파티션은 포맷 가능하며, 확장 파티션은 논리 파티션의 인덱스 정보만 저장하므로 포맷 불가능합니다. MBR 기록은 4바이트로 파티션의 전체 섹터 수를 저장하므로, 각 파티션은 최대 2 TiB를 초과할 수 없습니다.
fdisk 도구
fdisk 도구는 MBR 파티션 스키마를 사용하는 디스크를 관리하는데 사용됩니다.
[root@centos7 ~]# fdisk -h
Usage:
fdisk [options] <disk> change partition table
fdisk [options] -l <disk> list partition table(s)
fdisk -s <partition> give partition size(s) in blocks
Options:
-b <size> sector size (512, 1024, 2048 or 4096)
-c[=<mode>] compatible mode: 'dos' or 'nondos' (default)
-h print this help text
-u[=<unit>] display units: 'cylinders' or 'sectors'
(default)
-v print program version
-C <number> specify the number of cylinders
-H <number> specify the number of heads
-S <number> specify the number of sectors per track
a—활성 파티션 플래그 설정 d—파티션 삭제 l—사용 가능한 파티션 유형 표시 m—명령 옵션 표시 p—현재 파티션 테이블 표시 q—변경 사항 저장 없이 종료 t—파티션의 시스템 ID 수정 u—사용 단위 변경 w—파티션 테이블을 디스크에 쓰고 종료 x—고급 기능
파티션 보기
[root@centos7 ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x78ceaffe
Device Boot Start End Blocks Id System
/dev/sdb1 2048 41943039 20970496 83 Linux
파티션 생성
[root@centos7 ~]# fdisk /dev/sdb
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +2G
Created a new partition 1 of type 'Linux' and of size 2 GiB.
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
GPT 파티션 스키마
GPT는 UEFI 펌웨어 시스템에서 디스크 파티션 테이블의 표준입니다. MBR 파티션 스키마는 최대 2TiB 파티션과 디스크를 관리할 수 있습니다. GPT(Global Unique Identifier Partition Table)는 8바이트로 파티션의 전체 섹터 수를 저장하여 18 ZiB(=2^64*512Byte)까지 지원 가능합니다.
GPT의 핵심적인 장점:
- 용량: MBR은 최대 2.2TB, GPT는 9.4ZB+ 지원
- 파티션 수: MBR은 최대 4개의 기본 파티션(또는 3개의 기본 파티션 + 1개의 확장 파티션), GPT는 기본적으로 128개의 파티션 제공
- 보안: GPT는 CRC32 검증 및 마지막 백업 테이블 제공, MBR은 손상되면 전체 디스크 파티션 정보 손실
- 부팅 방법: GPT는 UEFI와 함께 작동해야 하며 Secure Boot 지원, MBR은 전통적인 BIOS만 지원
- 호환성: GPT 디스크의 첫 번째 섹터에는 보호 MBR이 있어 오래된 BIOS 시스템에서도 볼 수 있지만 부팅 불가능
gdisk 도구
gdisk 도구는 GPT 파티션 스키마를 사용하는 디스크 파티션을 관리하는데 사용됩니다.
파티션 테이블 보기
[root@centos7 ~]# gdisk -l /dev/sdb
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
파티션 생성
[root@centos7 ~]# gdisk /dev/sdb
Command (? for help): n
Partition number (1-128, default 1):
First sector (34-41943006, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +2G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
파티션 이름 변경
[root@centos7 ~]# gdisk /dev/sdb
Command (? for help): c
Using 1
Enter name: data01
parted 도구
parted 도구는 MBR 및 GPT 파티션 스키마를 모두 지원하며, 명령줄과 대화식 두 가지 모드로 동작합니다.
파티션 테이블 보기
[root@centos7 ~]# parted /dev/sdb
(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
MBR 디스크 관리
파티션 생성
(parted) mkpart
Partition type? primary/extended? primary
File system type? [ext2]? xfs
Start? 1
End? 2049
GPT 디스크 관리
파티션 생성
(parted) mkpart
Partition name? []? data01
File system type? [ext2]? xfs
Start? 1
End? 2049
파일 시스템 영구 마운트
parted를 이용하여 파티션을 생성하고 XFS 파일 시스템으로 포맷합니다.
[root@centos7 ~]# parted /dev/sdb mklabel gpt
[root@centos7 ~]# parted /dev/sdb unit MiB mkpart data01 xfs 1 2049
[root@centos7 ~]# mkfs.xfs /dev/sdb1
영구 마운트
시스템 재부팅 시 자동으로 파일 시스템을 마운트하기 위해 /etc/fstab에 엔트리를 추가합니다.
[root@centos7 ~]# blkid /dev/sdb1
/dev/sdb1: UUID="f5c35f10-0274-45af-b044-73694989fe01" TYPE="xfs"
PARTLABEL="data01" PARTUUID="432d7d79-1a08-4429-bf38-7ab1444a0ab9"
[root@centos7 ~]# mkdir /data01
[root@centos7 ~]# vim /etc/fstab
UUID="f5c35f10-0274-45af-b044-73694989fe01" /data01 xfs defaults 0 0
[root@centos7 ~]# mount /data01
[root@centos7 ~]# df -h /data01
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 2.0G 33M 2.0G 2% /data01