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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月11日 10时21分03秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
酸爽!IDEA 中这么玩 MyBatis,让编码速度飞起!
2019-04-29
已拿 Offer!字节跳动面试经验分享
2019-04-29
Windows路由表透析
2019-04-29
Java LockSupport 实战
2019-04-29
线程面试题实战与分析——各种锁的灵活运用
2019-04-29
Java 生产者和消费者面试题
2019-04-29
生产者消费者问题
2019-04-29
哲学家就餐问题
2019-04-29
本机电脑连接虚拟机redis失败解决方法
2019-04-29
JAVA学习:将字符串转成数字
2019-04-29
webrtc 中的 Android 端 jni
2019-04-29
webrtc Android 端 video 软解码创建
2019-04-29
如何构建私有的智能视觉系统
2019-04-29
OpenNCC智能视觉系统-基于Paddle的OCR模型迁移训练(一)
2019-04-29
dvsdk_3_10_00-19 编译
2019-04-29
DMAI GStreamer Plug-In 编译
2019-04-29
DM365 linux kernel 移植总结
2019-04-29
DM365 应用层gpio控制
2019-04-29
Vc6 Button 的WM_LBUTTONDOWN、WM_LBUTTONUP消息响应
2019-04-29
linux i2c子系统abc
2019-04-29