KVM
KVM
-
KVM(Kernel-based Virtual Machine: 커널 기반 가상 머신)은 Linux®에 구축되는 오픈소스 가상화 기술이다.
-
구체적으로, KVM을 사용하면 Linux를 하이퍼바이저로 전환하여 호스트 머신에서 게스트 또는 VM(가상 머신) 등 격리된 가상 환경 여러 개가 실행되도록 할 수 있다.
-
KVM은 Linux의 일부이며, Linux 2.6.20 이상 버전에는 KVM이 있습니다. KVM은 2006년에 처음 발표되었고 1년 후 메인라인 Linux 커널 버전으로 병합되었다.
-
KVM은 기존 Linux 코드의 일부이므로 추가 엔지니어링 없이도 새로운 Linux 기능, 수정 및 확장된 기능을 바로 사용할 수 있다.
KVM 작동 원리
-
KVM은 Linux를 1유형(베어메탈) 하이퍼바이저로 변환한다.
-
모든 하이퍼바이저에서 VM을 실행하려면 메모리 관리 프로그램, 프로세스 스케줄러, I/O(입력/출력) 스택, 기기 드라이버, 보안 관리 프로그램, 네트워크 스택과 같은 운영 체제 수준의 구성 요소가 필요하다.
-
KVM은 Linux 커널의 일부이기 때문에 이러한 구성 요소를 모두 가지고 있다.
-
모든 VM은 표준 Linux 스케줄러를 통해 일정이 예약되며 네트워크 카드, 그래픽 어댑터, 프로세서, 메모리, 디스크와 같은 전용 가상 하드웨어를 사용해 일반적인 Linux 프로세스로 구현된다.
# KVM 실습 (centos7으로 하는것을 추천, 9은 brctl을 인스톨하려면 레지스트리 등록을 해야하는데 레드햇 계정이 따로 필요함)
lsmod | grep kvm
modprobe kvm kvm_intel or modprobe kvm kvm_amd // 자동으로 로딩되지 않을때 수동으로 모듈을 로딩한다
dnf repolist // 리포리스트 확인
dnf -y install qemu-kvm livirt virt-install virt-manager // 가상화 패키지 설치
systemctl enable --now libvirtd
virsh nodeinfo // 시스템 하드웨어 아키텍처, CPU 토폴로지, 메모리크기 등
virsh domcapabilities | -i max // KVM이 제공할 수 있는 최대 VCPU 정보, 240 확인
virt manager
cd etc/libvirt/storage
ls // default.xml 기본 저장소의 환경설정 파일이다.
vim default.xml
!
path의 경로를 /iso로 수정
!
systemctl restart libvirtd
virt-manager
mkdir /iso
chmod 777 /iso
virt-manager // storage 에서 new storage pool을 생성하여 path를 /iso로 잡아줬다. 잠깐 테스트로 만든거라 삭제
test용 centos7 minimal을 ftp로 받아온 후 storage의 default 경로로 가져왔다. /var/lib/libvirt/images
virsh net-info default // default network 확인
vim /etc/libvirt/qemu.networks/default.xml // 으로도 확인할 수 있다.
virt-manager ->file-> new virture machine // 아래 그림처럼 설정 후 설치 centos안에 kvm을 활용하여 centos minimal을 설치
cent1, cent2 설치 후
yum -y install net-tools
lsmod | grep bridge
brctl addbr tester // 가상 브릿지 생성
ip link show tester
ip tuntap add dev vm-vnic mode tap //vm-vnic 이라는 ip가 들어가는 랜카드를 생성하겠다
TUN 네트워크 계층 장비를 시뮬레이트
TAP 링크 계층 장치를 시뮬레이트
brctl addif tester vm-vnic
brctl show bridge // 브릿지 확인 명령어
virt-manager
isolated mode의 host-only 가상 네트워크 생성 (ipv4 대역을 192.168.100.0/24로 설정)2
/etc/libvirt/qemu/networks 에 isolated.xml 파일이 생성됨
virsh net-define /etc/libvirt/qemu/networks/isolated.xml // 정의를 하지않으면 사용할 수 없음
virsh net-list --all // isolated를 확인
virsh net-dumpxml isolated // 편집기를 열지않고 확인
virsh net-autostart isolated // 해당 네트워크가 자동으로 실행
virsh net-destroy isolated // 해당 네트워크를 강제종료
centos1, 2의 view->NIC // network source를 isolated로 선택, 독립된 네트워크, 내부 및 호스트 라우팅만 해당
virtsh net-list --all
brctl show
centos1, 2에서 할당받은 ip로 ping test
댓글남기기