이런 저런 테스트를 위해 두 대의 PC에 설치해 사용하고 있는 쿠버네티스 클러스터의 워커노드에서 디스크가 부족하다는 메시지가 뜨기 시작했다. 그런데 용량이 부족하다는 메시지가 아니라 “disk pressure”라는 메시지가 보인다. 해석하자면 “디스크에 압박이 있다” 정도가 아닐까? 어쨌든 쿠버네티스 입장에서 워커노드의 디스크 용량이 부족해 압박을 받고 있다는 그런 메시지로 보인다.
당연히 쿠버네티스 노드의 디스크 용량을 증설해줘야 한다. 이참에 마스터 노드와 워커 노드 모두 현재 24G가 할당되어 있는 디스크에 24G를 더 추가해 48G로 디스크 용량을 증설해주기로 했다.
Proxmox VE에서 노드의 디스크 용량 늘려주기
노드의 운영체제인 우분투24.04에서 디스크를 늘리기 전에 Proxmox VE에서 먼저 노드의 디스크 용량을 늘려줘야 한다. 이는 물리적인 서버에서 용량을 늘릴 때 물리 디스크를 더 큰 용량으로 바꿔주거나 새 디스크를 장착해주는 그런 작업과 동일하다고 생각하면 된다.
아래 화면처럼 VM을 선택하고 Hardware 메뉴에 가면 아래쪽에 Hard Disk 항목이 보인다. 현재 size가 24G로 되어 있다.

앞 화면 상단에 보이는 “Disk Action” 버튼이 보인다. 이 버튼을 누르면 다음과 같이 Resize 메뉴가 보인다.

Resize 버튼을 누르면 용량을 얼마나 증설할 것인지를 묻는다.

기존의 24G에 24G를 추가할 것이므로 24를 입력한다. 기본이 GB다. “Resize disk” 버튼을 누르며 잠시 프로그레스바가 나타나고 금새 작업이 끝난다. 실제 물리 서버였다면 서비스 중단은 기본이고 몇 시간이 걸릴지 모르는 작업이지만 Proxmox와 같은 가상화 환경에서는 단 1분여 만에 디스크의 물리적 증설이 완료된다.
가능하다면 VM을 리부팅해주는 것이 좋고 리부팅하지 않고 VM의 운영체제에서 확장된 용량을 인식시켜 파일시스템을 늘리는 것 까지 가능하다.
운영체제에서 파티션 및 물리 볼륨 용량 확장하기
요즘엔 리눅스를 설치하면 기본적으로 LVM (Logical Volume Manager)을 사용해 설치하므로 LVM 기준으로 설명을 진행한다.
먼저 파일시스템의 구성 상태를 다음의 두 명령으로 확인한다.
먼저 다음의 명령으로 파티션의 크기를 확장한다.
$ sudo lsblk
$ sudo df -h
두 명령을 차례대로 실행하면 다음과 같은 결과가 출력된다.

먼저 파티션 sda3(디스크 sda의 3번째 파티션)의 용량이 22G인 것을 볼 수 있다. 이는 최초 할당했던 24G가 디스크 sda에 할당되고 sda가 다시 1,2,3 으로 나뉜 세 개의 파티션에 할당되어 있는 것이다. 그런데 Proxmox에서 이 VM에 있던 하나의 디스크(우분투 리눅스에서 sda로 인식된 디스크)를 24G 만큼 확장했으므로 sda가 총 48G로 늘어난 것을 볼 수 있다. 이제 어느 파티션에도 할당되어 있지 않은 24G를 sda3에 할당해준다. 즉 sda3를 확장하는 것이다.
사실 물리 디스크라면 이 작업은 엄청 복잡한 과정을 거쳐야 한다. 물리 디스크라면 파티션은 디스크에 물리적으로 연속된 공간에 위치해야 한다. 게다가 애초에 물리 디스크의 용량이 24G였다면 확장할 수 없다. 디스크를 더 큰것으로 교체하고 파일시스템을 재구성하고 데이터를 마이그레이션하는 과정을 거쳐야 한다. 그리고 이 과정은 엄청복잡하다. 하지만 가상환경이기에 그런 모든 어려움을 쉽게 극복할 수 있는 것이다.
어쨌든 가상화의 축복을 깨달았다면 다음 명령으로 sda3 파티션을 물리적으로 확장한다.
$ sudo growpart /dev/sda 3

다음과 같이 sda3 파티션이 22G에서 24G가 확장되어 46G가 된 것을 확인할 수 있다.

다음은 sda3 파티션에 추가로 할당된 공간을 LVM이 인식할 수 있도록 물리 볼륨을 확장해준다.
$ sudo pvresize /dev/sda3
sda3 파티션 전체를 물리 하나의 물리 볼륨으로 사용할 것이므로 별다른 옵션을 줄 필요는 없다.

논리 볼륨 확장 및 파일시스템 확장하기
물리 볼륨을 확장했다면 이제 논리 볼륨을 확장해야 한다. 다음 명령으로 기존의 논리 볼륨을 최대로 확장한다.
$ sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
ubuntu-lv 볼륨에 전체 공간을 할당한다는 의미다.

다음은 로지컬 볼륨 내 파일시스템을 확장한다.
$ sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
여기까지 실행하면 파일시스템 확장이 완료된다. 이제 확인만 하면 된다. 먼저 디바이스와 파티션 그리고 볼륨의 상태를 확인한다.

맨위의 sda 디스크에는 1,2,3 세개의 파티션이 있고 세 번째 파티션인 sda3 파티션에 디스크에 추가한 24G 용량을 확장한 것을 볼 수 있다. 그리고 sda3 파티션에 지정된 ubuntu volume group의 ubuntu logical volume이 sda3 파티션 전체의 용량만큼 생성되어 있는 것을 확인할 수 있다.
이제 ubuntu-lv에 생성되어 있는 파일시스템을 살펴보자.

ubuntu logical volume에 / 파일시스템이 있고 용량이 22G에서 46G로 확장된 것을 볼 수 있다. 가능하다면 안정적인 운영을 위해 VM을 리부팅해줄 것을 권장한다.
가끔은 1년, 2년 이상 서버를 리부팅하지 않았다고 자랑처럼 이야기하는 경우를 보게 되는데 이건 결코 자랑할 일이 아니다. “저는 서버 운영에 대한 개념이 없어요.”라고 자백하는 것과 같은 것이므로 서버는 꼭 정기적으로 유지보수 타임을 설정해 리부팅하자.
이제 쿠버네티스에서 disk pressure 메시지를 볼 일은 한동안 없을 듯 하다.
#proxmox #filesystem #리눅스볼륨확장
답글 남기기