나의 공부기록

[VMware] 20. KVM(Kernel-based Virtual Machine) 본문

CS/Linux

[VMware] 20. KVM(Kernel-based Virtual Machine)

나의 개발자 2025. 2. 15. 23:46

KVM(Kernel-based Virtual Machine) 

  • 리눅스 커널을 하이퍼바이저(Hypervisor)로 변환하여 가상화를 지원하는 기술
    ➡️ 리눅스에서 직접 가상 머신(VM)을 실행할 수 있도록 하는 오픈 소스 가상화 솔루션

 

서버 가상화 - Hypervisor 분류 방법

1. Hypervisor의 위치가 어디인지

  • Type1
    • 자원(리소스 : CPU, RAM...)의 효율 ⬆️ 
      = 자원의 효율 = 오버헤드
    • Bare-metal 가상화라고 부르기도 함
  • Type 2

2. 가상화를 어떻게 하는지- Type 1 기준으로 생각

  • 전(Full) 가상화
    • dom 0가 명령어를 처리하기 때문에, 가상 또는 현실 Machine인지 파악 불가능 
    • VMware vSphere(ESXi), Hyper-V(윈도우), KVM(리눅스 커널 기반)
  • 반(Para) 가상화
    • Hypercall을 통해 명령어를 바로 host machine에 전달하기 때문에 속도가 빠름 
    • Xen

 

KVM 특징

  1. 리눅스 커널 내장
    • KVM은 리눅스 커널 모듈로 자동하여, 별도의 하이퍼바이저 설치 없이 가상화를 제공
  2. 하드웨어 가상화 지원 필요
    • Intel VT-x(Intel Virtualization Technology) 또는 AMD-V(AMD Virtualization)와 같은 CPU의 가상화 확장 기능 필요
  3. 완전한 가상화(Full Virtualization, 전 가상화)
    • Guest OS가 특별한 수정 없이 네이티브 환경처럼 실행될 수 있음
  4. QEMU와 함께 사용
    • QEMU(Quick Emulator)와 함께 사용하면 다양한 하드웨어 및 디바이스 에뮬레이션 가능
  5. 성능 최적화
    • 리눅스 스케줄러 및 메모리 관리 기능을 활용하여 고성능 가상화 환경을 제공
  6. 보안 기능
    • SELinux 및 sVirt 기술을 활용한 격리 보안 제공

 

KVM 실습

KVM 실습 환경

 

💡KVM 실습 구조 주의사항

  • Kernel = 하드웨어를 제어하기 위한 다양한 모듈들의 모임
  • Virtual Machine Manager가 마치 Hypervisor처럼 보이지만, KVM을 관리하기 위한 다양한 도구 중 하나

KVM 실습 과정 - KVM 서버

더보기

1. 초기 설정 - 방화벽 & SELinux & Repository

  • 방화벽 해제
[root@kvm-250213 ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
  • SElinux 비활성화
[root@kvm-250213 ~]# sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config
  • Repository 수정
[root@kvm-250213 ~]# cat <<EOF > /etc/yum.repos.d/CentOS-Base.repo
> [base]
> name=CentOS-$releasever - Base
> #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
> baseurl=https://vault.centos.org/7.9.2009/os/x86_64/
> gpgcheck=1
> gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
> 
> #released updates
> [updates]
> name=CentOS-$releasever - Updates
> #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
> baseurl=https://vault.centos.org/7.9.2009/updates/x86_64/
> gpgcheck=1
> gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
> 
> #additional packages that may be useful
> [extras]
> name=CentOS-$releasever - Extras
> #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
> baseurl=https://vault.centos.org/7.9.2009/extras/x86_64/
> gpgcheck=1
> gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
> 
> #additional packages that extend functionality of existing packages
> [centosplus]
> name=CentOS-$releasever - Plus
> #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
> baseurl=https://vault.centos.org/7.9.2009/centosplus/x86_64/
> gpgcheck=1
> enabled=0
> gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
> 
> #contrib - packages by Centos Users
> [contrib]
> name=CentOS-$releasever - Contrib
> #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib&infra=$infra
> baseurl=https://vault.centos.org/7.9.2009/contrib/x86_64/
> gpgcheck=1
> enabled=0
> gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
> EOF

 

2. NetworkManager 비활성화

  • NetworkManager 비활성화 이유
    ➡️ ifcfg 파일과 NetworkManager가 우선순위로 충돌이 발생할 수 있기 때문에
  • 네트워크 수정 방법
    1. 네트워크 스크립트 파일(ifcfg 파일) 수정
    2. nmtui
    3. Network Manager - GUI ➡️ 비활성화
[root@kvm-250213 ~]# systemctl stop NetworkManager
[root@kvm-250213 ~]# systemctl disable NetworkManager
Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
Removed symlink /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service.
  • NetworkManager 비활성화 확인

 

3. NIC(인터페이스) 이름 수정 - ens32 ➡️ eth0

  • NIC(인터페이스) 이름 수정 이유
    ➡️ 인터페이스의 이름을 통일 시키고자 함
    ➡️ br0라는가상의 인터페이스를 만들어서 vmware-workstation의 브릿지같은 대역을 만들고 싶음

3-1. SNAPSHOT

 

3-2. 네트워크 스크립트 파일(ifcfg) 수정

[root@kvm-250213 ~]# cd /etc/sysconfig/network-scripts/
[root@kvm-250213 network-scripts]# ls | grep ifcfg
ifcfg-ens32 # 해당 파일의 이름 & 내용 수정
ifcfg-lo # 가상의 인터페이스도 설정파일 존재

# centOS에서는 장치(ens32)에 해당하는 설정파일이 존재해야 함 
[root@kvm-250213 network-scripts]# mv ifcfg-ens32 ifcfg-eth0

# 불필요한 부분 삭제
# 한줄 삭제 dd
[root@kvm-250213 network-scripts]# vi ifcfg-eth0

TYPE="Ethernet"
BOOTPROTO="none"
DEFROUTE="yes"
NAME="eth0"
DEVICE="eth0"
ONBOOT="yes"
IPADDR="211.183.3.50"
PREFIX="24"
GATEWAY="211.183.3.2"
DNS1="8.8.8.8"
NM_CONTROLLED=no #네트워크매니저의 영향을 받지 않겠음

 

3-3. GRUB(부트로더)  수정 - 장치명 부여 방식 수정

  • 부트로더에 장치 네이밍 방식이 정의되어 있기 때문
    ➡️ 장치가 추가되면 원하는 장치명을 부여하기 위해서 수정
[root@kvm-250213 network-scripts]# vi /etc/default/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 rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0 biosdevname=0"
GRUB_DISABLE_RECOVERY="true"

#수정 내용 반영
[root@kvm-250213 network-scripts]# grub2-mkconfig -o /boot/grub2/grub.cfg 
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-1160.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1160.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-d169ebc80e9340a9ba04e9b43da5fe11
Found initrd image: /boot/initramfs-0-rescue-d169ebc80e9340a9ba04e9b43da5fe11.img
done

 

3-4. KVM 서버 종료

[root@kvm-250213 network-scripts]# init 0

 

4. KVM 서버 가상화 기술 활성

  • KVM라는 Hypervisor가 호스트(=노트북)의 자원을 잘 끌어다 사용할 수 있도록 도와주는 가상화 기술을 활성화
  • 가상화 기술을 활성화하지 않으면 KVM 서버 내에서 VM을 만들지 못하고 시간이 오래걸림

 

5. NIC 확인 - 활성화 여부, 장치명, IP

  • 장치명 : ens32 ➡️ eth0
  • ifconfig 명령을 통해 활성화된 장치 확인 가능

 

6. KVM 관련 패키지 설치

  • KVM 관련 패키지
    1. qemu-kvm
      • 하드웨어 자원을 에뮬리이션하여 가상화를 지원
      • CPU, 메모리, 디스크, 네트워크 등 하드웨어 자원을 가상화하여 VM을 실해
    2. libvirt : kvm app
    3. virt-install : vm 설치하는 기능
    4. virt-manager : vm 설치 관리자
    5. virt-viewer : 콘솔 화면 제공(입출력)
      • vmware workstation에서 vm을 만들면 화면에 보이는 것처럼 제공
root@kvm-250213 ~]# yum install -y qemu-kvm libvirt virt-install virt-manager virt-viewer

 

7. KVM  제어 계정 및 그룹 권한 부여

  • KVM 제어 계정 및 그룹 권한 설정 파일 수정
[root@kvm-250213 ~]# vi /etc/libvirt/qemu.conf

[수정 내용]
# 주석 해제
# kvm을 제어할 수 있는 계정 및 그룹 권한부여
    442 user = "root"
    443 
    444 # The group for QEMU processes run by the system instance. It can be
    445 # specified in a similar way to user.
    446 group = "root"
  • libvirtd 재부팅
[root@kvm-250213 ~]# systemctl restart libvirtd
[root@kvm-250213 ~]# systemctl enable libvirtd

 

8. Virtual Machine Manager(=VMware Workstation) 생성 확인

  • application 형태로 확인 가능 = KVM APP

 

9. ISO 파일 다운로드 - vyos에 필요한 OS 설치 파일

[root@kvm-250213 ~]# wget https://ftp.yz.yamagata-u.ac.jp/pub/vyos/iso/release/1.1.7/vyos-1.1.7-amd64.iso

# iso 파일 위치 이동 & 이름 변경
[root@kvm-250213 ~]# mv vyos-1.1.7-amd64.iso.2 /var/lib/libvirt/images/vyos.iso
[root@kvm-250213 ~]# ls /var/lib/libvirt/images
vyos.iso

 

10. KVM에서 vyos 서버(VM)  생성

  • iso 파일 위치 설정
    • /var/lib/libvirt/images : iso파일을 인식할 수 있는 위치
iso 파일이 안 보이면 해당 위치로 이동 후, reload하면 확인 가능
  • SPEC 설정 - RAM, CPU
  • Disk image 용량 설정
  • 서버명 & 네트워크 대역 설정
    • VM 자체 = VM의 디렉토리 = /var/lib/libvirt/images/vyos.qcow2
  • NIC 확인
  • virt-viewer를 통해 KVM 설치 확인 가능

 

 

 

KVM 실습

KVM2를 똑같이 구성
Hostname : kvm2
IP : 211.183.3.60/24
SPEC : 2x2 core / 8GB / 20GB

 

1. KVM2 서버 생성

 

2. 장치명 변경 : ens32 ➡️ eth0

[root@kvm2-250214 ~]# cd /etc/sysconfig/network-scripts/

[root@kvm2-250214 network-scripts]# ls | grep ifcfg
ifcfg-ens32
ifcfg-lo

[root@kvm2-250214 network-scripts]# mv ifcfg-ens32 ifcfg-eth0

 

3. 부트로더(GRUB) 수정 - 장치 네이밍 방식

[root@kvm2-250214 network-scripts]# vi /etc/default/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 rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0 biosdevname=0"
GRUB_DISABLE_RECOVERY="true"

[root@kvm2-250214 network-scripts]# grub2-mkconfig -o /boot/grub2/grub.cfg 
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-1160.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1160.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-71e58963cd824c6d953cbf13ef9d98f5
Found initrd image: /boot/initramfs-0-rescue-71e58963cd824c6d953cbf13ef9d98f5.img
done

 

4. 컴퓨터 끄기

[root@kvm2-250214 network-scripts]# init 0

 

5. 가상화 기술

 

➕ 자율과제 - 1

  • 언젠가는 KVM1과 KVM2에 존재하는 네트워크들도 서로 Overlay Network로 구성될 것이다. 그렇다면, VPN의 Overlay Network와의 차이점은?

 

6. Bridge 대역 구성 - KVM1

  • Bridge 구성하기 위한 패키지 설치
# 브릿지 구성을 위한 패키지
[root@kvm-250213 ~]# yum install -y bridge-utils
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
base                                                     | 3.6 kB     00:00     
extras                                                   | 2.9 kB     00:00     
updates                                                  | 2.9 kB     00:00     
Package bridge-utils-1.5-9.el7.x86_64 already installed and latest version
Nothing to do

# GUI 설치하면서 설치가 된 듯
  • Network Script 파일(ifcfg-br0) 생성 - 가상의 NIC 생성/IP 설정
# NAME, DEVICE 수정
[root@kvm2-250214 network-scripts]# vi ifcfg-br0
TYPE=Bridge
BOOTPROTO=none
DEFROUTE=yes
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=211.183.3.50
PREFIX=24
GATEWAY=211.183.3.2
DNS1=8.8.8.8
NM_CONTROLLED=no
  • Network Script 파일(ifcfg-eth0) 생성 - 가상의 NIC 생성/IP 설정
[root@kvm-250213 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0
  • 재부팅
# 재부팅
[root@kvm-250213 network-scripts]# systemctl restart network
  • KVM1 인터페이스 확인
[root@kvm-250213 network-scripts]# ifconfig

 

  • eth0 ➡️ br0 : eth0이 하던 일을 논리적으로 br0가 대신함
    • 실질적인 트래픽은 어쨌든 eth0을 타고 외부로 나감

 

7. vyos 외부통신 가능하도록 수정

 

8. IP 설정 - KVM1의 vyos

vyos@vyos#set int eth eth0 add 211.183.3.123/24
vyos@vyos#set system gateway-address 211.183.3.2
vyos@vyos#commit

 

❗Needs : KVM1의 vyos1 ↔️ KVM2의 vyos2 통신

9. KVM2의 인터페이스 설정

  • ifcfg-br0 설정
[root@kvm2-250214 network-scripts]# mv ifcfg-eth0 ifcfg-br0
[root@kvm2-250214 network-scripts]# vi ifcfg-br0
TYPE=Bridge
BOOTPROTO=none
DEFROUTE=yes
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=211.183.3.60
PREFIX=24
GATEWAY=211.183.3.2
DNS1=8.8.8.8
NM_CONTROLLED=no
  • ifcfg-eth0 설정
[root@kvm2-250214 network-scripts]# vi ifcfg-eth0

TYPE=Ethernet
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0
  • 재부팅
[root@kvm2-250214 network-scripts]# systemctl restart network
  • 인터페이스 확인

 

10. KVM2의 vyos2 네트워크 대역 변경

  • KVM1의 vyos1과 같은 대역으로 변경 - kvmnet1

 

11. KVM2의 vyos2 : IP 설정

  • KVM1의 vyos1와 같은 Bridge 대역에 있기 때문에
    ➡️같은 IP를 할당하면 충돌 나서 통신이 안됨
vyos@vyos#set int eth eth0 add 211.183.3.124/24
vyos@vyos#set system gateway-address 211.183.3.2
vyos@vyos#commit

 

  • KVM1의 vyos1 ↔️ KVM2의 vyos2 통신 확인

 

➕ KVM의 virtual Network 대역 추가 방법

  • 대역 설정 & DHCP 기능 끄기

 

❗VM(=vyos)의 디스크 파일 NFS Server에 저장 & 관리

💡Virtual Machine Manager과 VMWare Workstation 차이

  • VM(=vyos)는 .qcow2라는 파일로 vyos에 대한 정보를 저장 & 관리하고
  • VMware Workstation은 서버의 이름으로 생성된 폴더로 서버에 대한 정보를 관리

 

💡 NFS 서버 추가 후, 토폴로지

 

12. NFS 서버 생성 - Storage 저장 역할

더보기

1) 초기 설정

  • 방화벽(firewall)
[root@kvm3-nfs-250214 ~]# systemctl stop firewalld
[root@kvm3-nfs-250214 ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
  • SELINUX
[root@kvm3-nfs-250214 ~]# sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config
  • Repository(레포지토리)
[root@kvm3-nfs-250214 ~]# cat <<EOF > /etc/yum.repos.d/CentOS-Base.repo
> [base]
> name=CentOS-$releasever - Base
> #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
> baseurl=https://vault.centos.org/7.9.2009/os/x86_64/
> gpgcheck=1
> gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
> 
> #released updates
> [updates]
> name=CentOS-$releasever - Updates
> #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
> baseurl=https://vault.centos.org/7.9.2009/updates/x86_64/
> gpgcheck=1
> gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
> 
> #additional packages that may be useful
> [extras]
> name=CentOS-$releasever - Extras
> #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
> baseurl=https://vault.centos.org/7.9.2009/extras/x86_64/
> gpgcheck=1
> gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
> 
> #additional packages that extend functionality of existing packages
> [centosplus]
> name=CentOS-$releasever - Plus
> #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
> baseurl=https://vault.centos.org/7.9.2009/centosplus/x86_64/
> gpgcheck=1
> enabled=0
> gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
> 
> #contrib - packages by Centos Users
> [contrib]
> name=CentOS-$releasever - Contrib
> #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib&infra=$infra
> baseurl=https://vault.centos.org/7.9.2009/contrib/x86_64/
> gpgcheck=1
> enabled=0
> gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
> EOF

 

2) nfs-utils 패키지 설치

[root@kvm3-nfs-250214 ~]# yum install -y nfs-utils

 

3) /shared 폴더 생성

[root@kvm3-nfs-250214 ~]# mkdir /shared

 

4) 권한 수정

[root@kvm3-nfs-250214 ~]# chmod -R 777 /shared

 

5) /etc/exports 설정 & 반영

[root@kvm3-nfs-250214 ~]# vi /etc/exports

# Client에게 root와 같은 권한 부여
/shared         *(rw,no_root_squash)

[root@kvm3-nfs-250214 ~]# exportfs -r

 

6) nfs-server 재부팅

[root@kvm3-nfs-250214 ~]# systemctl restart nfs-server
[root@kvm3-nfs-250214 ~]# systemctl enable nfs-server
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.

 

7) OS 설치 파일 & VM 디스크 저장공간 분리

[root@kvm3-nfs-250214 shared]# mkdir os
[root@kvm3-nfs-250214 shared]# mkdir vm
[root@kvm3-nfs-250214 shared]# ls
os  vm

13. KVM1, KVM2에 nfs 설정

더보기

1) nfs-utils 설치

[root@kvm2-250214 network-scripts]# yum install -y nfs-utils

 

2) /remote 폴더 생성 - mount point

[root@kvm2-250214 /]# mkdir /remote

 

3) mount 설정

[root@kvm2-250214 /]# mount -t nfs 211.183.3.70:/shared /remote

 

4) 재부팅 시, mount 유지 설정

[root@kvm2-250214 /]# vi /etc/fstab 

[ 수정 내용 ]
211.183.3.70:/shared    /remote                   nfs     defaults        0 0

 

14. vyos.iso ➡️ /remote/os 이동

[root@kvm-250213 images]# cp vyos.iso /remote/os
[root@kvm-250213 images]# pwd
/var/lib/libvirt/images
[root@kvm-250213 images]# ls /remote/os
vyos.iso

 

15. /shared 폴더 권한 부여

  • 이전에 권한 부여를 했지만, 새로 추가된 vyos.iso 파일에 대한 권한은 없기 때문에 다시 부여
[root@kvm3-nfs-250214 os]# ls -al
total 239616
drwxr-xr-x 2 root root        22 Feb 14 01:35 .
drwxrwxrwx 4 root root        42 Feb 14 01:32 ..
-rw-r--r-- 1 root root 245366784 Feb 14 01:35 vyos.iso

[root@kvm3-nfs-250214 os]# chmod -R 777 /shared

[root@kvm3-nfs-250214 os]# ls
vyos.iso

[root@kvm3-nfs-250214 os]# ls -al
total 239616
drwxrwxrwx 2 root root        22 Feb 14 01:35 .
drwxrwxrwx 4 root root        42 Feb 14 01:32 ..
-rwxrwxrwx 1 root root 245366784 Feb 14 01:35 vyos.iso

 

16. KVM1 vyos 삭제 후, 재설치

더보기

1) iso 파일 선택

 

 

2) Storage Pool 설정 - /remote/os & /remote/vm

  • remote-os Storage Pool
  • iso 파일 선택
  • remote-vm Storage Pool

 

3) vm Storage Volume 선택

➕ 자율과제 

  • NFS 서버의 용량을 100GB로 설정했는데, 왜 remote-vm의 사용가능한 용량이 50GB정도인지?
    ➡️ remote-vm의 용량을 100GB로 만들어보세요.
  • 해결 방법
    • 설치 단계에서 파티션을 잘 잡기(나머지 공간을 전부 할당)
    • /dev/mapper/centos-home(/home)의 마운트를 풀고 /vremove 후 /dev/mapper/centos-root를 lvextend -l +100%FREE 후 xfs_growfs로 파일 시스템을 늘려주면 됨
      ➕ 만약 /home에 데이터가 있다면 데이터는 옮긴 후 진행

 

4) VM명 & Volume 설정

  • 확장자명이 어려워서 .img로 변경

 

 

KVM1에 존재하는 VM(vyos1)을 KVM2로 옮기기(=migration)

17. SSH 연결(KVM1 ⬅️ KVM2)

  • SSH 방식으로 원격지(KVM2)의 하이퍼바이저를 추가하려면 openssh와 openssh-askpass를 설치해야 함

  • openssh & openssh-askpass 패키지 설치
[root@kvm-250213 images]# yum install -y openssh openssh-askpass
  • ssh 접속 설정

 

  • ssh 접속

 

  • 원격지 접속 확인

 

18. Migration(이주) : KVM1 ➡️ KVM2 서버 이동

  • migration 조건 - 두 호스트의 환경이 동일한 것이 좋음💡
    • VM의 Storage Volume 위치 동일
    • VM의 네트워크(KVMnet1) 대역
  • Allow unsafe : 안전하지 않아도 허용
    • VM이 동작 중일 때, 이동하면 VM 파일이 깨지거나 손상될 수 있지만 그냥 옮기겠다.

  • migration 실패
    • 실패 이유 : KVM2의 환경이 KVM1과 동일하지 않기 때문 
      ➡️ KVM1에 있는 KVMnet1과 동일한 대역 생성

 

19. KVM2에 KVMnet1 대역 생성

  • 대역이 KVM1의 KVMnet1 대역과 동일해야 함

 

20. Migration : KVM1의 vyos1 ➡️ KVM2로 이동

  • 네트워크 대역 & vm 파일이 동일하게 존재 👉 VM의 Migration(이동성) 보장