欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

KVM

程序员文章站 2022-05-10 16:20:42
...

KVM介绍

KVM 是Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的 各个主要发行版本中。

它使用Linux自身的调度器进行管理,所以相对于Xen(https://zhuanlan.zhihu.com/p/333 24585),其核心源码很少。

KVM目前已成为学术界的主流VMM之一。

KVM的虚拟化需要硬件支持(如Intel VT技 术或者AMD V技术)。是基于硬件的完全虚拟化。而Xen早期则是基于软件模拟的Para-Virtualization,新版本则是基于硬件支持的完全虚拟化。但Xen本身有自己的进程调度器,存储管理模块等,所以代码较为庞大。

广为流传的商业系统虚拟化软件VMware ESXI系列是Full-Virtualization,IBM文档:http://www.ibm.com/developerworks/c n/linux/l-using-kvm/

Guest:客户机系统,包括CPU(vCPU)、内存、驱动(Console、网卡、I/O 设备驱动等),被KVM置于一种受 限制的CPU模式下运行。

KVM:运行在内核空间,提供 CPU 和内存的虚级化,以及客户机的 I/O拦截,Guest的部分I/O被KVM拦截后,交给QEMU处理。

QEMU:修改过的被KVM虚机使用的QEMU代码,运行在用户空间,提供硬件I/O虚拟化,通过IOCTL/dev/kvm设备 和KVM交互,但是,KVM本身不执行任何硬件模拟,需要用户空间程序通过 /dev/kvm 接口设置一个客户机虚拟服务器的地址空间,向它提供模拟I/O,并将它的视频显示映射回宿主的显示屏。目前这个应用程序是QEMU

KVM需要宿主机CPU必须支持虚拟化功能,因此如果是在vmware workstation上使用虚拟机做宿主机,那么必须要在虚拟机配置界面的处理器选项中开启虚拟机化功能。

KVM虚拟机由端口区分,默认从5900开始,随后递增


KVM安装

使用虚拟机搭建KVM条件
1。内存不能太小,建议4G往上
2。处理器要开启虚拟化功能
KVM


登录到虚拟机查看虚拟化功能是否开启

[aaa@qq.com_13 ~]# grep -E "vmx|svm" /proc/cpuinfo | wc -l
2

vmx:Intel公司的
svm:AMD公司的

有几个CPU核数就可以过滤出几个


查看KVM模块,通常安装系统后就内置了KVM模块

[aaa@qq.com_13 ~]# lsmod |grep kvm
kvm_intel             188644  0 
kvm                   621480  1 kvm_intel
irqbypass              13503  1 kvm

安装KVM工具包

[aaa@qq.com_13 ~]#  yum install qemu-kvm qemu-kvm-tools libvirt virt-manager virt-install

qemu-kvm:模拟器,模拟鼠标键盘等轻量级设备的
qemu-kvm-tools:同上
libvirt:启动虚拟机时的主程序
virt-manager:一个web界面的管理程序,通过此命令弹出一个窗口,然后对虚拟机进行管理
virt-install:安装虚拟机时用到的命令

启动程序

[aaa@qq.com_13 ~]# systemctl start libvirtd
[aaa@qq.com_13 ~]# systemctl enable libvirtd

创建虚拟机前需要创建一个磁盘文件
磁盘格式文件介绍
简单的说:
 qcow2格式的刚创建好后不会立即占用分配的磁盘空间大小,而是根据你的操作,硬盘会动态变化,增大或缩小
 raw格式的创建好后,创建时指定多大会立马分配,是固定的

例如:

[aaa@qq.com_13 ~]# !ll
ll /var/lib/libvirt/images/ -h
total 196K
# qcow2格式的,才193K
-rw-r--r-- 1 root root 193K Mar 17 14:44 Centos-7-x86_64.qcow2
# raw格式的,分配了10G就是10G
-rw-r--r-- 1 root root  10G Mar 17 14:41 Centos-7-x86_64.raw

创建磁盘文件

#创建raw格式的
[aaa@qq.com_13 ~]# qemu-img create -f raw /var/lib/libvirt/images/Centos-7-x86_64.raw 10G
Formatting '/var/lib/libvirt/images/Centos-7-x86_64.raw', fmt=raw size=10737418240 

[aaa@qq.com_13 ~]# ll -h /var/lib/libvirt/images/Centos-7-x86_64.raw
-rw-r--r-- 1 root root 10G Mar 17 14:41 /var/lib/libvirt/images/Centos-7-x86_64.raw


#创建qcow2格式的
[aaa@qq.com_13 ~]# qemu-img create -f qcow2 /var/lib/libvirt/images/Centos-7-x86_64.qcow2 10G
Formatting '/var/lib/libvirt/images/Centos-7-x86_64.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off 

[aaa@qq.com_13 ~]# ll /var/lib/libvirt/images/
total 196
-rw-r--r-- 1 root root      197120 Mar 17 14:44 Centos-7-x86_64.qcow2
-rw-r--r-- 1 root root 10737418240 Mar 17 14:41 Centos-7-x86_64.raw

上传镜像

[aaa@qq.com_13 ~]# cd /usr/local/src/
[aaa@qq.com_13 src]# ls
[aaa@qq.com_13 src]# rz

[aaa@qq.com_13 src]# ll
total 940032
-rw-r--r-- 1 root root 962592768 Mar 17 16:33 CentOS-7-x86_64-Minimal-1810.iso

创建虚拟机:virt-install
-h:查看选项帮助,选项查看

1.创建命令

[aaa@qq.com_13 ~]#virt-install --virt-type kvm \ 
--name centos7 \
--memory 1024 \
--vcpus 2 \
--cdrom=/usr/local/src/CentOS-7-x86_64-Minimal-1810.iso \
--disk path=/var/lib/libvirt/images/centos1.qcow2 \
--network bridge=br0 \
--graphics vnc,listen=0.0.0.0 --noautoconsole --autostart

# 出现以下提示就是成功了! 
Starting install...
Domain installation still in progress. You can reconnect to 
the console to complete the installation process.

br0创建方法https://blog.csdn.net/qq_43058911/article/details/104944419

选项:  
    -w NETWORK, --network NETWORK
          --network network=default     默认为NAT模式
          --network bridge=mybr0      这个为桥接模式,指向自己的br0网卡
          --network help

2.成功后使用VNC进行连接
KVMKVM
然后根据步骤安装系统,和平常安装方法一样

安装好后返回宿主机
3.安装电源管理器acpid工具

[aaa@qq.com_13 ~]# yum install acpid

4.安装好后点击重启并不会启动,使用virsh命令管理
1)查看创建创建好现有的虚拟机

[aaa@qq.com_13 ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     centos7                        shut off

2)虚拟机启动

[aaa@qq.com_13 ~]# virsh start centos7
Domain centos7 started

5.装好后窗口退出重进以下,让shell环境重置一下,然后使用virt-manager命令调出图形界面管理器
执行:

[aaa@qq.com_13 ~]# virt-manager 

注意:如果报错,那么就exit退出一下,再登录进来!再次执行 virt-manager,就会弹出以下界面

KVM双击进入
KVM
往后和平常使用VMware创建的虚拟机使用方法相同


创建多台虚拟机方法

 方法一:

  如果要创建多台虚拟机,可以将第一台创建好的磁盘文件做备份,以后的虚拟机直接使用此备份文件,记住要改名,一个物理机中虚拟主机名称不能相同

注意:备份文件时,最好将主机关机后再备份!

步骤

备份文件

[aaa@qq.com_13 ~]# cd /var/lib/libvirt/images/
[aaa@qq.com_13 images]# ls
centos1.qcow2
[aaa@qq.com_13 images]# cp centos1.qcow2 centos1-bak.qcow2 
[aaa@qq.com_13 images]# cp centos1-bak.qcow2 centos2.qcow2

创建第二台虚拟机

[aaa@qq.com_13 ~]#virt-install --virt-type kvm \
--name centos7.1 \
--memory 1024 \
--vcpus 2 \
--cdrom=/usr/local/src/CentOS-7-x86_64-Minimal-1810.iso \
--disk path=/var/lib/libvirt/images/centos2.qcow2 \
--network bridge=br0 \
--graphics vnc,listen=0.0.0.0 --noautoconsole --autostart

Starting install...
Domain installation still in progress. You can reconnect to 
the console to complete the installation process.

注意:
1. --disk path=/var/lib/libvirt/images/centos2.qcow2 此处指向的文件为刚复制好的文件
2. 虚拟机名称也需要修改。否则创建不成功

再次使用 virt-manager 打开窗口,会多了一台
KVM

这里要注意:不要重新安装,需要强制关闭新创建的虚拟机

KVM
接着选择yes
KVM

关机后再次正常开机,就直接进到系统中了,因为复制的是第一台虚拟机的文件,所以需要修改IP等信息


 方法二:

  直接使用 virt-manager 管理界面进行创建

步骤:
1.首先再copy出一份文件

[aaa@qq.com_13 images]# ll
total 7205640
-rw-r--r-- 1 root root 1475674112 Mar 18 16:08 centos1-bak.qcow2
-rw-r--r-- 1 qemu qemu 1475739648 Mar 18 18:07 centos1.qcow2
-rw-r--r-- 1 qemu qemu 1475739648 Mar 18 18:03 centos2.qcow2
-rw-r--r-- 1 qemu qemu 1475739648 Mar 18 18:03 centos3.qcow2

2.然后执行 virt-manager
KVMKVMKVM
KVM返回后点击 Forward 下一部

KVM
KVMKVMKVMKVMKVMKVMKVM
关机后再次正常开机,就直接进到系统中了,因为复制的是第一台虚拟机的文件,所以需要修改IP等信息

相关标签: KVM