c4rt1y

kvm安装、使用和优化

0x00.介绍

centos7搭建kvm虚拟环境,IP是10.10.10.10

#关闭firewalld
systemctl stop firewalld.service
systemctl disable firewalld.service

#关闭selinux
sed -i 's:SELINUX=enforcing:SELINUX=disabled:g' /etc/selinux/config

#重新启动电脑,使用setenforce 0无效
reboot

0x01 kvm和虚拟机安装

#安装依赖软件
yum install qemu-kvm qemu-kvm-tools virt-manager libvirt virt-install bridge-utils -y

#判断是否支持虚拟化(需要开启VT)
grep -E '(vmx|svm)' /proc/cpuinfo

#挂在然后使用dd命令合成。或者你也可以上传一个centos7.iso文件
dd if=/dev/cdrom of=/opt/CentOS-7-x86_64.iso

#创建硬盘
qemu-img create -f raw /opt/CentOS-7-x86_64.raw 10G

#创建虚拟机
virt-install --name vm01 --virt-type kvm --ram 1024 --cdrom=/opt/CentOS-7-x86_64.iso --disk path=/opt/CentOS-7-x86_64.raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

#使用vnc进行连接  10.10.10.10:5900
#输入tab键,然后输入 net.ifnames=0 biosdevname=0,可以使用eth0,默认centos的网卡是随机命名

install_kvm_centos_with_eth0

#设置libvirtd启动和自启
systemctl enable libvirtd.service
systemctl start libvirtd.service

0x02 kvm管理

#查看全部虚拟机
virsh list --all
#启动虚拟机
virsh start vm01
#关机
virsh shudown vm01
virsh destroy vm01
#编辑虚拟机
virsh edit vm01
#挂起
virsh suspended vm01
#恢复
virsh resume vm01
#删除虚拟机
virsh undefine vm01
#克隆虚拟机
virt-clone -o vm01  -n  vm02 -f /data/vm02.img
#备份xml(如果删除虚拟机,则用就找不回来,我们可以提前备份xml,这样就可以保证找得回来)
virtsh dumpxml vm01
#路径
/etc/libvirt/qemu/vm01.xml

#kvm虚拟机的网段分配
cat /var/lib/libvirt/dnsmasq/default.conf
dhcp-range=192.168.122.2,192.168.122.254



#cup编辑(只允许增加,不允许减少)
#cup热添加
virsh shutdown vm01
virsh edit vm01
<vcpu palcement='auto' current="1">4</vcpu>
virsh satrt vm01

#命令行添加cup
virsh setvcpus vm01 1 --live
#进入虚拟机查看
ls /sys/devices/system/cpu/cpuX
cat /proc/interrupts
free -m

#内存(可增可减)
#内存热添加
virsh shutdown vm01
virsh edit vm01
<memory unit='KiB'>4048576</memory>
<currentMemory unit='KiB'>1048576</currentMemory>
virsh satrt vm01

#命令行修改内存
virsh qemu-monitor-command  vm01 --hmp --cmd info balloon
virsh qemu-monitor-command  vm01 --hmp --cmd balloon 600

0x03 kvm优化

#硬盘:
#全镜像模式  稀疏模式
raw         qcow2
qemu-img


#KVM优化
#虚拟化分为两种全虚拟化和半虚拟机
#以前虚拟化的实现方式
	虚拟机的虚拟内存===>虚拟机的物理内存
    宿主机的虚拟内存===>宿主机的物理内存
#现在虚拟机的实现方式:EPT(inter)
    虚拟机的虚拟内存=====EPT=====宿主机的物理内存

#内存的优化
	内存寻址:EPT
	内存合并:KSM
	大页内存: khugepaged  把连续的4K内存合并成为2M      ps aux |grep ksmd
	内存的合并			
		cat /sys/kernel/mm/transparent_hugepage/enabled
		ps aux |grep khugepaged

#I/O优化:
	#Virtio 半虚拟化
	#I/O调度算法:
	#CentOS7上默认有三种:noop deadline cfq
		dmesg |grep scheduler
		cat /sys/block/sda/queue/scheduler	默认为deadline
		echo noop > /sys/block/sda/queue/scheduler    noop的性能是最好的
		#永久优化
		echo "elevator=noop" >> /etc/sysctl.conf
GoTop