KVM
Kernel-based Virtual Machine의 약어로, 오픈소스 가상화 기술이다. 리눅스를 하이퍼바이저로써 이용할 수 있게 해주는 솔루션이다. KVM은 리눅스 커널의 일부이기 때문에 리눅스 커널 자원을 공유하고, 이를 본인의 리소스로써 활용할 수 있다.
구축
Preliminary Enviroment
- BIOS > Virtualization technology - on
- OS: Rocky 8.8
- 하나 이상의 Routed port
네트워크
위 그림과 같이 kvm에서 관리하는 vm들이 호스트 서버와 네트워크 자원을 공유하여 사용할 수 있게끔, bridge interface를 생성한다.
[기존 인터페이스]
$ cat /etc/sysconfig/network-scripts/ifcfg-eno1
TYPE=Ethernet
DEFROUTE=yes
NAME=eno1
DEVICE=eno1
ONBOOT=yes
BRIDGE=br0
기존 인터페이스에는 IP 설정 정보가 포함되지 않는다. BRIDGE 옵션을 추가하여 브릿지 인터페이스 명을 명시해준다.
[브릿지 인터페이스]
$ cat ifcfg-br0
TYPE=Bridge
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=172.16.22.132
NETMASK=255.255.0.0
GATEWAY=172.16.0.1
BOOTPROTO=static
TYPE을 Bridge로 명시하고, 브릿지 인터페이스에 IP 설정 정보를 포함한다.
KVM 설치
kvm 관련 rpm 다운로드
$ yum install -y qemu-kvm libvirt @virt virt-install virt-manager libvirt-devel
libvirtd 구동
$ systemctl enable libvirtd
$ systemctl start libvirtd
vnc 관련 rpm 다운로드
$ yum install -y tiger-vncserver
$ yum groupinstall -y "Server with GUI"
vncserver passwd 설정
tiger-vncserver 설치 후 최초에 'vncserver' 를 입력하여 vnc client가 vnc server에 접근 시 입력할 패스워드를 설정한다.
$ vncserver
WARNING: vncserver has been replaced by a systemd unit and is now considered deprecated and removed in upstream.
Please read /usr/share/doc/tigervnc/HOWTO.md for more information.
You will require a password to access your desktops.
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
A view-only password is not used
vncserver 구동
vncserver 구동 후, vnc client가 접근할 포트 확인
$ vncserver :1 -geometry 1680x1050
$ ps -ef | grep Xvnc
root 1617241 1 0 Sep30 ? 00:02:34 /usr/bin/Xvnc :1 -auth /root/.Xauthority -desktop Rocky-UEFI:1 (root) -fp catalogue:/etc/X11/fontpath.d -geometry 1024x768 -pn -rfbauth /root/.vnc/passwd -rfbport 5901
root 1617248 1 0 Sep30 ? 00:00:00 /bin/sh /root/.vnc/xstartup
$ netstat -anp | grep 1617241
tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 1617241/Xvnc
vncviewer 다운로드
하기 웹 페이지에서 vnc server에 접근할 vnc client 툴 다운로드
https://www.realvnc.com/en/connect/download/viewer/
vncserver 접근
vncserver의 ip와 port를 입력하여 접근한다.
GUI 화면 기본 설정을 마친 후 마무리.
VM 생성
1) VM 생성을 하기 위해 'virt-manager'를 실행
$ virt-manager
2) New Virtual Machine
3) 설치에 사용할 iso 이미지를 호스트 서버에 올리고 선택
4) 메모리와 CPU 자원 할당
5) 스토리지 볼륨 생성 후 할당
5) VM 이름 지정 + 네트워크 인터페이스 할당 후 생성을 마친다
6) customize configuration을 본인 환경에 알맞게 설정 후 종료
Appendix
- KVM 위에 동작 중인 VM 확인
$ virsh list
Id Name State
------------------------------
1 test1 running
2 test2 running
3 test3 running
virsh list --all 명령어로는 기동 중이지 않은 vm까지 확인 가능
- vncserver 기동 및 정지
$ vncserver :1
$ vncserver -kill :1
콜론(:) 다음에 오는 번호는 vncserver를 reflect할 디스플레이 번호임. -geometry 옵션을 사용하면 디스플레이 배율 조정 가능
- vncserver 구동 포트 변경
나의 경우, vncserver default 포트와 kvm의 default 포트가 겹치므로, vncserver 구동 포트를 바꿔줘야 했다.
$ cat /usr/bin/vncserver | grep vncPort
$vncPort = 5900 + $displayNumber;
/usr/bin/vncserver에서 '$vncPort'의 값을 변경
- vm cpu pinning 설정
KVM은 기본적으로 커널 자원을 공유한다. 그러므로 CPU 자원도 다른 모든 프로세스와 공유한다. vm이 특정 cpu 만 사용하도록 cpu pinning 설정을 할 수 있다.
#Before
$ cat /etc/libvirt/qemu/test1.xml | grep vcpu
<vcpu placement='static'>4</vcpu>
#After
$ cat /etc/libvirt/qemu/test1.xml | grep vcpu
<vcpu placement='static' cpuset='0-3'>4</vcpu>
$ systemctl restart libvirtd
xml 형식으로 작성된 vm의 설정 정보를 편집기를 열어 수정한다.
#Before
$ virsh vcpupin 1
VCPU CPU Affinity
----------------------
0 0-39
1 0-39
2 0-39
3 0-39
#After
$ virsh vcpupin 1
VCPU CPU Affinity
----------------------
0 0-3
1 0-3
2 0-3
3 0-3
0번부터 39번 cpu를 공유하여 사용하던 vm의 cpu 점유 정보가 변경된 것을 확인할 수 있다.
'Engineering > Redhat Linux' 카테고리의 다른 글
[Redhat Linux] Kernel downgrade (0) | 2024.12.13 |
---|---|
[Redhat Linux] Glusterfs 구축하기 (0) | 2024.08.16 |
[Redhat Linux] Kickstart 이미지 만들기 (0) | 2024.08.08 |
[Redhat Linux] 5GB 용량의 임시 더미 파일 만들기 (0) | 2024.08.08 |
[Redhat Linux] root 패스워드 초기화 (0) | 2024.08.08 |