본문 바로가기
NCloud(NCP)

NCP Block Storage 파티셔닝 후 디스크 증축

by 간식주인 2022. 8. 5.

요건

 - 백업 용도로 사용할 서버를 초기 배포 이후 1TB의 Block Storage를 사용하게 되었습니다.

 - 해당 스토리지는 각 백업 목적에 맞게 os backup - 200GB , Data Backup - 800GB로 파티셔닝 되어 있습니다.

 - 백업을 진행하던 도중 디스크의 사용률이 높아져 증축을 해야하는 상황입니다. 

    증축 크기는 다음과 같습니다. Data Backup 800GB -> 1800GB

 

환경

 - NCP Server(Ubuntu 20.04)

 - Block Storage

 

Process

  1. NCP Server , Block Storage 생성
  2. Block Storage 파티셔닝 및 마운트
  3. Block Storage 용량 증축에 따른 디스크 파티션 용량 증설

주의 사항

- 스토리지의 크기를 확장한 후 파티션 및 파일 시스템 변경 작업 수행 시 스토리지의 데이터가 손실될 수 있으므로 데이터 손실을 방지하기 위해 스냅샷 생성 후 스토리지 크기를 변경하는 것을 권장

- 위와 같은 고객사 요건이 오기전에, os backup을 위한 Block Storage, data backup을 위한 Block Storage를 각각 사용하는 것을 권장드립니다.

=======================================================================================

 

1. NCP Server , Block Storage 생성

 - NCP Server와 Block Storage(1TB)를 생성합니다.

생성 방법으로는 Naver Cloud Platform 콘솔에서 수동으로 생성해도 되지만, NCP Terraform provider를 이용하여 IaC 방식으로 생성하였습니다.

생성 코드의 경우 Terraform 카테고리에 작성하였습니다.

2022.08.05 - [Terraform] - Terraform을 이용하여 NCP 서버 배포

 

Terraform을 이용하여 NCP 서버 배포

엔지니어라면 특정 CSP의 서버를 통해 여러가지 테스트를 진행하는 경우가 있습니다. 오늘은 NCP에서 공인아이피가 부착된 Ubuntu 20.04 서버를 빠르게 생성하는 테라폼 코드에 대해 다뤄보도록 하

enginnersnack.tistory.com

 

Step 1. Terraform init
Step 2. Terraform plan
Step 3. Terraform apply

정상적으로 서버와 스토리지가 생성되었다면, 아래와 같이 NCP 콘솔에서 확인할 수 있습니다.

2. Block Storage 파티셔닝 및 마운트

서버의 공인 아이피로 접속합니다.

테라폼 코드를 활용했다면, 콘솔에서 pem키를 통해 관리자 비밀번호를 확인할 필요 없이 코드를 실행시킨 폴더에서 ~password.txt 파일을 통해 확인할 수 있습니다.

 

fdisk -l 명령어로 현재 서버에 부착된 디스크를 확인할 수 있습니다.

 

fdisk 명령어를 이용해 1TB 의 디스크를 200GB, 800GB로 파티셔닝을 진행합니다.

fdisk -l 명령어로 확인했을 때, 디스크 용량이 섹터로 나누어져 있으며 1 섹터는 512 bytes인 것을 확인할 수 있습니다.

fdisk 명령어로 파티셔닝을 진행할 때 섹터로 나누어야 하므로 각 용량을 계산하면 다음과 같습니다.

200GB = 214748364800B = 419430400 sectors

2048-419430400

800GB = 858993459200B = 1677721600 sectors

419432448-2097151999 (200GB 할당시 2048 sectors부터 시작하므로 419430400+2048 sectors부터 시작합니다.)

fdisk /dev/xvdb
n
p
1
2048
419430400

 

n
p
2
419432448
2097151999

 

파티션 할당 이후 'w'를 입력하여 저장합니다.

 

다시 fdisk -l 명령어로 파티셔닝 된 디스크 용량을 확인합니다.

 

용량이 잘 설정되었으면, 파일 시스템 설정 및 디스크 초기화를 진행합니다.

 

이후 마운트 할 폴더를 생성하고, 마운트를 진행합니다.

mkdir /os_backup
mkdir /data_backup
mount /dev/xvdb1 /os_backup
mount /dev/xvdb2 /data_backup
df -h

 

3. Block Storage 용량 증축에 따른 디스크 파티션 용량 증설

사용하던 디스크 파티션의 용량이 부족하여 /data_backup 폴더의 용량 증설이 필요합니다.

용량 증설 전 확인해야 할 사항은 다음과 같습니다.

 

현재 할당된 1TB의 디스크는 다음과 같이 섹터의 구분으로 할당되어 있습니다.

서버에 부착되어 있는 Block Storage의 사이즈를 1TB -> 2TB로 늘릴 경우 다음과 같습니다.

우리는 궁극적으로 /dev/xvdb2 파티션의 사이즈를 800GB -> 1800GB로 늘려야 합니다.

 

먼저 서버 스토리지 용량을 늘리기 위해 운영중인 서버를 정지합니다.

 *운영중인 서버 정지가 어렵다면, 서버에 부착되어 있는 디스크를 할당 해제 후 사이즈를 조절할 수 있습니다.

 

이후 Naver Cloud Paltform 콘솔에서 Server > Storage로 이동하여 할당되어 있는 스토리지의 크기를 1TB -> 2TB로 늘립니다.

 

스토리지 크기 변경 이후 서버를 시작시키고 접속하여 lsblk 명령어 혹은 fdisk -l 명령어로 늘어난 스토리지 크기를 확인합니다.

/dev/xvdb 가 1TB -> 2TB로 늘어남

 

파티션의 사이즈를 조절하기 위해 growpart 를 설치합니다.

apt-get update 
apt-get install cloud-guest-utils

 

이후  /data_backup 폴더의 마운트를 해제합니다.

 *서버 재시작 시 /etc/fstab에 마운트 정보가 없다면, 할당이 해제되어 있습니다.

unmount /os_backup
unmount /data_backup

 

growpart 명령어를 통해 파티션 확장을 진행합니다.

growpart /dev/xvdb 2

 

lsblk 명령어로 확장된 파티션을 확인합니다.

 

e2fsck 명령어로 해당 파티션의 파일시스템 크기를 확인할 수 있습니다.

e2fsck -f /dev/xvdb2

 

Ubuntu 20.04 의 경우 파일 시스템으로 ext4를 사용하므로 resize2fs 명령어로 파일시스템을 확장합니다.

resize2fs /dev/xvdb2

 

정상적으로 파일시스템까지 확장된 것을 확인하였으면, 다시금 마운트를 진행합니다.

mount /dev/xvdb2 /data_backup

 

df -h 명령어로 확장된 파티션 사이즈를 확인할 수 있습니다.

 

 

[여담]

크게 어려운 작업은 아니지만 클라우드 상에서 추가 스토리지를 사용할 때, 여러개의 파티션으로 사용경우는 많이 없었습니다.(경험상)

만약, 하나의 스토리지를 여러개의 파티션으로 나누어야 할 경우 fdisk으로 파티셔닝할 때 hex code를 8e(lvm)으로 지정하여 논리 볼륨으로 묶어서 사용하시는 것을 권장드립니다.

 

만약 os_backup의 파티션 사이즈도 조정하고 싶을 경우 os_backup의 엔드 섹터와 data_backup의 시작 섹터가 맞닿아 있으므로 데이터를 추가하여 마이그레이션하는등의 방법밖에 없을 것 같습니다.(fdisk로 설정한 파티션 종류가 일반 Linux일 경우)