NCP Block Storage 용량 증설 가이드

Biokim
Cloud Villains
Published in
8 min readAug 23, 2022

**요건

초기 배포 이후 백업 용도로 사용할 서버를 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 방식으로 생성하였습니다.

생성 코드의 경우 이전 미디엄 글을 참고하시면 됩니다.

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

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

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

테라폼 코드를 이용하면 NCP 콘솔에서 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 명령어로 늘어난 스토리지 크기를 확인합니다.

파티션의 사이즈를 조절하기 위해 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일 경우)

--

--