리눅스환경에서 가상머신을 사용하는 방법은 여러가지가 있다.
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
'운영체제 > RHEL&CENTOS' 카테고리의 다른 글
[Centos/RHEL] Centos7 minimal OS에 xwindow 설정 (0) | 2019.06.24 |
---|---|
[Centos/RHEL] eth0 으로 들어 데이터 동일 인터페이스 내보내기를 위한 routing 설정 (0) | 2019.06.24 |
[Linux] centos/rhel 7 Bonding 설정 (0) | 2019.06.19 |
[Linux] HP DL380G5 P400 array controller에 Cent/RHEL 7 설치 하기 (0) | 2019.02.28 |
[Linux] Yum Error 관련 "Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again" (0) | 2018.09.20 |