EBS 볼륨의 MBR 파티션에에 대한 2TiB 한도를 넘어서기 위해 EC2 Ubuntu 인스턴스의 기본 MBR 파티션 구성표를 GPT로 변환하려면 어떻게 해야 하나요?

6분 분량
0

Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 Ubuntu 16.04, 18.04 또는 20.04를 실행 중입니다. MBR 파티션에는 2TiB 한도가 있습니다. 이 한도를 넘어서기 위해 Amazon Elastic Block Store(Amazon EBS) 볼륨의 파티션 구성표를 GPT 파티션 구성표로 변환하려고 합니다.

해결 방법

**경고:**인스턴스를 중지하고 시작하기 전에 다음 사항을 고려하세요.

  • 인스턴스가 인스턴스 스토어 기반 인스턴스이거나 데이터가 포함된 인스턴스 스토어 볼륨이 있는 경우 인스턴스를 중지하면 데이터가 삭제됩니다. 자세한 내용은 인스턴스의 루트 디바이스 유형 결정을 참조하세요.
  • 인스턴스가 Amazon EC2 Auto Scaling 그룹에 속한 경우 인스턴스를 중지하면 인스턴스가 완전히 종료될 수 있습니다. Amazon EMR, AWS CloudFormation 또는 AWS Elastic Beanstalk를 사용하여 시작한 인스턴스의 경우, 해당 인스턴스가 AWS Auto Scaling 그룹에 속할 수 있습니다. 이 경우 인스턴스 종료 여부는 Auto Scaling 그룹의 인스턴스 축소 보호 설정에 따라 달라집니다. 인스턴스가 Auto Scaling 그룹에 속한 경우 문제 해결 단계를 시작하기 전에 오토 스케일링 그룹에서 인스턴스를 일시적으로 제거해야 합니다.
  • 인스턴스를 중지했다가 시작하면 인스턴스의 퍼블릭 IP 주소가 변경됩니다. 외부 트래픽을 인스턴스로 라우팅할 때는 퍼블릭 IP 주소 대신 탄력적 IP 주소를 사용하는 것이 모범 사례입니다. Amazon Route 53을 사용하는 경우 퍼블릭 IP가 변경되면 Route 53 DNS 레코드를 업데이트해야 할 수 있습니다.
  • 인스턴스 정지 동작이 종료로 설정된 경우 인스턴스가 중지 시 종료됩니다. 이 문제를 방지하려면 인스턴스 정지 동작을 변경하세요.

**참고:**해결 단계를 시작하기 전에 EBS 볼륨의 백업을 생성하는 것이 모범 사례입니다.

1.    Amazon EC2 콘솔을 엽니다.

2.    Ubuntu가 실행되고 있는 Amazon Machine Image(AMI)에서 인스턴스를 시작합니다.

3.    첫 번째 인스턴스와 동일한 가용 영역 및 3TiB 루트 볼륨이 있는 동일한 Ubuntu AMI에서 두 번째 인스턴스를 시작합니다.

4.    3TiB 루트 볼륨이 있는 인스턴스를 중지합니다.

5.    중지된 인스턴스에서 루트 볼륨을 분리(/dev/xvda 또는 /dev/sda1)합니다. 그런 다음 2단계에서 생성한 인스턴스에 /dev/sdf연결합니다.

6.    SSH를 사용하여 실행 중인 인스턴스(2단계에서 생성)에 연결합니다.

7.    /dev/sdf의 루트 파티션을 보려면 lsblk명령을 사용합니다. /dev/sdf의 루트 파티션은 다음 예시와 같이 크기가 2TiB에 불과합니다.

# lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
(snip)
xvdf    202:80    0   3T  0 disk
└─xvdf1 202:81    0   2T  0 part
(snip)

참고: Nitro 인스턴스 유형에서 블록 디바이스의 이름은 다음 예시와 비슷합니다. /dev/nvme1n1.

8.    파티션 테이블을 MBR에서 GPT로 변환하려면 gdisk 도구를 사용합니다.

참고: gdisk에 잘못된 명령을 입력한 경우 변경 내용을 저장하지 않고 gdisk를 종료하려면 q를 사용하거나 Ctrl+C를 누릅니다.

# sudo gdisk /dev/xvdf
GPT fdisk (gdisk) version 1.0.1
Partition table scan:
  MBR: MBR only

    BSD: not present
  APM: not present
  GPT: not present

***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. THIS OPERATION IS POTENTIALLY
    DESTRUCTIVE! Exit by
typing 'q' if you don't want to convert your MBR partitions
to GPT format!

9.    전문가 모드로 전환하여 섹터 정렬 값을 설정하려면 프롬프트에 다음 명령을 입력합니다.

**참고:섹터 정렬 값을 기본값인 ** 8에서 1로 변경해야 합니다. 8바이트 정렬을 사용하는 경우 GPT 파티션을 생성할 때 문제가 발생할 수 있습니다.

Command (? for help): x                                            
Expert command (? for help): l                                     
Enter the sector alignment value (1-65536, default = 2048): 1      
Expert command (? for help): m

10.    GPT 파티션을 생성하려면 프롬프트에 다음 명령을 입력합니다. 마지막 섹터프롬프트에 Enter를 입력하여 기본 섹터 번호 2047을 사용합니다.

Command (? for help): n                                                                                                        
Partition number (2-128, default 2): 128                                                                                
First sector (34-6291455966, default = 4294967296) or {+-}size{KMGTP}: 34                     
Last sector (34-2047, default = 2047) or {+-}size{KMGTP}:                                                  
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): ef02                                                     
Changed type of partition to 'BIOS boot partition'

**참고:**이 예제에서 ef02는 BIOS 부트 파티션 번호입니다.

11.    루트 파티션을 삭제하려면 프롬프트에 다음 명령을 입력합니다.

Command (? for help): d                                                                                                         
Partition number (1-128): 1

12.    루트 파티션을 3TiB로 재생성하려면 프롬프트에 다음 명령을 입력합니다. 첫 번째 섹터, ** 마지막 섹터**, 16진수 코드 또는 GUID 프롬프트에 Enter를 입력하여 기본 설정을 사용합니다.

Command (? for help): n                                                                                                         
Partition number (1-128, default 1): 1                                                                                     
First sector (2048-6291455966, default = 2048) or {+-}size{KMGTP}:                                  
Last sector (2048-6291455966, default = 6291455966) or {+-}size{KMGTP}:                       
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):                                                             
Changed type of partition to 'Linux filesystem'

13.    GPT 파티션 테이블을 저장하려면 프롬프트에 다음 명령을 입력합니다.

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.

새 볼륨 정보를 보려면 lsblk 명령을 실행합니다.

# lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvdf    202:80   0   3T  0 disk
└─xvdf1 202:81   0   3T  0 part

14.    디바이스 /dev/xvdf1의 파일 시스템이 올바른지 확인하려면 fsck 도구를 사용합니다. fsck 도구에 대한 자세한 내용은 Ubuntu 웹 사이트의 fsck를 참조하세요.

참고: e2fsck 명령에 -y 스위치를 추가하면 모든 질문에 로 간주됩니다.

# sudo e2fsck -f /dev/xvdf1
e2fsck 1.42.13 (17-May-2015)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure

Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
cloudimg-rootfs: 57524/262144000 files (0.0% non-contiguous), 16648272/536870655 blocks

15.    파일 시스템의 크기를 조정하여 3TiB로 확장하려면 크기 조정 명령을 실행합니다.

**참고:**파일 시스템 크기를 조정하는 데는 10~20초가 걸릴 수 있습니다.

# sudo resize2fs /dev/xvdf1
resize2fs 1.42.13 (17-May-2015)
Resizing the filesystem on /dev/xvdf1 to 786431739 (4k) blocks.
The filesystem on /dev/xvdf1 is now 786431739 (4k) blocks long.

16.    디바이스 /dev/xvdf1에 Grub을 설치하고 다음 명령을 사용하여 구성합니다.

Ubuntu 16.04 또는 18.04:

sudo mount /dev/xvdf1 /mnt
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo mount --bind /dev /mnt/dev
sudo chroot /mnt /bin/bash
grub-install /dev/xvdf
grub-mkdevicemap
update-grub
exit
sudo umount -l /mnt/dev
sudo umount -l /mnt/sys
sudo umount -l /mnt/proc
sudo umount -l /mnt

Ubuntu 20.04:

sudo mount /dev/xvdf1 /mnt
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo mount --bind /dev /mnt/dev
sudo chroot /mnt /bin/bash
grub-install /dev/xvdf
grub-mkdevicemap
echo "GRUB_DISABLE_OS_PROBER=true" > /etc/default/grub
echo "GRUB_FORCE_PARTUUID=" > /etc/default/grub.d/40-force-partuuid.cfg
update-grub
exit
sudo umount -l /mnt/dev
sudo umount -l /mnt/sys
sudo umount -l /mnt/proc
sudo umount -l /mnt

17.    실행 중인 인스턴스에서 /dev/xvdf 볼륨을 분리합니다.

18.    /dev/xvdf 볼륨을 원본 인스턴스에 /dev/xvda 또는 /dev/sda1로 다시 연결합니다.

19.    SSH를 사용하여 원본 인스턴스를 시작합니다.

20.    원본 인스턴스의 루트 볼륨에 3TiB의 공간이 있는지 확인하려면 lsblk 명령을 실행합니다.

관련 정보

EBS 볼륨의 크기 및 구성에 대한 제약

AWS 공식
AWS 공식업데이트됨 8달 전