Rocky Linux - 디스크 추가 GPT 파티션 설정 [Parted]

    생각해보니 필자는 리눅스를 운영해오면서 단일 디스크 용량을 2TB 이상으로 세팅해본 적이 없었습니다. 여러 개의 디스크 파티션을 LVM형식으로 묶어서 적용한 적은 있지만 하나의 파티션을 전부 2TB 이상으로 기존의 Fdisk를 통해 진행하려고 했더니 MBR의 한계로 할당을 할 수가 없었습니다. 이에 정보를 알아보니 리눅스의 경우는 별도의 Parted라는 도구를 이용하여 파티션을 생성하는 방법이 있다는 것을 알았습니다. 그전에 먼저 MBR과 GPT 파티션이 무엇인지 간단하게 알아보도록 하겠습니다.

    MBR과 GPT란?

    일종의 디스크 파티션 형식을 말합니다.

    MBR ▶ 우리가 기본적으로 가장 많이 사용하는 전통적인 BIOS 펌웨어 환경을 기반으로 하는 디스크 형식입니다. 다른 말로 마스터 부트 레코드(Master Boot Record), 또는 파티션 섹터(Partition Sector)이라고도 하는데, 하드디스크로 부팅하기 위한 정보와 파티션 분할 정보 부팅에 사용되는 실제 파티션에 대한 정보가 저장됩니다. 하지만 주 프라이머리(Primary) 파티션은 최대 4개까지만(그 이상은 가상 형태로 분할) 생성 가능하며, 주 파티션에 할당할 수 있는 용량은 최대 [2TB]가 한계입니다. 예시로 [3TB] 하드 디스크가 있으며 파티션을 두 개로 나눈다면 [2TB] 주 파티션만 사용이 가능하고 남은 [1TB]는 사용하지 못하고 버리게 됩니다.

     

    GPT ▶ MBR의 한계를 해결하기 위해 만들어진 새로운 EFI(UEFI) 펌웨어 환경을 기반으로 개발된 디스크 형식입니다. GUID 파티션 테이블(GUID Partition Table)로 물리적인 하드 디스크에 대한 파티션 테이블 레이아웃 표준입니다. 초창기에는 GPT의 운영 체제 지원에 제한이 있었으나 최근 기준(2022년)으로는 대부분 지원을 하고 있습니다. 이론적으로 주 파티션이 최대 128개까지 생성이 가능하며 엑사바이트 단위보다 더 높은 제타바이트 9.4ZB(약 10조 기가바이트)까지 가능하다고 합니다. 일반 사용자에게는 체감상 무한에 가까운 수치입니다.

     

    Windows에서도 동일합니다. 참고 : https://foxydog.tistory.com/101

    테스트 환경

    □ VMware Workstation

    □ OS Rocky Linux release 8.5 (Green Obsidian)

     

    □ 사용 중인 커널 버전 확인

    [root@Rocky ~]# uname -r
    4.18.0-348.23.1.el8_5.x86_64

     

    □ GPT 파티션 사용 가능 체크 확인[해당 값들이 "Y"로 표시]

    ※ /boot/config-사용 중인 커널 버전

    [root@Rocky ~]# cat /boot/config-4.18.0-348.23.1.el8_5.x86_64 | grep EFI | grep -v ^#

    CONFIG_EFI_PARTITION=y

    CONFIG_EFI=y

    CONFIG_FB_EFI=y

    CONFIG_EFI_VARS=y

    CONFIG_UEFI_CPER=y

    CONFIG_CACHEFILES=m

    CONFIG_EARLY_PRINTK_EFI=y

     

    □ Parted 도구 설치 여부 확인

    [root@Rocky ~]# rpm -qa | grep parted
    parted-3.2-39.el8.x86_64

     

    □ Parted 도구가 없다면 설치

    [root@Rocky ~]# dnf install parted

     

    공식 사이트 : https://www.gnu.org/software/parted/


    □ 진행하기 전 먼저 고용량의 물리 디스크를 추가합니다.

    ※ 일반 사용자가 실제 2TB 이상의 하드 디스크를 PC에 적용할 수는 없으니 VMware 가상화를 이용하여 가상의 하드 디스크를 추가하여 테스트를 해보도록 하겠습니다.

    최종 적용을 위해 서버 재부팅

    [root@Rocky ~]# reboot


    □ 하드 디스크 추가 확인

    ※ VMware는 가상 디스크 씬 프로비저닝 기능을 지원하기 때문에 내 PC에 실제 8TB의 공간을 잡고 있는 게 아니라 가상의 형태로 공간을 표시하는 부분입니다. 간단하게 얘기하면 용량 표시만 8TB 일뿐이며, 실제로는 작업에 필요한 스토리지 공간만큼만 사용합니다.

    [root@Rocky ~]# fdisk -l

    Disk /dev/sdb: 8 TiB, 8796093022208 bytes, 17179869184 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

    만약 Fdisk를 이용해 파티션 작업을 실행하면 다음과 같은 경고 메시지가 나옵니다.

    [root@Rocky ~]# fdisk /dev/sdb

    The size of this disk is 8 TiB (8796093022208 bytes). DOS partition table format cannot be used on drives for volumes larger than 2199023255040 bytes for 512-byte sectors. Use GUID partition table format (GPT).

    해석 : 이 디스크의 크기는 8TB입니다. DOS 파티션 테이블 형식은 512바이트 섹터에 대해 2TB보다 큰 볼륨의 드라이브에서 사용할 수 없습니다. GUID 파티션 테이블 형식(GPT)을 사용합니다.

    그림 이제 진짜로 GPT 파티션 작업을 해보도록 하겠습니다.


    STEP01 - Parted 디스크 확인 및 파티션 작업 실행

    ① List 형태로 정보를 출력하여 먼저 디스크 상태를 확인합니다.

    [root@Rocky ~]# parted -l

    Error: /dev/sdb: unrecognised disk label
    Model: VMware, VMware Virtual S (scsi)
    Disk /dev/sdb: 8796GB  [디스크 추가 확인]
    Sector size (logical/physical): 512B/512B
    Partition Table: unknown
    Disk Flags:

    ② Parted 이용해 새로 추가한 하드 디스크를 입력

    [root@Rocky ~]# parted /dev/sdb

    GNU Parted 3.2
    Using /dev/sdb
    Welcome to GNU Parted! Type 'help' to view a list of commands.
    (parted)

     

    ※ 옵션 정보는 help를 통해 확인


    STEP02 - 디스크 구성 확인 및 GPT 타입 파티션 생성

    ① 추가한 디스크 구성 확인

    (parted) print

    Error: /dev/sdb: unrecognised disk label [아직 파티션 비활성화 상태]
    Model: VMware, VMware Virtual S (scsi)
    Disk /dev/sdb: 8796GB
    Sector size (logical/physical): 512B/512B
    Partition Table: unknown
    Disk Flags:

    ② GPT 디스크로 변환

    (parted) mklabel gpt

    (parted) print

    Model: VMware, VMware Virtual S (scsi)
    Disk /dev/sdb: 8796GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt  [변환 확인]
    Disk Flags:

    Number  Start  End  Size  File system  Name  Flags


    STEP03 - 파티션 유형 및 디스크 용량 설정

    (parted) mkpart primary 0 8796GB

    Warning: The resulting partition is not properly aligned for best performance: 34s % 2048s != 0s
    Ignore/Cancel? I  [동의]

    (parted) print
    Model: VMware, VMware Virtual S (scsi)
    Disk /dev/sdb: 8796GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags:

    Number    Start          End       Size      File system       Name       Flags
     1          17.4kB    8796GB   8796GB                        primary

    참고사항

    ◇ 파티션 설정 및 용량 할당

    (parted) mkpart primary(주 파티션) [시작 위치(용량)] [끝 위치(용량)]

     

     만약, 파티션을 2개이상 나눌 경우 다음과 같이 설정할 수 있다.

    (parted) mkpart primary 0 4096GB  [첫 번째 주 파티션]
    Warning: The resulting partition is not properly aligned for best performance: 34s % 2048s!= 0s
    Ignore/Cancel? I

    (parted) mkpart primary 4096GB 8796GB  [두번째 주 파티션]

    (parted) print

     

     파티션 용량을 다시 설정 하고 싶다면 삭제 후 다시 볼륨 설정하면 됩니다.

    ※ 데이터가 없을 경우에만 진행

    (parted) rm 1  [Number 숫자를 선택]

    (parted) rm 2

    (parted) print


    STEP04 - Parted 도구 종료 후 Fdisk로 재 확인 및 파일 시스템 포맷

    ① Parted 도구 종료

    (parted) quit
    Information: You may need to update /etc/fstab.  [STEP06 진행]

    ② Fdisk로 재 확인

    [root@Rocky ~]# fdisk -l

    Disk /dev/sdb: 8 TiB, 8796093022208 bytes, 17179869184 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
    Disklabel type: gpt
    Disk identifier: 872EF030-1A64-4C21-9DE0-63C620E1EA1E

    Device        Start                  End            Sectors    Size                   Type
    /dev/sdb1     34     17179869150   17179869117      8T   Linux filesystem

    ③ 파일 시스템 포맷[시스템에 맞는 파일 시스템으로 포맷]

    [root@Rocky ~]# mkfs.ext4 /dev/sdb1


    STEP05 - 마운트 포인트 생성 및 디스크 마운트

    ① 마운트 포인트(폴더) 생성

    [root@Rocky ~]# mkdir /home2

    ② 생성한 폴더(/home2)에 마운트

    [root@Rocky ~]# mount /dev/sdb1 /home2

     

    ※ 파티션을 두 개로 나누었다면 폴더를 2개 생성 후 각각 마운트 하면 됩니다.

    [root@Rocky ~]# mount /dev/sdb1 /home2

    [root@Rocky ~]# mount /dev/sdb2 /home3

    ③ 마운트 확인

    [root@Rocky /]# df -h


    STEP06 - 부팅 시 자동 마운트 설정

    ① fstab 설정 파일 수정

    [root@Rocky ~]# vi /etc/fstab  [맨 하단에 추가 후 저장]

    /dev/sdb1               /home2                  ext4      defaults        0    0

    ※ 만약 디스크 장치의 고유 식별 ID로 등록할 경우

    [root@Rocky ~]# blkid | grep sdb1
    /dev/sdb1: UUID="ac854316-bd70-4abd-9466-fce6175c1ce8" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="primary" PARTUUID="a8ea9f79-3012-4604-8d52-d0a3e2d1a266"

     

    [root@Rocky ~]# vi /etc/fstab  [맨 하단에 추가 후 저장]

    UUID=ac854316-bd70-4abd-9466-fce6175c1ce8       /home2         ext4        defaults         0    0

    ※ 실제 물리 하드 디스크가 계속 서버(PC)에 연결된 상태에서는 고유 값이 맞으나 만약 다른 장치에 새로 연결할 경우는 고유 UUID가 변경이 됩니다.

    ② 추가 후 재부팅 테스트

    ※ fstab 설정 파일을 잘못 수정하면 부팅 시 에러 날 수 있으니 신중히 등록해주세요.

    [root@Rocky ~]# reboot

    [root@Rocky ~]# df -h


    이렇게 해서 Parted 도구를 이용한 GPT 파티션 할당에 대해서 알아보았습니다. 내용이 너무 길어져서 다음 포스팅은 Parted를 이용한 LVM 설정 후 용량 증설하는 방법에 대해서 추가로 알아보도록 하겠습니다. 조금씩 작성하다가 밀린 내용을 드디어 완성하였네요. 생각날 때마다 임시 저장해서 조금씩 진행을 하고 있습니다만, 너무 많이 늘어나다 보니 손을 놓는 경우가 많네요(웃음). 메모만 해놨다가 하나를 완성하면 다음 포스팅을 진행하는 게 좋겠네요.

    Designed by JB FACTORY