想要VM虚拟机支持KVM需要设置

KVM虚拟化_centos

启动进入系统查看是否支持虚拟化(vmx是intel的cpu svm是AMD)

KVM虚拟化_centos_02

 查看kvm有哪些包

KVM虚拟化_centos_03

安装

yum -y install qemu-kvm qemu-kvm-tools libvirt

启动libvirtd(用来管理kvm虚拟机的)

systemctl start libvirtd

systemctl enable libvirtd

生成一个桥接网卡

KVM虚拟化_重启_04

有dns和dhcp的功能

KVM虚拟化_桥接_05

 

创建一个镜像

qemu-img create -f raw /opt/CentOS-7-x86_64.raw 10G

安装virt-install(用于虚拟机安装)

yum -y install virt-install

安装(镜像先拷贝到目录/opt下)

virt-install --virt-type kvm --name CentOS-7-x86_64 --ram 2048 --cdrom=/opt/CentOS-7.0-1406-x86_64-DVD.iso --disk path=/opt/CentOS-7-x86_64.raw network --network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

KVM虚拟化_重启_06

下载

 Tightvnc连接默认使用5900端口 需要快速连接

列出那些虚拟机

virsh list --all

启动虚拟机

virsh start 虚拟机名称

 

彻底删除虚拟机

1, 删除虚拟机   virsh destroy +域名

2,解除标记     virsh undefine +域名

3,删除虚拟机文件  

 

虚拟机信息在以下目录

/etc/libvirt/qemu

cat CentOS-7-x86_64.xml

 

virsh重要命令

导出xml

virsh dumpxml  CentOS-7-x86_64 >backup.xml

删除虚拟机

virsh undefine

从备份中恢复

virsh define backup.xml

暂停

virsh suspend

恢复

virsh resume

 

cpu内存动态扩容

编辑xml文件(不能vim直接修改)

virsh edit CentOS-7-x86_64

KVM虚拟化_centos_07

改成当前是1最大是4

KVM虚拟化_重启_08

需要重启

如果定义的是auto的可以使用以下命令生效

virsh setvcpus CentOS-7-x86_64 2 --live

 

修改内存

 virsh qemu-monitor-command CentOS-7-x86_64  --hmp --cmd balloon 512

 

存储也可以扩容,但是不建议扩展如果硬盘不够最好是直接加一块新硬盘即可。

 

kvm磁盘和网络管理

qcow2 镜像格式是 QEMU 模拟器支持的一种磁盘镜像。它也是可以用一个文件的形式来表示一块固定大小的块设备磁盘。与普通的 raw 格式的镜像相比,有以下特性:

  1. 更小的空间占用,即使文件系统不支持空洞(holes);
  2. 支持写时拷贝(COW, copy-on-write),镜像文件只反映底层磁盘的变化;
  3. 支持快照(snapshot),镜像文件能够包含多个快照的历史;
  4. 可选择基于 zlib 的压缩方式
  5. 可以选择 AES 加密

  

qcow2 镜像可以用来保存另一个镜像文件的变化,它并不去修改原始镜像文件,只记录与原始镜像文件的不同即可,这种镜像文件就叫做 copy-on-write 镜像。虽然是一个单独的文件,但它的大部分的数据都来自原始镜像,只有跟原始镜像文件相比有变化的 cluster 才会被记录下来。

 

这很容易去实现,在头部信息中记录原始文件路径即可。当需要从一个 copy-on-write 镜像文件中读取一个 cluster 的时候,首先检查这块区域是否已经在该镜像文件中被分配,如果没有就从原始文件读取

 

查看虚拟机文件大小

qemu-img info CentOS-7-x86_64.raw 

KVM虚拟化_xml_09

 

raw转换成qcow2

qemu-img convert -f raw -O qcow2 CentOS-7-x86_64.raw test.qcow2

KVM虚拟化_xml_10

qcow2用多少占用多少

KVM虚拟化_桥接_11

PS:qcow2是以cluster为单位的

 

kvm的网络

brctl show

KVM虚拟化_centos_12

KVM虚拟化_桥接_13

默认虚拟机使用nat转换

生产可以使用桥接物理网卡

创建一个桥接网卡

KVM虚拟化_桥接_14

把新建的和物理网卡桥接

brctl addif br0 eth0

PS:网卡会断,不能使用远程的主机进行这样的操作需要使用本地VM

删除物理网卡的ip

ip addr del dev eth0 172.16.30.60/24

开启

ifconfig br0 172.16.30.60/24 up

 还无法上网

添加网关

route add default gw 172.16.30.1

PS:桥接网卡有地址了,eth0物理网卡就没有地址了,生成要做成一个脚本否则容易断了网络

 

虚拟机无法上网了

编辑

virsh edit CentOS-7-x86_64

修改两个地方

KVM虚拟化_重启_15

重启虚拟机

virsh shudown  CentOS-7-x86_64

viesh start  CentOS-7-x86_64

使用vnc连接

vi /ect/sysconfig/network-scripts/ifccfg-eth0

改成静态的和物理网卡同一个网段

KVM虚拟化_centos_16

重启network虚拟机就有网络了

 

kvm优化

先找到进程号

KVM虚拟化_重启_17

KVM虚拟化_重启_18

kvm只在cpu 0上面调度 性能能提供不到10%左右

 

内存优化

需要设置内存EPT技术在BIOS里面开通 加快内存映射

 

I/O优化

virtio

I/O调度算法

KVM虚拟化_centos_19

ssd硬盘一定要设置成noop

cfq完全公平的调度(centos6默认的调度算法)

deadline防止写操作因为不能被读取而饿死,不是ssd硬盘可以不设置

修改方法

KVM虚拟化_xml_20