一,KVM内核级虚拟化
Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界的主流VMM之一。
KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。而Xen早期则是基于软件模拟的Para-Virtualization,新版本则是基于硬件支持的完全虚拟化。但Xen本身有自己的进程调度器,存储管理模块等,所以代码较为庞大。广为流传的商业系统虚拟化软件VMware ESX系列是基于软件模拟的Full-Virtualization。
PS:1,云计算不等于虚拟化
2,云计算需要使用虚拟化计算
二,使用VM虚拟机开启虚拟化支持

三,查看虚拟机是否支持KVM
grep -E '(vmx|svm)' /proc/cpuinfo
三,安装管理KVM管理软件包
kvm内置在内核当中,不需要安装但是需要安装管理工具软件包
yum -y install qemu-kvm libvirt
安装安装虚拟机用工具virt-install
yum -y install virt-install
设置libvirtd开启启动,并且启动libvirt
systemctl enable libvirtd
systemctl start libvirtd
使用ifconfig查看网卡(CentOS7没有这个命令,使用yum -y install net-tools)
四,使用kvm安装虚拟机
1,创建硬盘
qemu-img create -f raw /opt/CentOS-7-x86_64.raw 10G
创建了一个格式为raw大小为10G的磁盘
2,使用命令安装
假如硬盘格式是qcow2安装命令为
假如网络也使用桥接那么完整的安装命令是
--name虚拟机名字
--ram 分配的内存大小(CentOS内存分配如果是1024可能无法启动图形化界面所以这里分配大一点)
--cdrom 指定安装系统的镜像
--disk path 安装的硬盘及第1步创建的硬盘
--network 使用默认网络
--graphics 默认图形化界面为vnc
使用了br0网卡桥接以后安装网络的参数为 --network bridge=br0
3,使用Tighrvnc快速连接(默认开始端口是5900如果如新建端口5901以此类推)
使用vnc连接之前需要关闭防火墙及selinux
在界面按tab输入一下命令可以让CentOS7的网卡命名和6一样
4,虚拟机的管理命令
虚拟机的配置文件在/etc/libvirt/qemu文件夹下面,无法直接使用vim编辑需要使用以下命令编辑
virsh edit CentOS-7-x86_64
CentOS7支持cpu热添加需要
修改以下行(代表cpu是自动的最大为4个目前是一个)
然后在命令行输入以下命令热添加cpu(单独使用kvm有点用,使用openstack不支持热添加删除,最后还是不要使用这种功能)
查看当前虚拟机的内存大小
热修改内存大小
内存的最大大小在配置文件里面配置(编辑xml文件需要生效的话需要重启虚拟机)
设置虚拟机桥接
默认的虚拟机是使用nat连接的只能使用vnc连接宿主机的5900及往后推的端口
宿主机用于桥接的网卡
查看桥接模式
增加一块桥接的网卡
PS:这个时候网络就会断了,生产不能这样玩,可以写一个脚本
脚本第一步添加桥接网卡,第二步桥接网卡与物理网卡绑定,第三步删除原物理网卡IP,第四步启动桥接网卡
使用虚拟机终端连接查看br0桥接到物理网卡eth0上面
把eth0的地址删掉设置在br0上面
这个时候ip地址已经配置到br0上面了但是还是无法连接公网设置以下网关
修改xml配置文件修改以下两个地方
重启虚拟机
在vnc设置静态ip地址
重启网卡
这个时候就可以在本机使用xshell直接连接虚拟机里面的虚拟机了
五,kvm性能优化
1,cpu优化
CPU Ring 0 内核空间 Ring用户空间
为了减少cpu 的cache miss可以使用taskset把cpu绑定到对应的进程(可提高性能10%只有)
taskset -cp 1 进程id
2,内存优化
虚拟机的物理内存其实是宿主机的虚拟内存
影子页表技术
Intel 使用EPT 技术 AMD使用RVI技术
大页内存 默认宿主机是开启的
配置文件 /sys/kernel/mm/transparent_hugepage/enabled
内存重复合并ksm(默认开启)
3,I/O优化
virto半虚拟化技术优化I/O
I/O调度算法(2.6内核又四种调度算法3.10为三种)
查看当前的I/O调度算法
几种IO调度算法比较
作业
1,下载一个IOS
2,创建虚拟机磁盘
3,virt-install安装虚拟机
1,不适应swap分区
2,只分一个/
3,不使用LVM等
4,安装完毕后
1,关闭Selinux,iptables
2,修改网卡配置取得UUID,MAC等
3,安装必备软件zabbix-agent等