KVM 备忘录(1)
发布日期:2021-06-29 11:37:15 浏览次数:2 分类:技术文章

本文共 3495 字,大约阅读时间需要 11 分钟。

背景

KVM 是基于虚拟化扩展(Intel VT 或者 AMD-V)的 X86 硬件的开源的 Linux 原生的全虚拟化解决方案。KVM 中,虚拟机被实现为常规的 Linux 进程,由标准 Linux 调度程序进行调度。

kvm基于内核空间,相当于内核空间的一个模块,但由于是存在于内核空间的,所以用户无法调用它,所以需要qemu作为用户空间工具。

CPU 对虚拟化的支持以及性能

kvm基于X86的硬件,最基本的一个需求就是需要cpu 支持vmx,目前市面上的vmware 也好,xen 也好,都是通过不同的程序调用内核空间的kvm 模块,所以均需要cpu 对虚拟化的支持,查看cpu是否支持虚拟化可以用以下方法:

grep -E -o 'vmx|svm' /proc/cpuinfo #有些时候是机器没打开cpu虚拟化的开关导致的,可以在bios里改

虚拟化以及内存

内存对于kvm 来说主要还是要看cpu的架构是numa还是smp,cpu 架构可以参考之后的以及记录。

kvm本身其实就已经对内存进行过优化以及支持,虚拟机上的内存地址其实是物理地址经过映射后的地址空间,如何映射就是通过cpu 上的ept 进行的,可以看下cpu是否支持ept这项技术:

cat  /proc/cpuinfo | grep ept

虚拟硬盘

kvm 一般最大的瓶颈就在磁盘IO 上了。

目前常见的虚拟硬盘格式主要是qcow2 以及raw ,当然也有虚拟化厂家自己定义的一些文件格式,比如vmware的vmdk 这种。这里主要记录的还是qcow2 和raw 吧。毕竟用的多。

  • raw:

    raw的优势(能找到的相关资料太少,不知道是不是理解有误):
    1.简单,并能够导出为其他虚拟机的虚拟硬盘格式
    2.根据实际使用量来占用空间使用量,而非原先设定的最大值(比如设定最高20G,而实际只使用3G)。——需要宿主分区支持hole(比如ext2 ext3 ntfs等)#所以经常ll出来的比du-sh实际的要大
    3.以后能够改变空间最大值(把最高值20G提高到200G,qcow2也可以,不过要转为raw) ps: raw经常作为中间格式,其他虚拟化文件转格式可以通过先转到raw后再进行转换。
    4.能够直接被宿主机挂载,不用开虚拟机即可在宿主和虚拟机间进行数据传输(注意,此时虚拟机不要开)

  • qcow2:

    qcow2的优势:
    1.更小的虚拟硬盘空间(尤其是宿主分区不支持hole的情况下)
    2.支持快照机制。

性能上其实raw 是超过qcow2的,但是因为快照这个优势,导致了实际生产环境中,raw 很少使用。

虚拟化以及网络

网络对于kvm的支持也比较全面,基本上linux 都自带virtio半虚拟化驱动,所以性能上不会有啥差别。windows的话接触比较少,遇到的都是需要自己去装virtio驱动的。不然网络会很卡。

创建kvm

yum install qemu-kvm qemu-img #至少要有这2个包yum install virt-manager libvirt libvirt-python python-virtinst libvirt-client bridge-utils #其他一些管理包,比如libvirt 之类的,以及网桥包##debian或者ubuntu 下apt-get install kvm qemuapt-get install virtinst python-libvirt virt-viewer virt-managerapt-get install bridge-utils
  • 创建vdisk
qemu-img create -f qcow2 vdisk 5G #创建5G且格式为qcow2的硬盘root:~# qemu-img info vdisk #查看vdisk 信息image: vdiskfile format: qcow2virtual size: 5.0G (5368709120 bytes)disk size: 196Kcluster_size: 65536Format specific information:    compat: 1.1    lazy refcounts: false
  • 创建kvm
    1.通过qemu创建:
qemu-system-x86_64 -m 2048 -enable-kvm fvdisk -cdrom ./Fedora-Live-Desktop-x86_64-20-1.iso #最简单的创建方式,比较适合用于制作镜像

2.libvirt创建

libvirt 可以通过xml 配置文件的方式进行创建,包括openstack 等比较出名的虚拟化解决方案也比较喜欢用这种方式创建虚拟机,关键在于好管理。

centos
1024
1024
2
hvm
destroy
restart
destroy
/usr/bin/kvm

写好配置文件后,使用以下命令创建:

virsh define instance_01.xml #根据配置文件创建虚拟机virsh list --all #查看所有kvm ,无论是否关机virsh start instance_01 #开机

网桥相关配置:

kvm在很多时候都需要使用网桥这种方式配置,在接口多的情况下对接口做个bonding 是个不错的选择:

auto br100iface br100 inet staticaddress 10.1.1.215netmask 255.255.255.0gateway 10.1.1.254dns-nameservers 10.1.1.2bridge_ports bond0bridge_hello 2bridge_maxage 12bridge_fd 0bridge_stp off######auto bond0iface bond0 inet staticaddress 10.1.1.215netmask 255.255.255.0gateway 10.1.1.254post-up ifenslave bond0 eth0 eth1pre-down ifenslave -d bond0 eth0 eth1

通过brctl show 可以看到网桥相关信息:

root# brctl showbridge name	bridge id		STP enabled	interfacesbr100		8000.00221999a513	no		bond0							vnet0							vnet1							vnet2							vnet3							vnet4virbr0		8000.000000000000	yes

先后顺序就是bonding–》在接口上做bridage–》在bridge做vnet

基本上按照上述可以起好对应的kvm 虚拟机,之后会再对管理方面做一些备忘录。

转载地址:https://blog.csdn.net/zyxpaomian/article/details/104697269 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:KVM备忘录(2)
下一篇:cpu三大架构 numa smp mpp

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月11日 10时21分03秒