KVM虚拟化
想要VM虚拟机支持KVM需要设置
启动进入系统查看是否支持虚拟化(vmx是intel的cpu svm是AMD)
查看kvm有哪些包
安装
yum -y install qemu-kvm qemu-kvm-tools libvirt
如果是Ubuntu系统则安装命令如下
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager
启动libvirtd(用来管理kvm虚拟机的)
systemctl start libvirtd
systemctl enable libvirtd
生成一个桥接网卡
有dns和dhcp的功能
创建一个镜像
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
下载
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
改成当前是1最大是4
需要重启
如果定义的是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 格式的镜像相比,有以下特性:
- 更小的空间占用,即使文件系统不支持空洞(holes);
- 支持写时拷贝(COW, copy-on-write),镜像文件只反映底层磁盘的变化;
- 支持快照(snapshot),镜像文件能够包含多个快照的历史;
- 可选择基于 zlib 的压缩方式
- 可以选择 AES 加密
qcow2 镜像可以用来保存另一个镜像文件的变化,它并不去修改原始镜像文件,只记录与原始镜像文件的不同即可,这种镜像文件就叫做 copy-on-write 镜像。虽然是一个单独的文件,但它的大部分的数据都来自原始镜像,只有跟原始镜像文件相比有变化的 cluster 才会被记录下来。
这很容易去实现,在头部信息中记录原始文件路径即可。当需要从一个 copy-on-write 镜像文件中读取一个 cluster 的时候,首先检查这块区域是否已经在该镜像文件中被分配,如果没有就从原始文件读取
查看虚拟机文件大小
qemu-img info CentOS-7-x86_64.raw
raw转换成qcow2
qemu-img convert -f raw -O qcow2 CentOS-7-x86_64.raw test.qcow2
qcow2用多少占用多少
PS:qcow2是以cluster为单位的
kvm的网络
brctl show
默认虚拟机使用nat转换
生产可以使用桥接物理网卡
创建一个桥接网卡
把新建的和物理网卡桥接
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
修改两个地方
重启虚拟机
virsh shudown CentOS-7-x86_64
viesh start CentOS-7-x86_64
使用vnc连接
vi /ect/sysconfig/network-scripts/ifccfg-eth0
改成静态的和物理网卡同一个网段
重启network虚拟机就有网络了
kvm优化
先找到进程号
kvm只在cpu 0上面调度 性能能提供不到10%左右
内存优化
需要设置内存EPT技术在BIOS里面开通 加快内存映射
I/O优化
virtio
I/O调度算法
ssd硬盘一定要设置成noop
cfq完全公平的调度(centos6默认的调度算法)
deadline防止写操作因为不能被读取而饿死,不是ssd硬盘可以不设置
修改方法