실행 중인 클라우드 가상 머신의 볼륨 스토리지를 확장하였을 때, 클라우드 콘솔 내 용량 확장 작업 외에 직접 인스턴스에 접속하여 명령어를 입력해 작업해야 하는 부분이 있다.


바로 파일 시스템을 확장하는 작업이다. 파일 시스템을 확장하는 작업이 왜 필요한지, 또 완벽하게 자동화 되지 않고 수동으로 작업해야하는 이유에 대해서 알아보자.
볼륨 스토리지를 확장하는 과정은 크게 3단계로 나뉜다. 첫번째는 물리적인 볼륨 확장, 두번째는 파티션 확장, 마지막은 파일 시스템 확장이다. 각 단계에서 어떤 일이 일어나는시 살펴보자.
클라우드 콘솔에서 우리가 볼륨을 확장 명령을 하였을 때 일어나는 작업이다. CSP 실제 인프라 레벨에서 일어나며 스토리지 디바이스에 더 많은 공간을 할당하는 것을 의미한다.
NHN Cloud를 이용하여 20G의 볼륨 스토리지를 가지는 인스턴스를 생성하였다. 그 후 인스턴스의 물리적인 저장장치(블록 디바이스) 목록을 확인하는 명령어인 sudo lsblk를 이용해 저장장치 목록을 출력한 화면이다.

현재 가상 블록 디바이스(virtual device a, vda) 하나에 단일 파티션(vda1)으로 저장장치가 구성된 것을 볼 수 있다.
여기서 NHN Cloud 콘솔을 이용해 용량을 2GB 증가시킨 후 다시 동일한 명령어를 입력해보았다.


가상 블록 디바이스는 22G로 증설되었지만 현재 사용하고 있는 파티션은 20G 그대로인 것을 볼 수 있다. 이 말은 즉 아직 우리는 22G를 사용하지 못하고 20G만을 사용할 수 있다는 뜻이다.
두번째 단계는 파티션 확장이다. 파티션이란 물리적 저장 장치를 논리적으로 분할한 단위를 말하는데, 여러 독립적인 영역으로 저장장치를 나눠 용도를 구분하거나 독립적인 파일 시스템을 가지게 할 수 있다. 이러한 파티션을 가상머신이 여러개 가지고 있고, 특정 파티션에 증설된 저장 용량을 할당하고 싶은 경우에는 파티션 확장을 진행한다.
현재 생성한 가상머신에는 하나의 단일 파티션이 존재하고, 이 파티션을 루트 경로에 마운트하여 사용하고 있다. 따라서 우리는 이 파티션을 확장해야하며 sudo growpart /dev/vda 1 명령어를 이용해 파티션을 확장한다.

이제 파티션이 성공적으로 확장된 것을 볼 수 있다.
마지막 단계인 파일 시스템 확장이다. 앞선 단계에서 물리적인 저장장치, 파티션의 확장을 수행하였지만, 실제 파일을 관리하는 파일 시스템은 이를 알아채지 못하고 있다. 따라서 직접 파일 시스템을 확장 해주어야 하는 것이다.
df -hT 명령어를 통해 실제 파일 시스템이 인식하고 있는 용량을 확인해보자.

하단을 보면 /dev/vda1(파티션)이 루트 경로에 마운트 되어있고 20G로 인식하고 있다는 것을 볼 수 있다. 파일 시스템은 xfs, ext4 등 용도에 따라 여러 종류의 파일 시스템이 존재하는데, 현재는 xfs 파일 시스템을 기준으로 확장해보겠다.
현재 파티션이 루트 경로(/)에 마운트 되어 있기 때문에 sudo xfs_growfs -d / 명령어를 이용해 파일 시스템을 확장해준다. 그 후 다시 파일 시스템이 인식하고 있는 용량을 확인하면

정상적으로 파일 시스템도 확장되었고 우리는 비로소 확장된 용량의 스토리지를 이용할 수 있다.
우리는 1단계를 CSP 콘솔에서 수행하였고 2단계 부터는 직접 인스턴스에 접속해서 명령어를 통해 작업하였다. 왜 자동화 하지 않고 수동으로 확장을 해야하는 것일까?
위 물음에 대한 답변은 각 단계에서 수행하는 행동에서 알 수 있다. 파티션 확장 단계부터는 실제 가상머신 내부의 파티션 구성, 파일 시스템 구성에 따라 복잡한 작업을 수행한다. 위 예시에서는 단일 파일 시스템, 단일 파티션으로 확장을 진행하였지만 여러 파티션이 분할되어 있고 각 파티션마다 다른 파일 시스템을 쓸 경우에는 과정이 더욱 복잡해진다. 이러한 복잡한 과정이 있기 때문에 파티션 확장과 파일 시스템 확장은 가상머신을 사용하는 사용자에게 넘겨 정교한 커스터마이징을 할 수 있도록 하는 것이다.
또한 CSP의 SLA(서비스 수준 계약)을 살펴보면 OS 관리는 사용자의 영역임을 볼 수 있다. 실제 물리적인 인프라를 CSP가 제공해주고, 세부적인 OS 조작을 사용자가 수행하는 역할을 명확히 분리하는 이유도 있는 것이다.
EBS 볼륨 크기 조정 후 파일 시스템 확장 - Amazon EBS
AWS Service Level Agreement - What you need to know | Logicata