MBR 파티션 스키마디스크 파티셔닝을 사용하면 하드 디스크를 파티션이라고 하는 여러 개의 논리 스토리지 단위로 나눌 수 있음.디스크 파티셔닝이 필요하거나 유용한 상황
- 애플리케이션 또는 사용자가 사용할 수 있는 공간을 제한
- 동일한 디스크에서 여러 운영 체제를 부팅할 수 있음
- 사용자 파일에서 운영 체제와 프로그램 파일을 구분
- OS 가상 메모리 스왑에 대해 별도 영역을 만듬
- 디스크 사용을 제한하여 진단 도구 및 백업 이미징의 성능을 향상
- 1982년 이후 MBR(Master Boot Record) 파티션 스키마에 BIOS 펌웨어를 실행하는 시스템에서 디스크 파티션 방식이 지정
- 최대 네 개의 주 파티션을 지원
- Linux 시스템에서 관리자는 확장 및 논리 파티션을 사용하여 최대 15개의 파티션을 만들 수 있음.
- 파티션 크기 데이터는 32비트 값으로 저장되므로 MBR 스키마로 파티션된 디스크의 최대 디스크 및 파티션 크기는 2TiB로 제한
- 더욱 큰 용량의 하드 드라이브가 새로 등장하면서 기존 MBR 스키마의 구성표의 2TiB 디스크 및 파티션 크기 제한이 문제가 되면서 GPT(GUID Partion Table)로 대체되고 있음.
- 파티션 테이블 정보를 단일 제공
GPT 파티션 구성표
- UEFI(Unified Extensible Firmware Interface) 펌웨어를 실행하는 시스템에서는 GPT가 물리적 하드 디스크에서 파티션 테이블을 배치하는 표준
- GPT는 UEFI 표준의 일부이면 기존 MBR 기반 스키마의 여러 제한 사항을 해결.
- GPT는 UEFI 사양에 따라 최대 128개 파티션을 지원하도록 기본 설정됨.
- GPT는 논리 블록 주소에 64비트를 할당함.
- 최대 8ZiB(제타바이트) 또는 80억 TiB의 파티션과 디스크를 지원할 수 있음
- 128비트 GUID를 사용하여 각 디스크와 파티션을 고유하게 식별
- 파티션 테이블 정보를 중복 제공
- 주 GPT는 디스크 헤드에 상주하며, 백업 사본인 보조 GPT는 디스크의 마지막에 하우징됨.
- GPT는 CRC Checksum 을 사용하여 GPT 헤더와 파티션 테이블에서 오류와 손상을 탐지.
참고
- GPT의 한도가 8ZiB인 것은 블록 크기가 512byte이기 때문
- 하드 드라이브 공급업체가 4,096byte 블록으로 전환됨에 따라 이 한도는 64ZiB로 증가함.
fdisk를 사용하여 MBR 파티션 관리
MBR 디스크 파티션 만들기(8단계 필요)파티션 편집기는 관리자가 파티션 생성, 삭제, 유형 변경 등 디스크 파티션을 변경할 수 있는 프로그램MBR 파티션 스키마가 있는 디스크의 경우 fdisk 파티션 편집기를 사용하여 작업 수행
-
파티션을 만들 디스크 장치를 지정
root 사용자로 fdisk 명령을 실행하고 인수로 디스크 장치 이름을 지정.[root@ip-172-31-27-55 ~]# fdisk /dev/xvdf
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x0877930b.
Command (m for help):
-
새로운 주 또는 확장 파티션을 요청
새 파티션을 구성하려면 n을 입력하고 파티션을 주 파티션으로 만들지 확인 파티션으로 만들지를 지정
기본적으로 주 파티션 유형이 선택됨Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
참고디스크에 네 개보다 많은 파티션이 필요할 경우 3개의 주 파티션과 1개의 확장 파티션을 만들면 이 한도를 우회할 수 있음.
이 확장 파티션은 여러 논리 파티션을 만들 수 있는 컨테이터의 역확을 함.
-
파티션 번호를 지정
이 파티션 번호는 향후 파티션 작업에 사용할 디스크에서 새 파티션의 식별 번호로 사용됨
기본값은 사용하지 않은 가장 낮은 파티션 번호Partition number (1-4, default 1): 1
-
디스크에서 새 파티션을 시작할 첫 번째 섹터를 지정
기본값은 디스크에서 첫 번째로 사용 가능한 섹터First sector (2048-20971519, default 2048): 2048
-
디스크에서 새 파티션을 종료한 마지막 섹터를 지정
기본값은 새 파티션의 첫 번째 섹터와 인접해 있으면서 할당되지 않은 마지막 가용 섹터Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): 1050623
마지막 섹터 번호 이외에도, 파티션의 원하는 크기를 나타낼 때 섹터 수로 표현된 숫자도 허용Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +52488 가장 간단한 입력 옵션은 새 파티션의 크기를 KiB, MiB 또는 GiB 단위로 지정하는 것Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +2G 파티션의 마지막 경계를 입력하면 파티션 생성 확인을 표시함Partition 1 of type Linux and of size 2 GiB is set -
파티션 유형을 정의
새로 새성된 파티션에 Linux 이외의 유형이 필요할 경우 t 명령을 입력하여 파티션 유형을 변경
새 파티션 유형의 16진수 코드를 입력.
필요할 경우 L 명령을 사용하여 모든 파티션 유형의 16진수 코드의 표를 표시할 수 있음.Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 82
Changed type of partition 'Linux' to 'Linux swap / Solaris'
-
파티션 테이블의 변경 사항을 저장
w 명령을 디스크 파티션 테이블에 변경 사항을 쓰고 fdisk 프로그램을 종료하여 파티션 생성 요청을 완료.Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
-
커널은 새 파티션 테이블을 다시 읽기 시작
partprobe 명령을 실행하여 파티션 테이블 다시 읽기를 강제 실행[root@ip-172-31-27-55 dev]#partprobe /dev/xvdf
[root@ip-172-31-27-55 dev]#cat /proc/partition
major minor #blocks name
202 1 8388608 xvda1
202 80 10485760 xvdf
202 81 2097152 xvdf1
중요
- fdisk은 파티션 테이블의 모든 편집 내용들을 대기열에 추가하며 관리자가 디스크에 쓰기 위해 w 명령을 실행한 경우에만 파티션 테이블의 모든 변경사항을 디스크에 적용.
- fdisk 세션을 종료하기 전에 w 명령을 실행하지 않은 경우 파티션 테이블에 대해 요청한 모든 변경 사항이 취소되고 디스크의 파티션 테이블이 변경되지 않음.
- 이 기능은 fdisk에 오류가 있는 명령을 실행한 경우 특히 유용함.
MBR 디스크 파티션 제거하기(5단계 필요)
-
제거할 파티션이 포함된 디스크를 지정
fdisk 명령을 실행하고 인수로 디스크 장치 이름을 지정[root@ip-172-31-27-55 dev]# fdisk /dev/xvdf
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help):
-
삭제할 파티션의 파티션 번호를 식별
p를 입력하여 파티션 테이블을 출력하면 fdisk에서 디스크 및 해당 파티션에 대한 정보를 표시Command (m for help): p
Disk /dev/xvdf: 10.7 GB, 10737418240 bytes, 20971520 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: 0x0877930b
Device Boot Start End Blocks Id System
/dev/xvdf1 2048 4196351 2097152 82 Linux swap / Solaris
-
파티션 삭제를 요청
d 명령을 입력하여 파티션 제거를 시작하고 제거할 파티션의 파티션 번호를 지정Command (m for help): d
Selected partition 1
Partition 1 is deleted
-
파티션 테이블의 변경 사항을 저장
w 명령으로 변경 사항을 디스크 파티션 테이블에 써서 파티션 제거 요청을 완료Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
-
커널은 새 파티션 테이블을 다시 읽기 시작
partprobe으로 커널이 파티션 테이블을 다시 읽도록 알려줌[root@ip-172-31-27-55 dev]# partprobe /dev/xvdf
gdisk로 GPT 파티션 관리
GPT 파티션 스키마가 있는 디스크의 경우 gdisk 파티션 편집기를 사용하여 파티션을 관리할 수 있습니다.
경고
- fdisk에 GPT 지원이 추가되기는 했지만 아직 실험적 단계이므로 GPT 파티션 구성표로 파티션된 디스크에서 파티션을 변경할 경우에는 gdisk 명령을 사용해야 함.
GPT 디스크 파티션 만들기(8단계 필요)
-
파티션을 만들 디스크 장치를 지정
gdisk 명령을 실행하고 인수로 디스크 장치 이름을 지정[root@ip-172-31-27-55 dev]# gdisk /dev/xvdf
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
MBR: not present
BSD: not present
APM: not present
GPT: not present
Creating new GPT entries.
Command (? for help):
-
새 파티션을 요청
n을 입력하여 새 파티션을 만듬Command (? for help): n
-
파티션 번호를 지정
이 파티션 번호는 향후 파티션 작업에 사용할 디스크에서 파티션의 식별 번호로 사용됨
기본값은 사용하지 않은 가장 낮은 파티션 번호Partition number (1-128, default 1): 1
-
새 파티션이 시작될 디스크 위치를 지정
gdisk에서는 두 가지 입력 유형이 가능함.
첫 번째 입력 유형은 새 파티션의 첫 번째 섹터를 나타내는 절대 디스크 섹터 번호
두 번째 입력 유형은 디스크에서 사용 가능한 섹터의 첫 번째 인접 블록에서 첫 번째 또는 마지막 섹터에 상대적인 위치를 기준으로 파티션의 시작 섹터를 나타냄. 이 상대적 섹터 위치 형식을 사용할 경우 KiB, MiB, GiB, TiB 또는 PiB 단위로 입력 지정
예를 들어, +512M 값은 사용 가능한 다음 인접 섹터 그룹의 맨 앞에서 512MiB 뒤에 있는 섹터 위치를 나타냄. 반대로 -512M은 사용 가능한 이 인접 섹터 그룹의 마지막에서 512MiB 앞에 있는 섹터를 나타냄.First sector (34-20971486, default = 2048) or {+-}size{KMGTP}:
-
디스크에서 새 파티션을 종료할 마지막 섹터를 지정
기본값은 새 파티션의 첫 번째 섹터와 인접해 있으면서 할당되지 않은 마지막 가용 섹터임.Last sector (2048-20971486, default = 20971486) or {+-}size{KMGTP}: +2G
절대 끝 섹터 번호 이외에도, gdisk는 사용 가능한 인접 섹터 그룹의 맨 앞 또는 끝에서 KiB, MiB, GiB, TiB 또는 PiB 단위로 새 파티션의 끝 경계를 더 간단하게 지정하는 입력 방법을 제공
+512M 값은 첫 번째 섹션에서 512MiB 뒤에 있는 끝 파티션 위치를 나타냄.
-512M 값은 사용 가능한 인접 섹션의 끝에서 512MiB 앞에 있는 끝 파티션 위치를 나타냄.
-
파티션 유형을 정의
gdisk로 만든 새 파티션의 유형은 기본적으로 Linux 파일 시스템으로 설정됨.
다른 파티션 유형을 원할 경우 해당 16진수 코드를 입력함.
필요할 경우 L 명령을 사용하여 모든 파티션 유형의 16진수 코드의 표를 표시할 수 있음.Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8e00
Changed type of partition to 'Linux LVM'
-
파티션 테이블의 변경 사항을 저장
w 명령으로 변경 사항을 디스크 파티션 테이블에 써서 파티션 생성 요청을 완료
gdisk에서 최종 확인 메시지를 표시하면 y를 입력Command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/xvdf.
The operation has completed successfully.
-
커널은 새 파티션 테이블을 다시 읽기 시작
partprobe 명령을 실행하여 파티션 테이블 다시 읽기를 강제 실행[root@ip-172-31-27-55 dev]# partprobe /dev/xvdf
GPT 디스크 파티션 제거하기(5단계 필요)
-
제거할 파티션이 포함된 디스크를 지정
gdisk 명령을 실행하고 인수로 디스크 장치 이름을 지정[root@ip-172-31-27-55 dev]# gdisk /dev/xvdf
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.
Command (? for help):
-
삭제할 파티션의 파티션 번호를 식별
p를 입력하여 삭제할 파티션의 Number 필드의 숫자를 참고Command (? for help): p
Disk /dev/xvdf: 20971520 sectors, 10.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): D81D1455-6D2A-4B55-9D92-1B1EE8249EBA
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 20971486
Partitions will be aligned on 2048-sector boundaries
Total free space is 16777149 sectors (8.0 GiB)
Number Start (sector) End (sector) Size Code Name
1 2048 4196351 2.0 GiB 8E00 Linux LVM
-
파티션 삭제를 요청
d 명령을 입력하여 파티션 제거를 시작Command (? for help): d
Using 1
-
파티션 테이블의 변경 사항을 저장
w 명령으로 변경 사항을 디스크 파티션 테이블에 써서 파티션 제거 요청을 완료
gdisk에서 최종 확인 메시지를 표시하면 y를 입력Command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/xvdf.
The operation has completed successfully.
-
커널은 새 파티션의 테이블을 다시 읽기 시작
partprobe으로 커널이 파티션 테이블을 다시 읽도록 알려줌.[root@ip-172-31-27-55 dev]# partprobe /dev/xvdf
파일 시스템 만들기
Red Hat Enterprise Linux는 다양한 파일 시스템 유형을 지원하지만, xfs 와 ext4 두 가지가 가장 일반적
xfs는 Red Hat Enterprise Linux의 설치 프로그램인 anaconda에서 기본적으로 사용됨
-
mkfs
블록 장치에 파일 시스템을 적용하는 데 사용
유형을 지정하지 않은 경우 ext2 적용 됨
파일 시스템 유형을 적용하려면 -t 옵션 사용[root@ip-172-31-27-55 proc]# mkfs -t xfs -f /dev/xvdf1
meta-data=/dev/xvdf1 isize=256 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=4096 blocks=524288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
참고
파일 시스템 마운트
-
수동으로 파일 시스템 마운트
[root@ip-172-31-27-55 dev]#mount /dev/xvdf1 /mnt
[root@ip-172-31-27-55 proc]# mount | grep xvdf
/dev/xvdf1 on /mnt type xfs (rw,relatime,attr2,inode64,noquota)
-
영구적으로 파일 시스템 마운트
/etc/fstab 편집(행당 총 여섯 개의 필드가 있으며 공백으로 구분됨)[root@ip-172-31-27-55 proc]# cat /etc/fstab
#
LABEL=/ / ext4 defaults,noatime 1 1
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
UUID=4029371c-f0ac-4c39-a25c-14db66f7f81f /mnt xfs defaults 1 1
필드 정의 첫 번째 필드 사용할 장치를 지정(UUID 또는 장치 파일(/dev/xvdf1) 사용). 두 번째 필드 마운트 포인트 세 번째 필드 파일 시스템 유형 네 번째 필드 장치에 적용하는 옵션 목록(이 필드는 필수이며, defaults라고 하는 일반적인 옵션 집합이 있음. 기타 옵션은 mount man page 참조) 마지막 두 필드 덤프 플래그와 fsck 순서(덤프 플래그는 dump 명령과 함께 사용하여 장치 콘텐츠를 백업하는데 사용.
fsck 순서 필드는 파일 시스템을 분리할 때 문제가 있었던 경우 부팅 시 fsck를 실행해야 하는 지를 결정.
fsck 순서 값은 복수 파일 시스템을 점검해야 할 경우 파일 시스템에서 fsck를 실행해야 하는 순서를 나타냄
참고
- 클라우드 공급업체가 가상머신의 기본 저장소 레이어를 변경하는 경우와 같이 블록 장치 식별자가 특정 시나리오에서 변경될 수 있으므로 UUID(universally unique identifier)를 사용하는 것이 좋음. 블록 장치 파일이 변경될 수 있지만, UUID는 장치의 수퍼 블록에서 변경되지 않고 유지됨
-
blkid 명령을 사용하여 시스템에 연결된 블록 장치를 스캔하고 할당된 UUID, 파일 시스템 format 과 같은 데이터를 보고할 수 있음.
[root@ip-172-31-27-55 proc]# blkid
/dev/xvda1: LABEL="/" UUID="4c43efdc-89d1-4223-ae2c-8e76713be7e0" TYPE="ext4"
/dev/xvdf1: UUID="4029371c-f0ac-4c39-a25c-14db66f7f81f" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="9842594c-cbb2-4f7f-92bd-f53823fae857"
- /etc/fstab 에 잘못된 항목이 있을 경우 시스템이 부팅되지 않을 수 있음. 이 상황을 방지하기 위해 관리자는 새 파일 시스템을 분리하고 /etc/fstab를 읽는 mount -a 를 사용하여 항목을 확인하고 파일 시스템을 다시 마운트해야 함. mount -a 명령이 오류를 반환할 경우 시스템을 재부팅하기 전에 해결해야 함.
References
- fdisk(8), gdisk(8), mkfs(8), mount(8), fstab(5) man pages
'Linux' 카테고리의 다른 글
File system mount & unmount (0) | 2015.08.12 |
---|---|
File system mount & unmount (0) | 2015.08.12 |
yum 소프트웨어 리포지토리 활성화 (0) | 2015.08.11 |
yum을 사용하여 소프트웨어 업데이트 관리 (0) | 2015.08.10 |
Language Configuration (0) | 2015.07.20 |
Creating persistent mounts with file system labels (0) | 2015.07.07 |
Quiz: Configure local storage (0) | 2015.07.03 |
Controlling the SCSI Command Timer and Device Status (0) | 2015.07.02 |
scsi_id examples on RHEL6 (0) | 2015.07.02 |
Configuring Device Mapper Multipath (DMMP) tool for hosts running the Linux operating system (0) | 2015.07.02 |