무지개곰
article thumbnail
반응형

리눅스에서 가상화 환경을 구축하고 관리할 때 libvirt와 virsh가 널리 사용되고 있습니다.

libvirt가 무엇인지, virsh를 동해 가상 머신을 어떻게 관리하는지 가상 머신에 대한 설정을 xml로 확인하는 방법까지 알아보겠습니다.


libvirt란?

libvirt는 리눅스에서 가상화 환경을 관리할 수 있도록 도와주는 오픈 소스 API이자 도구 세트입니다.

다양한 하이퍼바이저(KVM, QEMU, Xen, VMware, Hyper-v 등)를 지원하며, 가상 머신, 네트워크, 스토리지와 같은 가상화 리소스를 제어하고 관리할 수 있습니다.

 

주요 기능

- 가상 머신 관리 : 가상 머신의 생성, 시작, 중지, 일시 정지, 스냅샷 관리

- 스토리지 관리 : 가상 디스크 생성, 삭제, 크기 변경

- 네트워크 관리 : 가상 네트워크 생성 및 관리

- 자원 할당 : CPU, 메모리, 디스크 네트워크 자원의 효율적 관리

- 보안 관리 : 가상 머신에 대한 접근 제어 및 인증 관리

 

libvirt는 다양한 프로그래밍 언어와 함께 사용할 수 있지만, 일반적으로 명령줄 도구인 virsh와 함께 사용하는 것이 일반적입니다.


virsh란?

virsh는 libvirt 기반의 가상 머신을 제어하는 CLI도구로, 가상 머신을 간편하게 관리할 수 있도록 해줍니다.

 

주요 기능

- 가상 머신의 생성과 시작

- 가상 머신의 설정 확인 및 수정

- 가상 머신의 스냅샷 생성 및 복구

- 가상 네트워크 및 스토리지 관리


virsh 사용하기

virsh에 대하여 생성, 종료 등 기본적인 기능부터 가상 머신의 세부 설정을 하는 방법까지 정리하겠습니다. 

기본적인 명령어

- 가상머신 시작

virsh start <VM 이름 또는 ID>

 

- 가상머신 중지

virsh shutdown <VM 이름 또는 ID>

 

- 가상머신 강제 종료

virsh destory <VM 이름 또는 ID>

 

- 가상 머신 재부팅 

virsh reboot <VM 이름 또는 ID>

 

- 가상머신 상태 확인 (--all은 옵션)

virh list --all

가상 머신 설정하기

가상 머신을 생성할 때 CPU, 메모리, 네트워크, 디스크 등 자원을 정의하여 실행할 수 있습니다.

 

가상머신 생성하기

sudo virt-install \
  --name test-vm \
  --ram 2048 \
  --vcpus 2 \
  --disk path=/var/lib/libvirt/images/test-vm.qcow2,size=10 \
  --os-type linux \
  --os-variant ubuntu20.04 \
  --network network=default \
  --graphics vnc \
  --cdrom /path/to/ubuntu.iso
  • name : 가상 머신의 이름을 지정합니다.
  • ram : 할당할 메모리 용량을 설정합니다.
  • vcpus : 가상 머신에 할당할 CPU 코어 수를 지정합니다.
  • disk : 가상 디스크의 경로와 크기를 설정합니다.
  • os-type : 운영 체제의 타입을 정의합니다.
  • os-variant : 가상 머신에 설치할 운영 체제의 특정 버전을 지정합니다.
  • network : 가상 머신의 네트워크 설정을 정의합니다.
    • 브릿지 모드 : bridge=br0
    • 사용자 모드 : user
  • grapics : 가상 머신의 그래픽 디스플레이 처리 방식 정의
    • vnc : 원격으로 쉽게 접속할 수 있는 기본 그래픽 설정
    • rdp : 원격 데스크탑 방식으로, windows와 유사한 원격 접근 방식 제공
    • spice : 더 나은 그래픽 성능 및 푸가 기능을 제공하는 원격 디스플레이 방식
  • cdrom : ISO 파일 경로를 통해 가상 머신을 설치할 수 있도록 합니다.

가상 머신 설정 확인 - domain xml

생성한 가상 머신의 설정을 확인하려면 아래의 명령을 사용하면 됩니다. 이 명령은 가상 머신의 현재 설정을 XML 형식으로 출력합니다.

sudo virsh dumpxml <VM 이름 또는 ID>

위 명령을 실행하면 아래와 같은 XML 파일이 출력됩니다.

<domain type='kvm'>
  <name>test-vm</name>
  <uuid>8a756d36-5064-479d-9a78-e1b6c69c4b15</uuid>
  <memory unit='KiB'>2097152</memory>
  <vcpu placement='static'>2</vcpu>
  <os>
    <type arch='x86_64' machine='pc-i440fx-2.9'>hvm</type>
    <boot dev='hd'/>
  </os>
  <devices>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/lib/libvirt/images/test-vm.qcow2'/>
      <target dev='vda' bus='virtio'/>
    </disk>
    <interface type='network'>
      <mac address='52:54:00:12:34:56'/>
      <source network='default'/>
      <model type='virtio'/>
    </interface>
    <graphics type='vnc' port='-1' autoport='yes'/>
  </devices>
</domain>

 

생성된 가상 머신의 설정 변경

xml 설정파일을 내보내어 수정하는 방법과 명령어를 사용하는 방법이 있습니다.

명령어를 사용하여 변경하는 방법에는 동적 변경과 영구 변경방법이 있습니다.

영구 변경의 경우 가상머신을 재시작해주어야 적용됩니다.

명령어를 사용하는 방법을 기록하도록 하겠습니다.

vCPU 수정

[동적 변경] 실행 중인 가상 머신의 vCPU 수정

sudo virsh setvcpus <VM 이름 또는 ID> <vCPU 수> --live

 

[영구 변경] 종료된 가상 머신의 vCPU 수정

sudo virsh setvcpus <VM 이름 또는 ID> <vCPU 수> --config

 

메모리 수정

메모리의 크기의 경우 KiB로 입력됩니다. ex) 4GB를 설정하는 경우 4*1024*1024 = 4194304 입력

[동적 변경] 실행 중인 가상 머신의 메모리 수정

sudo virsh setmem <VM 이름 또는 ID> <메모리 크기> --live

 

[영구 변경] 종료된 가상 머신의 메모리 수정

sudo virsh setmem <VM 이름 또는 ID> <메모리 크기> --config

 

디스크 크기 수정

가상 머신의 디스크 크기를 증가시키는 경우 virsh가 아닌 qemu-img를 사용합니다.

가상 머신의 디스크 이미지 파일 경로의 경우 xml에서 soure 태그에서 확인할 수 있습니다.

증가량은 10G를 증가시키는 경우 10G를 입력하면 됩니다.

sudo qemu-img resize <가상 머신의 디스크 이미지 파일 경로> +<증가량>

 

ex)

sudo qemu-img resize /var/lib/libvirt/images/test-vm.qcow2 +10G

 

 

 

반응형
profile

무지개곰

@무지개곰

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!