天天看点

KVM虚拟化

一,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虚拟化

 三,查看虚拟机是否支持KVM

  grep -E '(vmx|svm)' /proc/cpuinfo 

KVM虚拟化

 三,安装管理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虚拟化

  

四,使用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

KVM虚拟化

  在界面按tab输入一下命令可以让CentOS7的网卡命名和6一样

KVM虚拟化

   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等

继续阅读