KVM部署

本文介绍了KVM(Kernel-Based Virtual Machines),一种基于Linux内核的虚拟化技术。KVM允许Linux内核作为Hypervisor直接管理虚拟机。文章详细阐述了KVM的工作原理,包括虚拟CPU的实现、I/O处理方式以及KVM的主要组件如/dev/kvm和QEMU。此外,还提到了KVM的管理工具栈,如QEMU和libvirt,并给出了KVM的安装和配置步骤。
摘要由CSDN通过智能技术生成

kvm部署

简介

KVM(Kernel-Based Virtual Machines)是一个基于Linux内核的虚拟化技术,
可以直接将Linux内核转换为Hypervisor(系统管理程

序)从而使得Linux内核能够直接管理虚拟机, 直接调用Linux内核中的内存管理、进程管理子系统来管理虚拟机

KVM在2007年2月被收录进Linux 2.6.20版本的内核

虚拟化分为两种类型:

1:Hypervisor直接运行在硬件上 (例如:kvm)

2:Hypervisor运行在OS上 (例如:vmware)

kvm技术比较奇葩只要当前系统(Linux)装载了KVM模块, Linux内核就直接变成Hypervisor,
Hypervisor可以直接在系统上运行相关

的管理命令来创建、删除…KVM虚拟机,每个创建出来的虚拟机又有自己的用户空间和内核空间

注意在原有系统上执行各种命令是不受kvm模块管理的

那虚拟机上的cpu是如何虚拟出来的?

就是由原有的内核中的一个线程,通过kvm模块辅助完成,比如一个虚拟机的一颗cpu运行就是通过原有内核中的一个线程通过kvm模

块辅助在内核中完成,两颗cpu就是用两个线程,从原有内核的角度来看虚拟cpu就是一个线程

如果kvm虚拟机的用户空间进行了i/o调用,是怎么个过程?(我们知道i/o调用一般都是特权指令)

首先用户空间,会发起系统调用,将请求转交给自己的内核空间,内核空间再转交给原有的用户空间的qemu应用程序所模拟出来的各

种硬件设备,再由qemu转交给原有内核空间完成真正的i/o系统调用,如果非i/o类的特权指令则直接交给硬件cpu处理,这一特性使得

kvm技术性能的损失和真正的物理机相比小于10%

kvm的两类组件:

/dev/kvm:工作于hypervisor,在用户空间可通过ioctl(),系统调用来完成VM创建、启动等管理功能;它是一个字符设备

功能:创建VM、为VM分配内存、读写VCPU的寄存器、向VCPU注入中断、运行VCPU等等

qemu进程:工作于用户空间,主要用于实现模拟PC机的IO设备

KVM的管理工具栈:qemu:qemu-kvm,qemu-img 和libvirt:CLI: virt-install,
virsh  (根据自己的喜好选择一个就行,我喜

欢qemu)

QEMU主要提供了以下几个部分:
      处理器模拟器
      仿真IO设备
      关联模拟的设备至真实设备;
      调试器
      与模拟器交互的用户接口

打开虚拟化引擎,在bios里开启cpu虚拟化
在这里插入图片描述
安装kvm

[root@kvm ~]# cd /etc/sysconfig/network-scripts/
[root@kvm network-scripts]# cp ifcfg-ens33 ifcfg-br0
[root@kvm network-scripts]# vim ifcfg-br0
[root@kvm ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0 
TYPE=Bridge
BOOTPROTO=static
NM_CONTROLLED=no
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.10.32
NETMASK=255.255.255.0
GATEWAY=192.168.10.2
DNS1=114.114.114.114
[root@kvm ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
BRIDGE=br0
NM_CONTROLLED=no
[root@kvm network-scripts]# systemctl restart network

关闭防火墙

[root@kvm ~]# systemctl disable --now firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@kvm ~]# setenforce 0
[root@kvm ~]# vim /etc/selinux/config
SELINUX=disabled
[root@kvm ~]# reboot

安装工具

[root@kvm ~]# yum -y install epel-release vim wget net-tools unzip zip gcc gcc-c++

验证CPU是否支持KVM

[root@kvm ~]# egrep -o 'vmx|svm' /proc/cpuinfo
vmx
vmx
vmx
vmx

安装kvm

yum -y install qemu-kvm qemu-kvm-tools qemu-img virt-manager libvirt libvirt-python libvirt-client virt-install virt-viewer bridge-utils libguestfs-tools

启动服务

[root@kvm ~]# systemctl enable --now libvirtd
[root@kvm ~]# systemctl status libvirtd
● libvirtd.service - Virtualization daemon
   Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2021-06-21 03:53:13 EDT; 5s ago
     Docs: man:libvirtd(8)
           https://libvirt.org
 Main PID: 2760 (libvirtd)
    Tasks: 19 (limit: 32768)
   CGroup: /system.slice/libvirtd.service
           ├─2660 /usr/sb
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值