一、KVM 简介
KVM全称是Kernel-based Virtual Machine,即基于内核的虚拟机,是采用硬件辅助虚拟化技术的全虚拟化解决方案。对于I/O设备(如硬盘、网卡等),KVM即支持QEMU仿真的全虚,也支持virtio方式的半虚。KVM从诞生开始就定位于基于硬件虚拟化支持的全虚实现,由于其在Linux内核2.6版本后被集成,通过内核加载模式使得Linux内核变成一个事实上的Hypervisor(虚拟机管理器,也叫VMM(Virtual Machine Monitor)),但是硬件管理还是由Linux Kernel来完成。
二、虚拟化技术的分类
-
全虚拟化:运行在虚拟机上的操作系统通过 Hypervisor 来最终分享硬件,所以虚拟机发出的指令需经过Hypervisor捕获并处理。
-
半虚拟化:在全虚拟化的基础上,通过在 GuestOS 修改,增加了一个专门 API 用于发送指令,这个 API 可以将客户操作系统发出的指令进行最优化,即不需要Hypervisor 的翻译行为,从而整体性能提升。
-
硬件辅助虚拟化:基于 CPU 厂商的辅助虚拟化技术如 Intel VT-x 实现Hypervisor可以在部分功能上与硬件直接交互,提升性能。比如在CPU性能较差的网络IO方面与硬件直接交互。
三、KVM安装
然后打开虚拟机,安装kvm即可
查看cpu是否支持虚拟化
# cat /proc/cpuinfo | grep -E 'vmx|svm'
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 arat pku ospke md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities
1.需求内核(rhel6以上):
[root@kvm-server ~]# uname -r
3.10.0-1062.el7.x86_64
2.如果之前安装kvm了清理环境:卸载kvm
[root@kvm-server ~]# yum remove `rpm -qa | egrep 'qemu|virt|kvm'` -y
[root@kvm-server ~]# rm -rf /var/lib/libvirt /etc/libvirt/
3.升级系统:(在安装虚拟机出错的情况下,一般是操作系统的版本问题)
[root@kvm-server ~]# yum upgrade
4.安装软件:
[root@kvm-server ~]# yum install -y librbd1-devel qemu-kvm libvirt virt-manager virt-install
qemu-kvm : 主包
libvirt:api接口
virt-manager:图形化界面
在所谓的kvm技术中,应用到的其实有2个东西:qemu+kvm kvm
负责cpu虚拟化+内存虚拟化,实现了cpu和内存的虚拟化,但kvm不能模拟其他设备;
qemu是模拟IO设备(网卡,磁盘),kvm加上qemu之后就能实现真正意义上服务器虚拟化。
因为用到了上面两个东西,所以一般都称之为qemu-kvm。
libvirt则是调用kvm虚拟化技术的接口用于管理的,用libvirt管理方便,直接用qemu-kvm的接口太繁琐。
5.启动服务: centos7:
[root@kvm-server ~]# systemctl start libvirtd
6.查看kvm模块加载:
[root@kvm-server ~]# lsmod | grep kvm
kvm_intel 188740 0
kvm 637515 1 kvm_intel
irqbypass 13503 1 kvm
如果看到有这两行,说明支持kvm模块
四、完全文本方式安装虚拟机
[root@kvm-server ~]# yum install -y vsftpd #安装ftp,并配置最后将镜像上传到ftp中 [root@kvm-server ~]# systemctl start vsftpd [root@kvm-server ~]# mkdir /var/ftp/centos7u4 [root@kvm-server IOS]# mount CentOS-7-x86_64-DVD-1708.iso /var/ftp/centos7u4/ [root@kvm-server ~]# virt-install --connect qemu:///system -n vm10 -r 2050 --disk path=/var/lib/libvirt/images/vm10.img,size=5 --os-type=linux --os-variant=centos7.0 --vcpus=1 --location=ftp://10.0.111.182/centos7u4 -x console=ttyS0 --nographics 用这种方式安装的操作系统有一个毛病:纯文本安装的输入时大小写莫名的变换,远程ssh没问题。kvm 限制:内存不低于2G 注意: virt-install bash: virt-install: 未找到命令... # yum install libguestfs-tools -y # yum install virt-install.noarch -y 参数解释: -n name -r 以M为单位指定分配给虚拟机的内存大小 --disk 指定作为客户机存储的媒介 size以G为单位的存储 --os-type 系统类型 --os-variant 系统类型版本 --vcpus 指定核数,不能超过物理cpu --location 客户虚拟机安装源下载,必须为镜像挂载在ftp目录下 -x console=ttyS0 执行终端0 --nographics 无图形,文本模式