标签:
libvirt(virt-install,API,服务,virsh)-》qemu(qemu-kvm进程,qemu-img)-》KVM虚拟机-》kvm.ko 内核模块 P7
/etc/init.d/libvirtd
virsh
第3章 CPU,内存虚拟化技术
CPU 的嵌套技术nested特性,使用kvm虚拟机在理论上可以无限嵌套下去,只要物理机性能足够 P23
numastat P25
node0
numa_hit 4309388
numa_miss 0
numa_foreign 0
interleave_hit 18480
local_node 4309388
other_node 0
numactl --hardware
available: 1 nodes (0)
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
node 0 size: 4095 MB
node 0 free: 3034 MB
node distances:
node 0
0: 10
Linux系统默认是打开自动numa平衡策略,关闭Linux系统的自动numa平衡 P25
echo 0 >/proc/sys/kernel/numa_balancing #关闭
echo 1 >/proc/sys/kernel/numa_balancing #开启
virsh numatune设置虚拟机的numa配置
CPU热添加是centos7的一个新特性,物理机和虚拟机都必须是centos7,windows虚拟机必须是windows2012标准版或数据中心版 P32
cat /proc/interrupts 在虚拟机里面查看当前系统有多少个cpu P33
cat /proc/cpuinfo
echo 1 > /sys/devices/system/cpu/cpu3/online 在虚拟机里面激活第4个cpu
echo 0 > /sys/devices/system/cpu/cpu3/online 在虚拟机里面关闭第4个cpu
KSM技术 P39
KSM:kernel samepage merging,将相同内存页进行合并
KSM服务
ksmtuned服务
service ksm start
service ksmtuned start
chkconfig ksm on
chkconfig ksmtuned on
cat /sys/kernel/mm/ksm/* 查看ksm的运行情况
巨型页large page技术 P44
X86默认的内存页是4KB,但也可以使用2MB或1GB的巨型页
kvm虚拟机可以通过分配巨型页提升性能,centos5需要手动开启巨型页,centos6有一种透明巨型页面的技术,默认开启巨型页,并可以自动调整
cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
三个选项
always 总是使用巨型页
madvise 避免改变内存占用
never 不使用巨型页
cat /proc/meminfo|grep -i huge
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
cat /proc/sys/vm/nr_hugepages
0
修改巨型页的pagesize,N是巨型页的pagesize
sysctl vm.nr_hugepages=N
挂载巨型页
mount -t hugetlbfs hugetlbfs /dev/hugepages
第4章 网络虚拟化技术
半虚拟化网卡
解决全虚拟化网卡效率低下的一个办法就是使用半虚拟化驱动程序Virtio。
要使用Virtio需要在宿主机和客户机分别安装Virtio驱动。
Linux内核从2.6.24开始支持Virtio,现在的内核版本一般是2.6.32,只需要较新的Linux内核即可,不需要安装
在宿主机和客户机执行下面命令,如果有Virtio字样输出证明支持Virtio,如果是windows,需要安装Virtio驱动
grep -i Virtio /boot/config-2.6.32-504.el6.x86_64
CONFIG_NET_9P_VIRTIO=m
CONFIG_VIRTIO_BLK=m
CONFIG_SCSI_VIRTIO=m
CONFIG_VIRTIO_NET=m
CONFIG_VIRTIO_CONSOLE=m
CONFIG_HW_RANDOM_VIRTIO=m
CONFIG_VIRTIO=m
CONFIG_VIRTIO_RING=m
CONFIG_VIRTIO_PCI=m
CONFIG_VIRTIO_BALLOON=m
配置半虚拟化网卡的方法
在虚拟机的xml配置文件里找到interface节,修改model type为Virtio
<interface type=‘bridge‘>
<mac address=‘52:54:00:28:a9:12‘/>
<source bridge=‘br0‘/>
<model type=‘e1000‘/> 全虚拟化网卡 <model type=‘Virtio‘/>
半虚拟化网卡 没有指定网卡的model默认是8139全虚拟化网卡,e1000是intel公司的千兆网卡,8139是百兆网卡
<address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x03‘ function=‘0x0‘/>
</interface>
在virt-install 安装的时候,不能指定model=Virtio网卡
Starting install...
ERROR internal error process exited while connecting to monitor: char device redirected to /dev/pts/4
2016-08-11T02:42:41.500805Z
qemu-kvm: -device
Virtio,netdev=hostnet0,id=net0,mac=52:54:00:7d:a3:18,bus=pci.0,addr=0x3:
Parameter ‘driver‘ expects a driver name
Try with argument ‘?‘ for a list.
Windows P63
Virtio驱动网卡在2014年10月之后工作很稳定,没有网络闪断情况,可以在生产环境使用
Linux
Linux内核默认集成Virtio驱动,大部分Linux发行版可以直接使用Virtio驱动网卡。RHEL5.4之后建议使用Virtio网卡
vhost_net技术 P66
运行一台虚拟机是由用户空间的QEMU和内核空间的KVM共同完成,QEMU模拟各种设备提供给虚拟机,KVM负责模拟CPU和内存
Virtio的后端处理程序一般有用户空间的QEMU提供,为了进一步减少延迟,比较新的内核中已经增加了一个vhost_net的驱动模块,在内核中
实现了Virtio的后端处理程序
vhost_net配置
虚拟机的xml配置文件默认就是使用vhost_net
<interface type=‘bridge‘> #接口方式桥接
<mac address=‘52:54:00:28:a9:12‘/>
<source bridge=‘br0‘/>
<driver name=‘vhost‘/> #driver name这个可加可不加
<model type=‘Virtio‘/>
<address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x03‘ function=‘0x0‘/>
</interface>
数据包从虚拟机到物理机的过程
virtio原理 前端
virtio原理 后端
ll /etc/lvm/
total 80
drwx------. 2 root root 4096 Oct 16 2014 archive
drwx------. 2 root root 4096 Oct 16 2014 backup
drwx------. 2 root root 4096 Oct 16 2014 cache
-rw-r--r--. 1 root root 58444 Oct 16 2014 lvm.conf
drwxr-xr-x. 2 root root 4096 Jul 10 2015 profile
每个PV中保存一份元数据,元数据以ASCII格式存储,元数据在系统上会保持备份
在/etc/lvm/ 目录下保持最新版本,在/etc/lvm/archive目录下保存旧版本
通过pvcreate等操作将第一份数据覆盖后,可通过第二份数据进行恢复,在集群中将元数据设置保存为两份
命令如下
pvcreate --metadatacopies 2 /dev/mapper/ipsanmp1
vgcreate vmVG $PV
/etc/lvm/lvm.conf
locking_type参数
locking_type=1
1表示对vg有读写权限,4表示只读权限
标签:
原文地址:http://www.cnblogs.com/MYSQLZOUQI/p/5761485.html