KVM
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。处理器要开启虚拟化功能
登录到虚拟机查看虚拟化功能是否开启
[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进行连接
然后根据步骤安装系统,和平常安装方法一样
安装好后返回宿主机
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,就会弹出以下界面
双击进入
往后和平常使用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 打开窗口,会多了一台
这里要注意:不要重新安装,需要强制关闭新创建的虚拟机
接着选择yes
关机后再次正常开机,就直接进到系统中了,因为复制的是第一台虚拟机的文件,所以需要修改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
返回后点击 Forward 下一部
关机后再次正常开机,就直接进到系统中了,因为复制的是第一台虚拟机的文件,所以需要修改IP等信息
上一篇: shell-KVM网桥自动化配置
下一篇: KVM 虚拟化学习笔记-1