운영체제/RHEL&CENTOS

[Linux] KVM(for Kernel-based Virtual Machine) (1) - Install

louky 2019. 6. 24. 10:37
반응형

리눅스환경에서 가상머신을 사용하는 방법은 여러가지가 있다.

VMware, Virtual Box, KVM 등이 있는데 별도의 라이선스도 없이 설치가 쉬운  KVM에 대해 알아 본다. 

 

KVM?

제목/주제와 같이 Kernel Virtual Machine의 약자로 Linux를 하이퍼바이저로 전환하여 호스트 머신이 게스트 또는 가상(VM)머신을 하나 이상을 실행 할 수 있습니다.

 

호스트 머신?

호스트 머신이라는 것은 쉽게 말해서 H/W에 기본적으로 설치된 OS가 동작하는 머신을  호스트 머신이라 한다.   

 

게스트 머신 or 가상머신?

호스트 머신의 운영체제 위에서 동작하는 머신을 일컫는 말로  호스트OS와 다른 OS로도  게스트 머신 설치가 가능하다.  

 

KVM설치 환경

  • H/W  :  Dell PowerEdge R730
  • OS : Centos 7.6 (3.10.0-957.el7.x86_64) (minimal version)

 

Install ...

 

Step1. 사전 작업 

 

서버의CPU가 가상화를 지원하는지 확인한다.

[root@cronus ~]# egrep '(vmx|svm)' --color=always /proc/cpuinfo | wc -l
32

확인이 안될 경우 BIOS에서 설정을 변경하거나 CPU제조사의 spec을 확인한다.

 

kvm module 확인한다.

기본적으로 kernel 2.6.20 이상이면 기본적으로 사용할수 있도록 모듈이 탑재되어 있다.

[root@cronus ~]#  lsmod | grep kvm
kvm_intel             183621  0
kvm                   586948  1 kvm_intel
irqbypass              13503  1 kvm

 

Step2.  PKG 설치 

 

KVM PKG를 설치 한다. 

[root@cronus ~]# yum install -y bridge-utils dejavu-lgc-sans-fonts kvm libguestfs \
 libvirt libvirt-client python-virtinst qemu qemu-kvm \
 virt-install virt-manager virt-top virt-viewer virt-who

설치되는 PKG의 용도는 아래와 같다.

 qemu, kvm, qemu-kvm Qemu + KVM 설치 및 연동
 libvirt 하이퍼바이저 제어를 위한 libvirt 라이브러리 및 libvirtd 설치
 virt-install 가상 머신 생성 시 쉽게 사용하기 위한 명령어 설치
 bridge-utils 가상 머신에 연결해줄 브릿지(i.e virbr0) 생성을 위한 툴 (Virtual Box의 NAT 브릿지라 생각하면 쉬움)
 virt-manager 가상 머신 관리를 위한 GUI 툴
 dejavu-lgc-sans-fonts virt-manager 폰트 패키지
 virt-viewer 가상 머신에 붙어서 GUI로 작업하기 위한 뷰어 패키지
virt-top top과 유사한 가상화 현황조회 도구
virt-viewer  
python-virtinst  
libvirt-client  
libguestfs  

 

설치확인 

[root@cronus ~]# virt-host-validate
  QEMU: Checking for hardware virtualization                                 : 통과
  QEMU: Checking if device /dev/kvm exists                                   : 통과
  QEMU: Checking if device /dev/kvm is accessible                            : 통과
  QEMU: Checking if device /dev/vhost-net exists                             : 통과
  QEMU: Checking if device /dev/net/tun exists                               : 통과
  QEMU: Checking for cgroup 'memory' controller support                      : 통과
  QEMU: Checking for cgroup 'memory' controller mount-point                  : 통과
  QEMU: Checking for cgroup 'cpu' controller support                         : 통과
  QEMU: Checking for cgroup 'cpu' controller mount-point                     : 통과
  QEMU: Checking for cgroup 'cpuacct' controller support                     : 통과
  QEMU: Checking for cgroup 'cpuacct' controller mount-point                 : 통과
  QEMU: Checking for cgroup 'cpuset' controller support                      : 통과
  QEMU: Checking for cgroup 'cpuset' controller mount-point                  : 통과
  QEMU: Checking for cgroup 'devices' controller support                     : 통과
  QEMU: Checking for cgroup 'devices' controller mount-point                 : 통과
  QEMU: Checking for cgroup 'blkio' controller support                       : 통과
  QEMU: Checking for cgroup 'blkio' controller mount-point                   : 통과
  QEMU: Checking for device assignment IOMMU support                         : 통과
  QEMU: Checking if IOMMU is enabled by kernel                               : 경고  (IOMMU appears to be disabled in kernel. Add intel_iommu=on to kernel cmdline arguments)
   LXC: Checking Linux 경우 >= 2.6.26                                      : 통과
   LXC: Checking for namespace ipc                                           : 통과
   LXC: Checking for namespace mnt                                           : 통과
   LXC: Checking for namespace pid                                           : 통과
   LXC: Checking for namespace uts                                           : 통과
   LXC: Checking for namespace net                                           : 통과
   LXC: Checking for namespace user                                          : 통과
   LXC: Checking for cgroup 'memory' controller support                      : 통과
   LXC: Checking for cgroup 'memory' controller mount-point                  : 통과
   LXC: Checking for cgroup 'cpu' controller support                         : 통과
   LXC: Checking for cgroup 'cpu' controller mount-point                     : 통과
   LXC: Checking for cgroup 'cpuacct' controller support                     : 통과
   LXC: Checking for cgroup 'cpuacct' controller mount-point                 : 통과
   LXC: Checking for cgroup 'cpuset' controller support                      : 통과
   LXC: Checking for cgroup 'cpuset' controller mount-point                  : 통과
   LXC: Checking for cgroup 'devices' controller support                     : 통과
   LXC: Checking for cgroup 'devices' controller mount-point                 : 통과
   LXC: Checking for cgroup 'blkio' controller support                       : 통과
   LXC: Checking for cgroup 'blkio' controller mount-point                   : 통과
   LXC: Checking if device /sys/fs/fuse/connections exists                   : 실패  (Load the 'fuse' module to enable /proc/ overrides)

 

 

QEMU: Checking if IOMMU is enabled by kernel                               : 경고  (IOMMU appears to be disabled in kernel. Add intel_iommu=on to kernel cmdline arguments 발생 시 " /etc/sysconfig/grub"수정 

[root@cronus ~]# cat /etc/sysconfig/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet intel_iommu=on"     ##intel_iommu=on  추가
GRUB_DISABLE_RECOVERY="true"

추가 후 grub update

[root@cronus ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-957.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-957.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-3b693b5f848947c9afb9803d14cb7c0f
Found initrd image: /boot/initramfs-0-rescue-3b693b5f848947c9afb9803d14cb7c0f.img
done
[root@cronus ~]#

 

System reboot

 

반응형