⭐️ Amazon Web Service/Amazon EC2

[Windows] Windows 2019 EBS볼륨 축소

mini_world 2021. 3. 23. 21:12
목차 접기

안녕하세요! 🙋‍♀️ 🙋‍♂️

이번 포스팅은 EC2의 블록 스토리지(Disk)인 EBS의 볼륨 확장/축소 실습을 진행해 보려고 합니다.

OS는 Windows 2019이고요! 볼륨 확장과 볼륨 축소는 나누어서 포스팅 할 예정입니다.

Amazon EC2 의 볼륨 확장은 아주 간단하지만, 축소는 그렇지 않죠... ㅎ 😩😩😩😩
작업 진행시 주의하셔야 할 점은, 인스턴스와 같은 가용영역에서 진행하셔야 합니다.


시작하기 전에 Windows서버에 테스트 파일을 생성하고, 디스크 크기를 확인해보겠습니다.
- 바탕화면에 test1 ~ 10 테스트 파일을 생성했습니다.
- Diskmgmt.msc(디스크관리자)에서 디스크의 크기를 확인했습니다. 


[작업 순서]

1.  Windows 인스턴스 (중지 후) 스냅샷으로 EBS 복제본(old Vol) 생성
2. 새로운 EBS 볼륨(new Vol) 생성 
3. 작업용 임시 인스턴스(Amazon Linux2) 생성 및 설정
4. Windows 인스턴스의 EBS 복제본(old Vol) 
5. 작업용 임시 인스턴스에 새로운EBS (new Vol) 연결
6. 디스크 데이터 복사
7. 파티션 정보 업데이트
8. 완료! 확인하기


 

1.  Windows 인스턴스 (중지 후) 스냅샷으로 EBS 복제본(old Vol) 생성

먼저, Windows 인스턴스의 EBS의 스냅샷을 생성하겠습니다.
인스턴스 목록에서 Windows 인스턴스를 선택하고 하위 탭의 "스토리지"에서 볼륨 ID를 클릭합니다.
(혹은, 콘솔 왼쪽 네비게이션 바에서 "볼륨"을 클릭하여 EBS를 확인할 수 있습니다)

Windows 인스턴스가 선택되어있는 상태로 상단의 "작업" -> "스냅샷 생성"을 클릭합니다.
스냅샷 생성 페이지에서는 바로 스냅샷 생성을 클릭합니다.

콘솔 왼쪽 네비게이션 바에서 "스냅샷"탭을 클릭하고, 방금 생성한 EBS의 스냅샷의 상태가 pending 에서 completed로 변경되는것을 확인합니다.

 스냅샷을 선택하고, 상단 "작업" -> "볼륨생성"을 클릭하고, 볼륨생성 페이지에서 바로 "볼륨생성"을 클릭합니다.

왼쪽 네비게이션바의 "볼륨"을 클릭하여 방금 생성된 볼륨을 확인할 수 있습니다.
저는 구분을 쉽게 하기 위해 방금 생성한 볼륨의 이름을 "Windows - old Vol -복제본" 으로 변경했습니다.


2. 새로운 EBS 볼륨(new Vol) 생성 

위에 볼륨 생성 버튼을 클릭하여 새로운 EBS 볼륨을 생성합니다.

크기를 30GiB로 설정하고, "볼륨 생성"을 클릭합니다.

새로운 EBS 볼륨 생성이 완료된 후에 구분하기 쉽도록 이름을 "Windows - new Vol"로 변경했습니다.
완료된 후의 모습은 아래와 같습니다.


3. 작업용 임시 인스턴스(Amazon Linux2) 생성 및 설정

EBS 볼륨 축소 작업을 진행할 리눅스 시스템이 필요합니다.
이번 포스팅에서는 Amazon Linux2를 이용합니다. (인스턴스를 생성하는것에 대해서는 자세히 다루지 않습니다.)

작업용 임시 인스턴스에 접속하고, ntfsprogs를 설치합니다.
아래 명령어를 순서에 따라 입력하고, 마지막 패키지 설치 확인 시 아래와 같이 결과가 출력되면 됩니다.

# epel 레포지토리 설치
[root@temp-instance ~]# sudo amazon-linux-extras install epel -y

# ntfsprogs 패키지 설치
[root@temp-instance ~]# yum install ntfsprogs -y

# ntfsprogs 패키지 설치 확인
[root@temp-instance ~]# rpm -qa | grep ntfs


4. Windows 인스턴스의 EBS 복제본(old Vol) 

 

4-1) 작업용 임시 인스턴스에 EBS 복제본(old Vol) 연결

작업용 임시 인스턴스에 EBS 복제본(Windows - old Vol -복제본)을 연결합니다.

EC2 콘솔에서 왼쪽 네비게이션바의 "볼륨"을 클릭하고, Windows - old Vol -복제본을 선택합니다.
위의 작업을 선택하고 "볼륨연결"을 클릭합니다.

볼륨연결 설정을 아래와 같은 팝업페이지에서 확인할 수 있습니다.
만약 여기에서 인스턴스 목록에 작업용 임시 인스턴스가 보이지 않는다면, EBS가 생성된 가용영역과 작업용 임시 인스턴스가 구동되고있는 가용영역이 다를 수 있습니다. (EBS와 EC2 인스턴스는 같은 가용영역에서만 사용 가능합니다.)

볼륨이 연결된 후 작업용 임시 인스턴스에서 lsblk명령어로 연결된 블록디바이스 목록을 확인합니다.
100GB 짜리 블록디바이스를 확인할 수 있으며, 이 디바이스가 위에서 연결한 Windows old vol-복제본 이네요!

[root@temp-instance ~]# lsblk

 

4-2) 디스크 파티션 섹터정보 확인

이 디스크의 파티션 정보를 확인하고, 첫번쨰 파티션이 시작하는 섹터를 기억합니다.
이 디스크의 경우 /dev/nvme1n1p1 파티션 2048 섹터에서 시작되네요!

[root@temp-instance ~]# sfdisk -d /dev/nvme1n1

 

4-3) 파일시스템 크기 확인

파일시스템의 사용용량을 확인합니다.
제 경우에는 16242 MB를 사용하고있네요. 이 경우 16242MB 이하로는 용량을 줄일 수 없습니다.

[root@temp-instance ~]# ntfsresize --info /dev/nvme1n1p1

4-4) 파일시스템 크기 변경

이제, 이 파티션 공간을 줄이는 작업을 진행합니다! (ntfsresize 명령어)
아래 명령어를 실행하기 전, -n 옵션을 사용한다면 실제 파티션이 줄어드는 작업 전 테스트를 실행해볼 수 있습니다.

[root@temp-instance ~]# ntfsresize -s 16242M /dev/nvme1n1p1

작업이 완료 되었습니다.
다시한번 디스크 크기를 확인해봅니다. 이제 사용용량이 100%로 변경되었네요.

[root@temp-instance ~]# ntfsresize --info -f /dev/nvme1n1p1 


5. 작업용 임시 인스턴스에 새로운EBS (new Vol) 연결

작업용 임시 인스턴스에 새로운 EBS볼륨 (Windows - new Vol)을 연결합니다.

EC2 콘솔에서 왼쪽 네비게이션바의 "볼륨"을 클릭하고, Windows - new Vol을 선택합니다.
위의 작업을 선택하고 "볼륨연결"을 클릭합니다.

볼륨연결 설정을 아래와 같은 팝업페이지에서 확인할 수 있습니다.
만약 여기에서 인스턴스 목록에 작업용 임시 인스턴스가 보이지 않는다면, EBS가 생성된 가용영역과 작업용 임시 인스턴스가 구동되고있는 가용영역이 다를 수 있습니다. (EBS와 EC2 인스턴스는 같은 가용영역에서만 사용 가능합니다.)

볼륨이 연결된 후 작업용 임시 인스턴스에서 lsblk명령어로 연결된 블록디바이스 목록을 확인합니다.
위에서 봤던 100GB짜리 볼륨과 방금 새로 연결한 30GB짜리 볼륨 두개가 다 잘 확인되네요.

[root@temp-instance ~]# lsblk


6. 디스크 데이터 복사 

이제 모든 준비가 완료 되었습니다!!
기존 EBS볼륨(Windows - old Vol -복제본)에서 모든 데이터를 새로운 EBS(Windows - new Vol)로 이동시켜줍시다!!

* 주의사항: 원본디스크에서 새로운 디스크로 복사할 크기를 계산합니다. 4-2)섹터정보에서 확인 한 파티션의 시작 섹터는 2048(1MB), 그리고 사용중인 공간 16239 MB을 더합니다. 즉, 16240 MB 의 데이터를 복사 해야 합니다.

디스크 복제 명령어인 DD명령어를 사용합니다.

[root@temp-instance ~]# dd bs=1M if=/dev/nvme1n1 of=/dev/nvme2n1 count=16240

디스크 데이터는 복사 되었습니다 :)


7. 파티션 정보 업데이트

 

파티션 정보를 업데이트 해야합니다.
업데이트 전 아래 명령어로 디스크 파티션 정보 파일을 받습니다.

[root@temp-instance ~]# sfdisk -d /dev/nvme2n1 > sfdisk-d.xvdg

저기 Size 부분을 변경할건데요 계산식은 파티션 실사용크기 * 2048 입니다.
저 같은 경우 파티션 실 사용용량이 16239M 였고, 여기에 2048을 곱합니다. (16249*2048=33257472)
vi 편집기를 이용해 Size를 변경해줍니다.

이후 파티션 정보를 업데이트 합니다.

[root@temp-instance ~]# sfdisk /dev/nvme2n1 < sfdisk-d.xvdg


7. 새로운 EBS, Windows 인스턴스에 연결

Amazon EC2 콘솔로 갑니다.
왼쪽 네비게이션 바 "볼륨"을 클릭하고, Windows - new Vol을 선택합니다. 상단 "작업" --> "볼륨 분리" 합니다.

Windows - old Vol을 선택합니다. 상단 "작업" --> "볼륨 분리" 합니다. 
** OS가 설치된 루트 볼륨을 분리하는것입니다. 인스턴스가 중지상태여야 합니다.

이제 Windows - new Vol 을 윈도우 인스턴스의 루트 디바이스로 연결합니다.

- 디바이스: /dev/sda1

연결이 완료 되었다면, 인스턴스를 시작합니다.
인스턴스의 스토리지를 확인해보면 아래와 같습니다. 


8. 완료! 확인하기

Amazon EC2 (Windows 2019)의 디스크를 축소했습니다.
잘 되었는지 검토 합니다!!

diskmgmt.msc(디스크관리자)에서 내용을 확인할 수 있습니다!! 30GB로 잘 줄어들었네요!!!!! 👍🏻👍🏻👍🏻👍🏻


참고URL : www.apptio.com/blog/how-reduce-size-ebs-windows-boot-volume-aws/

 

How to reduce the size of EBS Windows boot volume in AWS?

Reducing the size of your boot volume cuts usage costs and saves backup snapshot cost for each instance.

www.apptio.com

 

728x90