Computing

[jhVM][1] virt-manager, CentOS 7 qcow2 image (root password, 용량 설정 등) 본문

Cloud/jhVM

[jhVM][1] virt-manager, CentOS 7 qcow2 image (root password, 용량 설정 등)

jhson989 2022. 11. 14. 20:25

시나리오

컴퓨터에 CentOS 가상머신들을 생성하고 그들을 기반으로 쿠버네티스 클러스터를 구축해보고자 한다. 이 포스터에서는 그 과정에서 배운 점들을 간단히 정리해본다. 추후 자세한 개념은 계속 공부하면서 정리해 나갈 예정이다.

 

가상머신을 생성하고 쿠버네티스를 운영할 환경은 다음과 같다.

[Host Computer]

- Ubuntu 18.04

- CPU : physical 6(or 8) cores

- Memory : 16(or 8) GB

 

[Virtual Machine]

- CentOS 7.9

- CPU : physical 2 cores

- Memory 3 GB

- Hypervisor : Qeum-KVM

 

[쿠버네티스]

- 1 Master : CentOS VM

- 2 Workers : CentOS VM

 

 

 

Virtual Machine Manager

Virtual Machine Manger(virt-manager[1])는 Ubuntu에서 사용 가능한 가상머신 운영을 위한 데스크탑 GUI 앱으로, libVirt API를 이용하는 GUI 프로그램이다. VirtualBox, VMWare와 같이 가상머신을 생성,운영,삭제할 수 있는 GUI 앱으로 생각하면 될 듯하다. 리눅스에서 사용하는 가상머신 앱이기에 Qemu-KVM를 기본 hypervisor로 사용한다. (찾아보니 Xen이나 LXC 등 다른 hypervisor도 사용가능하다고 한다.)

Fig 1. virt-manager GUI 툴

 

 

Fig 1.은 virt-manager 앱화면을 보여주는 것으로, 3개의 CentOS7 VM이 생성되어 있으며 2개가 실행되고 있음을 볼 수 있다. 

 

 

 

CentOS 7 Image

VM이 실행되기 위해서는 disk image가 필요하다. Disk image는 OS가 설치된 하드디스크 역할을 수행한다. hypervisor는 disk image를 기반으로 VM을 실행되고, VM 운영과정 중 생성되는 데이터는 해당 disk iamge에 저장된다. 해당 VM의 볼륨 디바이스와 같은 역할을 수행한다고 생각하면 좋을 것 같다.

 

CentOS 7을 OS로 사용하기로 선택하였기에 CentOS 7 disk image를 다운로드 받자. Disk image는 ISO, QCOW2 등 다양한 포맷이 있는데, Qemu-KVM은 QCOW2(QEMU Copy-On-Write) 포맷을 disk image로 사용한다. 따라서 CentOS 7 QCOW2 image를 다운 받으면 된다.

 

여담으로, CentOS는 CentOS 7, CentOS 8, CentOS stream 등의 버전이 있는데, 최신 버전은 CentOS stream이며, CentOS 7, CentOS 8은 지원이 종료되거나, 곧 종료될 예정이다. (8은 2021년 종료, 7은 2024년 종료 예정, 앞으로는 stream 버전을 사용해야 한다.)

 

일반적으로 CentOS 7 image를 다운받으려고 하면, ISO 포맷을 다운로드 받는다. virt-manager는 ISO 포맷을 통해 qcow2 생성을 지원하기에 ISO 파일을 다운로드 받아서 virt-manager를 통해 qcow2 이미지를 만들어도 된다. 아직까지는 qcow2 버전 배포와 ISO 버전 배포와의 구체적인 차이점은 잘 모르겠다. qcow2 포맷으로 배포된 것은 cloud-init을 통해 클라우드 플랫폼에서 바로 사용 가능하도록 미리 세팅(?)이 완료되었다는 것 같다. ISO 포맷 배포 파일을 통해 VM을 생성하면 OS 설치과정부터 직접 진행해야 하지만, qcow2는 이미 OS가 설치된 볼륨스토리지이기에 바로 사용할 수 있다는 것이 차이점일 것 같다.

 

 

 

QCOW2 Image root 패스워드 설정

CentOS 7 qcow2 버전(cloud 버전이라고도 함)은 다음에서 다운로드 받을 수 있다. [CentOS-7-x86_64-GenericCloud.qcow2] 파일을 다운로드 받자.

 

qcow2는 미리 환경이 세팅(?)된 볼륨 스토리지이므로 root 계정이 설정되어 있다. 따라서 root 계정을 사용하기 위해서는 패스워드 설정이 필요한데, 다음과 같이 변경할 수 있다.

 

# VM customizing
# virt-customize -a [name.qcow2] --root-password password:[my-password]
virt-customize -a centos7.qcow2 --root-password password:hello1234

 

 

 

QCOW2 Image 용량 설정

또한 qcow2 이미지는 디스크 용량이 정해져서 배포되는데, 다음 명령어를 입력하면 용량을 확인할 수 있다. 이 VM은 8GB의 하드디스크 용량을 가짐을 알 수 있다.

 

# qcow2 이미지 정보 확인
$ qemu-img info centos.qcow2
image: centos.qcow2
file format: qcow2
virtual size: 8.0G (8589934592 bytes)
disk size: 881M
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false

 

이때 centos.qcow2 이미지 자체의 용량을 [ls -al] 등을 통해 찾아보면, 이미지의 디스크 용량(8GB)보다 작은 것을 알 수 있다. qcow2는 thin provisioning[2]을 사용하는데 thin provisioning은 실제 사용할 때 물리 하드디스크의 용량을 차지하는 스토리지 provisioning 방식이다. Thin provisioning에 반대되는 것이 thick provisioning인데, thick 방식은 미리 VM이 사용할 공간을 확보해두는 것으로 만약 40GB 용량을 VM에게 할당하고자 한다면 미리 40GB만큼의 공간을 하드디스크에 할당해둔다. 그에 비해 thin 방식은 실제 사용될 때 하드디스크에 할당되는 방식으로, 40GB 용량을 VM이 사용할 수 있다고 구성해두더라도, 실제 사용하는 용량이 10GB이면 10GB만큼만 하드디스크를 차지한다.

 

qcow2 이미지의 용량 증가는 총 3단계로 진행된다. (각 단계가 정확히 뭘 의미하는 지는 공부가 필요해 보인다.) 1단계는 호스트 컴퓨터에서, 2, 3단계는 VM 실행 이후 VM에서 입력해야 하는 명령어이다.

 

1. qemu-img resize [qcow2 이미지] [용량] (Host에서 입력)

ex) qemu-img resize centos.qcow2 30G

qcow2 이미지가 사용할 수 있는 용량 증가.

 

2. growpart [하드디스크] [파티션 번호] (VM에서 입력)

ex) growpart /dev/vda 1

VM의 파티션(/dev/vda1)의 용량을 늘리는 명령어.

 

3) xfs_growfs [파티션] (VM에서 입력)

ex) xfs_growfs /dev/vda1

VM이 사용하고 있는 파일시스템(xfs)이 늘어난 파티션 용량을 인식(?)하게 하는 명령어. xfs 파일시스템을 사용할 경우 사용하는 명령어로 [df -T] 명령어를 통해 어떤 파일시스템을 사용하는 지 확인할 수 있다.

 

이 3단계를 실행하면 최종적으로 원하는 용량으로 증설된다.

 

 

 

Reference

[1] https://virt-manager.org/

[2] https://en.wikipedia.org/wiki/Thin_provisioning