EBS 볼륨의 MBR 파티션에 대한 2TiB 제한을 우회하기 위해 EC2 Ubuntu 인스턴스의 기본 MBR 파티셔닝 체계를 GPT로 변환하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 6월 3일

Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 Ubuntu 16.04, 18.04 또는 20.04를 실행 중입니다. Amazon Elastic Block Store(Amazon EBS) 볼륨의 기본 MBR 파티셔닝 체계를 GPT 파티셔닝 체계로 변환하여 MBR 파티션의 2TiB 제한을 우회하려면 어떻게 해야 합니까?

​해결 방법

경고: 인스턴스를 중지하고 시작하기 전에 다음을 이해해야 합니다.

  • 사용하는 인스턴스가 인스턴스 스토어 지원이거나 데이터가 포함된 인스턴스 스토어 볼륨이 있으면 인스턴스 중지 시 데이터가 손실됩니다. 자세한 내용은 인스턴스의 루트 디바이스 유형 확인을 참조하십시오.
  • 인스턴스가 Amazon EC2 Auto Scaling 그룹의 일부인 경우 인스턴스를 중지하면 인스턴스가 종료될 수 있습니다. Amazon EMR, AWS CloudFormation 또는 AWS Elastic Beanstalk를 사용하여 인스턴스를 시작한 경우 인스턴스가 AWS Auto Scaling 그룹의 일부일 수 있습니다. 이 시나리오에서 인스턴스 종료는 Auto Scaling 그룹에 대한 인스턴스 축소 보호 설정에 따라 달라집니다. 인스턴스가 Auto Scaling 그룹의 일부인 경우, 문제 해결 단계를 시작하기 전에 Auto Scaling 그룹에서 일시적으로 인스턴스 제거합니다.
  • 인스턴스를 중지했다가 시작하면 인스턴스의 퍼블릭 IP 주소가 변경됩니다. 외부 트래픽을 인스턴스로 라우팅할 때는 퍼블릭 IP 주소 대신 탄력적 IP 주소를 사용하는 것이 가장 좋습니다. 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.    lsblk 명령을 사용하여 /dev/sdf의 루트 파티션을 봅니다. 다음 예제에 표시된 것과 같이 /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)

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

# 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.    프롬프트에 다음 명령을 입력하여 Expert 모드를 시작하고 섹터 정렬 값을 설정합니다.

참고: 섹터 정렬 값을 기본값인 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 파티션을 생성합니다. Last sector 프롬프트에서 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.    프롬프트에 다음 명령을 입력하여 루트 파티션을 3TB로 다시 생성합니다. First sector, Last sectorHex code 또는 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.    fsck 도구를 사용하여 /dev/xvdf1 디바이스의 파일 시스템이 올바른지 확인합니다. fsck 도구에 대한 자세한 내용은 Ubuntu man 웹 사이트에서 fsck를 참조하세요.

# 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.    resize 명령을 실행하여 파일 시스템 크기를 변경하고 3TB로 확장합니다.

참고: 파일 시스템의 크기를 변경하는 데 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.    lsblk 명령을 실행하여 원본 인스턴스의 루트 볼륨에 3TiB의 공간이 있는지 확인합니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?