• [问题求助] JWT 的工作原理是什么?使用时有哪些常见的安全坑?
    经常看到JWT,一直没弄明白这个概念
  • [问题求助] Docker 容器和虚拟机有什么本质区别?分别适合什么场景?
    我平时都直接用虚拟机,不太懂docker,总觉得不方便。
  • [问题求助] KVM 在计算机领域通常指代哪两种含义?
    KVM 在计算机领域通常指代哪两种含义?
  • [技术干货] 虚拟化技术深度对比:VMware vs KVM vs Hyper-V 性能实测与选型
    一、引言:虚拟化技术选型的三重困境在数字化转型加速的背景下,企业虚拟化部署面临前所未有的技术抉择。根据Gartner 2025年报告,63%的CIO将虚拟化成本列为首要考量,而45%的架构师则因性能瓶颈推迟云原生迁移计划。本文通过严谨的性能实测与行业案例分析,揭示三大主流虚拟化平台的技术特性与适用场景。  二、技术架构深度解析2.1 架构本质差异特性VMware ESXi(裸金属)KVM(全虚拟化)Hyper-V(半虚拟化)宿主依赖无Linux内核模块Windows内核集成硬件兼容性广泛支持(含非标准设备)依赖Linux驱动生态仅限Windows认证硬件虚拟化层开销2-5%3-8%1-3%典型部署场景企业级生产环境云服务商基础架构桌面虚拟化/中小型企业关键发现:Hyper-V通过Windows内核级集成实现更低虚拟化开销,但在非Windows生态中设备兼容性下降37%(根据IDC 2024年服务器虚拟化报告)。2.2 核心组件对比内存管理:VMware:透明页共享(TPS)技术可降低30%内存占用KVM:KSM内核同页合并效率比TPS低15-20%Hyper-V:动态内存支持热添加但缺乏跨VM内存压缩存储优化:ESXi的VAAI硬件加速使SAN存储性能提升40%KVM通过SPDK实现NVMe设备直通,IOPS突破100万Hyper-V的存储空间直通(S2D)在混合盘配置中延迟增加23%三、关键指标实测数据3.1 CPU密集型任务对比测试环境:硬件:双路Intel Xeon Platinum 8358(32核/64线程)基准测试:Sysbench CPU多线程运算(素数计算)虚拟化平台虚拟CPU数平均延迟(ms)吞吐量(ops/sec)虚拟化开销(%)物理机6412.782000VMware ESXi6414.2735010.4KVM6415.8682016.8Hyper-V6413.975108.4结论:Hyper-V在CPU密集型场景中表现最优,其半虚拟化架构在计算密集任务中开销比KVM低50%。3.2 内存超配策略验证测试场景:物理机内存128GB,配置4台虚拟机各分配40GB内存(总超配25%)平台SWAP触发阈值平均SWAP延迟(μs)内存回收效率(%)VMware85%15278KVM80%21765Hyper-V90%18971关键发现:VMware的内存气球驱动(Balloon Driver)在内存回收效率上比KVM高20%,但Hyper-V通过动态内存热添加实现更平滑的SWAP管理。四、行业应用深度案例4.1 金融行业KVM迁移实践某头部券商2024年将核心交易系统从VMware迁移至KVM,面临三大挑战:驱动兼容性:定制化HBA卡驱动导致I/O延迟增加40%,最终通过内核模块重编译解决性能调优:启用KVM的vhost-net内核加速模块,使网络吞吐量从8Gbps提升至12Gbps高可用重构:基于Pacemaker+Corosync构建集群,实现RTO<30s、RPO=0的故障切换成本收益:授权费用降低72%(从2500/核降至700/核)三年TCO下降41%,但初期迁移投入达$120万4.2 云游戏GPU虚拟化决策树某云游戏平台2025年选型决策流程:延迟敏感型场景(如FPS游戏):优先选择NVIDIA GRID vGPU(端到端延迟<10ms)避免AMD MxGPU在DirectX 12下的帧率波动(±8%)带宽优化场景:采用Intel GVT-g实现GPU分片虚拟化,单卡支持16用户结合H.265编码,使视频流带宽从15Mbps降至8Mbps成本敏感型场景:使用开源项目GPU-Passthrough,但需接受15%的性能损失五、未来技术演进方向5.1 硬件辅助虚拟化深化应用AMD SEV-SNP:在某医疗平台测试中,使内存加密开销从12%降至3%Intel TDX:预计2026年实现虚拟机级可信执行环境,密码运算性能损失<5%5.2 开源生态崛起KVM优化项目:Red Hat的KVM Aggressive Skew技术使虚拟机启动时间缩短40%华为的iSula容器虚拟化整合,实现容器与VM的统一管理六、选型决策矩阵考量因素VMware ESXiKVMHyper-V成本敏感度高(授权费用)低(开源)中(Windows依赖)性能优先级高(企业级保障)中(需调优)高(特定场景)生态兼容性广泛(跨平台)Linux优先Windows优先运维复杂度中(成熟工具链)高(需深度定制)低(集成管理)未来扩展性良好(混合云支持)优秀(开源创新)一般(微软生态封闭)最终建议:金融/医疗等安全敏感行业:优先VMware+AMD SEV组合云服务商/互联网企业:KVM+SPDK+DPDK实现极致性能桌面虚拟化/中小型企业:Hyper-V+Windows Admin Center通过本文的深度分析与实测数据,企业可建立量化的虚拟化技术选型模型,在成本、性能与生态间找到最佳平衡点。
  • [互动交流] 鲲鹏916和鲲鹏920有AArch32支持吗?
    我目前手上有一个棘手的需求,需要在服务器上利用KVM运行32位的Linux操作系统。通过搜索网络我发现许多64位的ARM处理器已经不具备32位的支持,或者仅仅在个别EL下支持32位。我正在寻找具备EL1和EL0下的32位支持、且具备虚拟化扩展的64位ARM处理器。请问有使用过搭载鲲鹏916和鲲鹏920处理器的服务器的同行吗?鲲鹏916和鲲鹏920是否具备EL0和EL1下的32位支持?
  • [技术干货] KVM虚拟机
    KVM实际是Linux内核提供的虚拟化  架构,可将内核直接充当Hypervisor来使用。KVM包含一个内核模块kvm.ko用来实现核心虚拟化功能,以及一个和处理器强相关的模块如kvm-amd.ko。KVM本身不实现任何模拟,仅仅是暴露了一个/dev/kvm接口,这个接口可被宿主机用来主要负责vCPU的创建,虚拟内存的地址空间分配,vCPU寄存器的读写以及vCPU的运行。有了KVM以后,Guest OS的CPU指令不用再经过QEMU来转译便可直接运行,大大提高了运行速度。KVM实现了CPU和内存的虚拟化,但KVM并不能模拟其他设备,还必须有个运行在用户空间的工具才行。KVM的开发者选择了比较成熟的开源虚拟化软件QEMU来作为这个工具,QEMU  模拟IO设备(网卡,磁盘等),对其进行了修改,最后形成了QEMU-KVM。在QEMU-KVM中,KVM运行在内核空间,QEMU运行在用户空间,实际模拟创建、管理各种虚拟硬件,QEMU将KVM整合了进来,通过/ioctl调用/dev/kvm,从而将CPU指令的部分交给内核模块来做,KVM实现了CPU和内存的虚拟化,但KVM不能虚拟其他硬件设备,因此QEMU还有模拟IO设备(磁盘、网卡、显卡等)的作用,KVM加上QEMU后就是完整意义上的服务器虚拟化。建议的版本表1 建议的版本展开软件建议版本QEMU(CentOS)qemu-2.12.0及以上版本libvirt(CentOS)libvirt-4.5.0及以上版本QEMU(openEuler 20.03 LTS SP1)qemu-4.1.0及以上版本libvirt(openEuler 20.03 LTS SP1)libvirt-6.2.0及以上版本对于不同的硬件设备,通过在BIOS中设置一些高级选项,可以有效提升服务器的性能。展开BIOS配置项选项含义建议配置值修改路径SRIOV启用或禁用Single Root Input/Output Virtualization(SRIOV)。EnabledBIOS > Advanced > PCIe Config > SRIOVSupport Smmu启用或禁用SMMU功能。EnabledBIOS > Advanced > MISC Config > Support Smmu  按照上表推荐的BIOS配置项,配置操作步骤如下:重启服务器,进入BIOS设置界面。开启SRIOV。在BIOS中,依次选择“Advanced > PCIe Config > SRIOV”,设置为Enabled。开启SMMU。须知此优化项只在虚拟化场景使用,非虚拟化场景需关闭。在BIOS中,依次选择“Advanced > MISC Config > Support Smmu”,设置为Enabled。按F10保存BIOS设置,并重启服务器。安装虚拟化相关组件更新时间:2024/12/27需已配置本地源后或外网可用的情况下进行安装。CentOS和openEuler两种操作系统所需组件不完全相同,请根据实际需求进行安装。CentOS在CentOS中安装虚拟化相关组件。  yum -y install qemu* libvirt* AAVMF virt-installopenEuler获取virt-manager源码。 git clone https://gitee.com/src-openeuler/virt-manager.git -b openEuler-20.03-LTS-SP1编译virt-manager并安装。进入源码目录。 virt-manager安装必要软件包。m install rpm-build yum-builddep virt-manager.spec创建编译目录。 mkdir -p ~/rpmbuild/SOURCES将源文件拷贝至编译目录。 cp * ~/rpmbuild/SOURCES编译。 rpmbuild -bb virt-manager.spec安装生成的RPM包。 yum install ~/rpmbuild/RPMS/noarch/*.rpm安装虚拟化相关组件。 yum -y install qemu libvirt openssl-devel numactl numactl-devel libcap-ng-devel traceroute ipe创建第一个虚拟机启动libvirtd服务并设置开机自启。ystemctl start libvirtdsystemctl enable libvirtd创建存储池。创建存储池目录,配置目录权限。mkdir -p /home/kvm/imageschown root:root /home/kvm/imageschmod 755 /home/kvm/images定义一个存储池并绑定目录,建立基于文件夹的存储池、激活、设置开机启动。virsh pool-define-as StoragePool --type dir --target /home/kvm/imagesvirsh pool-build StoragePoolvirsh pool-start StoragePoolvirsh pool-autostart StoragePool查看存储池信息。virsh pool-info StoragePoolvirsh pool-list创建虚拟机磁盘空间。创建卷。创建名称为1.img,所在存储池为StoragePool,容量为50G,初始分配1G,文件格式类型为qcow2,硬盘文件的格式必须为qcow2格式。virsh vol-create-as --pool StoragePool --name 1.img --capacity 50G --allocation 1G --format qcow2 查看卷信息。virsh vol-info /home/kvm/images/1.img创建虚拟机。创建虚拟机vm1,虚拟机分配4个CPU、8G内存,使用1.img作为磁盘空间,将iso文件拷贝至/xxx(非/root)路径下,安装CentOS7.6系统。 brctl addbr br1virt-install --name=vm1 --vcpus=4 --ram=8192 --disk path=/home/kvm/images/1.img,format=qcow2,size=50,bus=virtio --cdrom /xxx/CentOS-7-aarch64-Everything-1810.iso --network bridge=br1,model=virtio --force --autostart  安装虚拟机的操作系统。配置所有带有“!”的选项,输入选项对应的序号进入配置,按照指示完成配置,然后按"b"开始安装。系统安装完成后,进入登录界面。  
  • [问题求助] 请教鲲鹏920下的Cuttlefish问题
    请教各位前辈,之前在rtk3588上测试的cuttlefish安卓虚拟机运行正常,现在移植到了Taishan服务器中,编译过程没出现什么问题,但是启动模拟器无法启动crosvm和qemu下均无法启动,重新编译了很多很多次都是不行,想请教是CPU不支持还是其他什么可能出现的原因呢OS : Ubuntu Server 20.04
  • [技术干货] 从NVP到NSX
    Cisco 的网络虚拟化联姻VMware的服务器虚拟化,似乎将成为云数据中心的标准打包方案,二者的未来看上去很美。然而,SDN的出现改变了数据中心网络的市场格局。Nicin的NVP平台是最早的基于SDN的数据中心网络解决方案。Nicira是SDN的骨灰级选手推出了 OpenFlow和OVS,该公司三位最主要的创始人MartinCasado、Nick McKeown和 Scott Shenker是业界公认的SDN奠基者。NVP所选的技术架构当时让人眼前一亮,使用 Overlay构建纯软件的虚拟化网络,SDN只负责网络边缘的控制,而不会对现有网络产生任何影响,可以说是现有数据中心网络向SDN演进的最佳形态。VMware看到了NVP在商业上具备的巨大价值,一旦将NVP集成到自己的虚拟化解决方案中,那么今后便有机会在网络虚拟化上与Cisco掰一掰手腕,从而开拓自己从未有机会触碰的市场。而Cisco同样敏感地意识到了NVP带来的挑战,这种纯软件的SDN解决方案对于 Nexus系列交换机在数据中心市场的布局将形成巨大的挑战,一旦VMware收了 NVP,那么肯定要吃不少苦果子,但如果自己拿到NVP,那么操作的空间可就大得多了--既可以选择温和地推进NVP,等到Nexus赚的盆满钵满,再迅速通过NVP来占领数据中心的 SDN市场。当然,也可以内部消化掉NVP,坐等SDN自生自灭。于是争端一触即发,2012年年中,双方展开了对Nicira的收购大战。从最后的结果来看,VMware以12.5亿美元收购了Nicira。VMware收购Nicira后,基于NVP的原型推出了自己的SDN网络虚拟化平台NSX,高调进军数据中心网络市场,也宣告着放弃了与Cisco在网络领域的合作关系。当然,Cisco也不会坐以待毙,于2013年以8.64亿美元收购了SDN创业公司Insieme,同时发布了ACI的架构与产品。此后,NSX和ACI在数据中心展开了正面的交锋,数据中心SDN也正式走上了商用的道路。不过,鉴于NVP选择开源的技术是其成功的先决条件之一,于是NSX采用了“两条腿走路”的策略:NSX-V将NVP的技术特征嫁接到了VDS上,将其网络虚拟化与服务器虚拟化的产品共同交付;NSX-MH则保留了NVP的开源基因,仍然使用OVS和 OpenFlow/OVSDB支撑SDN架构,可以服务于KVM、XEN等非VMware的服务器虚拟化产品。2016年5月,VMware推出NSX-T,NSX-T是对NSX-MH的一次重大的更新,旨在提供更好的Hypervisor Agnostic 特性。
  • [问题求助] QEMU 的这个版本不支持USB 重新定向
        vmware 迁移  22.03 LTS SP2 kvm  ,   桌面 Xfce  启动虚拟机提示错误 ! 无法完成安装:'不支持的配置:QEMU 的这个版本不支持 USB 重新定向'  Traceback (most recent call last):   File "/usr/share/virt-manager/virtManager/asyncjob.py", line 75, in cb_wrapper     callback(asyncjob, *args, **kwargs)   File "/usr/share/virt-manager/virtManager/create.py", line 2124, in _do_async_install     guest.installer_instance.start_install(guest, meter=meter)   File "/usr/share/virt-manager/virtinst/installer.py", line 413, in start_install     domain = self._create_guest(   File "/usr/share/virt-manager/virtinst/installer.py", line 358, in _create_guest     domain = self.conn.createXML(install_xml or final_xml, 0)   File "/usr/lib64/python3.9/site-packages/libvirt.py", line 4062, in createXML     if ret is None:raise libvirtError('virDomainCreateXML() failed', conn=self) libvirt.libvirtError: 不支持的配置:QEMU 的这个版本不支持 USB 重新定向 
  • [问题求助] 鲲鹏920支持 KVM嵌套虚拟化吗
    请问鲲鹏920支持 KVM嵌套虚拟化吗,因为想利用KVM嵌套虚拟化,创建KVM虚拟机,然后在里面继续创建嵌套的KVM虚拟机,这样我可以对中间的虚拟机进行内核修改等操作,这样不影响系统运行,不需要重装服务器操作系统,在X86平台上,我们可以用VMWare workstation,里面创建虚拟机kvm_intel也可以开启嵌套虚拟化。我的环境:鲲鹏920+openEuler22.03 SP2 aarch64版。目前创建的虚拟机ubuntu 22.04 server版和openEuler22.03 SP2 aarch64版,里面均没有/dev/kvm,表明不支持KVM虚拟化,我想问以下几个问题,请各位大佬解答一下,鲲鹏920是基于ARM V8.几架构,鲲鹏是否支持嵌套虚拟化,我查资料时,发现ARM V8.4支持NEVE嵌套虚拟化:ARM嵌套虚拟化扩展(NEVE: Nested Virtualization Extensions for ARM) — Cloud Atlas 0.1 文档 (cloud-atlas.readthedocs.io)如果支持,该如何开启需要配置固件UEFI,还是需要重新配置内核,因为ARM下的KVM已经没有KVM模块了,lsmod | grep kvm是没有的。
  • [技术干货] KVM-内存虚拟化的基本配置
    介绍:虚拟化通常是云计算的基础。简单的说,虚拟化可以满足在一台物理的服务器上可以跑多台虚拟机而,虚拟机共享服务器的 CPU、内存、IO 硬件资源,但逻辑上虚拟机之间是相互隔离的,KVM是基于linux内核开发实现的,而kvm内核中有一个模块叫KVM.ko用于管理虚拟CPU和内存,在云计算当中还是非常常见的,相比openstack来讲,kvm也是有它的优点所在。步骤:先分配1G内存的大小启动客户机:代码:qemu-system-x86 anuo.img -m 1G -enable -kvm在客户机中查看内存相关信息:分配2G内存的大小启动客户机代码:qemu-system-x86_64 anuo.img -m 2G -enable -kvm在客户机中查看内存的相关信息:注意比较二者之间的差异,包括内存的变化等等。查看机器是否支持 eptlvpid代码:cat/proc/cpuinfo |“eptlvpid”查看模块支持情况内存过载时用到的三种方法:内存交换(swapping):用硬盘空间来弥补内存的不足。气球(ballooning):通过驱动实现。页共享(page sharing):多个扩展页使用相同的内存空间。比较启动客户机前后的内存使用情况:总结:kvm虚拟化虽然比不上openstack的应用面广,但是支持普通的小微企业还是分成耐用的,操作流程也很清晰,欢迎大家一起来探讨。
  • [交流分享] 在华为云鲲鹏BMS中部署kvm虚拟化的问题
    在华为云官网创建鲲鹏BMS(选择centos操作系统,只能选择centos7.6版本),然后在系统中部署kvm虚拟化(qemu-kvm2.12),启动kvm虚拟机,然后打开vnc画面,始终显示Guest has not initialized the display (yet),如下图:补充说明:查看BMS的CPU型号为kunpeng920,另外在我公司本地环境同样用搭载kunpeng920的TaiShan200服务器+openEuler20.3 部署qemu-4.1。
  • kvm网络的基本配置
    文章简介:通过虚拟化技术将一台计算机虚拟为多台逻辑计算机,在一台计算机上同时运行多个逻辑计算机,同时每个逻辑计算机可运行不同的操作系统,应用程序都可以在相互独立的空间内运行而互相不影响,从而提高计算机的工作效率文章步骤:了解网络配置的基本参数。使用 qemu模拟网卡。:配置网络环境。实验前准备安装virt-manager环境。创建了宿主机实验流程(1)基础配置查看qemu支持的网络的相关模型参考命令 :  qemu-system-x86_64 -net nic,model=?在管理界面查看网卡的相关信息:     参考命令 :(qemu)info qtree在宿主机中启动一台客户机并配置好相应的网络参数[    参考命令: qemu-system-x86_64 -m 1024 rhel7.img -net nic,vlan=0,macaddr=52:54:00:12:34:22,model=e1000,addr=08 –net user 查看网卡的信息      参考命令:ethtool -i ens8在管理界面查看网络信息参考命令:(qemu) info block实验(2)配置 bridge模式宿主机实现如下操作:配置网络记录IP地址和网关    IP地址=  192.168.232.168           (参考命令:ifconfig)网关=    192.168.232.2             创建网桥的配置文件进入到存放网卡配置文件目录:(参考命令:/etc/sysconfig/network-scripts创建网桥的配置文件(vim ifcfg-br0)编写网桥配置文件:STP=yes TYPE=BridgeDEVICE=br0NAME=br0ONBOOT=yes BOOTPROTO=staticIPADDR=192.168.232.141GATEWAY=192.168.232.2NETMASK=255.255.255.0DNS1=114.114.114.114DNS2=8.8.8.8修改网卡的配置文件进入到存放网卡配置文件目录:(参考命令:/etc/sysconfig/network-scripts备份配置文件 (参考命令:cp ifcfg-ens33  ifcfg-ens33bak )打开配置文件 (参考命令:vim ifcfg-ens33)修改配置文件的内容:DEVICE=ens33ONBOOT=yesBRIDGE=br0TYPE=EthernetNAME=ens33重新启动libvirtd 和网络服务参考命令:systemctl restart libvirtd          systemctl restart network打开virt-manger工具    参考命令:virt-manager选择客户机-打开控制台-添加桥接网卡重启网络服务:(参考命令:systemctl restart network)启动客户机查看网卡信息,给出自动获得的ip 地址。(参考命令:ip a)新生成的网卡名称:    link/ens33           获得的IP地址为:       192.168.234.167           测试网络的联通性:(参考命令: ping www.baidu.com)​​​​​​​结束语:通过eqmu了解网络配置的基本参数配置信息如何使用 qemu模拟网卡和通过配置桥连接网络环境实现对网卡的配置让客户机上网本次实验对网络配置有了更深刻的了解比如在虚拟机的客户机上通过qemu来调配bridge的方式查看当前网络的配置状态 让客户机能上网这些操作
  • 基于kvm存储的基本配置
    实验步骤:(以下内容为简单示例,大家要按照实际的做实验的步骤填写)1. 使用一个镜像文件启动一个客户机(默认从第一块硬盘 启动​2. 客户机中:查看磁盘的相关信息:班级​​​3. 客户机中管理界面查看存储的相关信息:班级​4. 从光驱启动客户机​5. 设置启动顺序,并且弹出启动菜单​6. 使用 drive -file 启动客户机,设置 snapshot=on 参数,系统断电后重启,数据恢复到最初的状态。(1)新建 1 个文件​(2)关机班级​(3)重新启动​(4)查看新建的文件是否存在。​Vish 网络管理命令​​显示接口信息​​显示libvirt 管理的存储池​查询存储池的基本信息​根据uuid 查询存储池的名称​根据名称查询存储池的uuid​编辑一个存储池的XML文件​​关闭一个存储池​查询一个存储池中存储卷的列表​查询一个存储卷的路径​实验结果及分析:从 kvm 的几个基本操作出发实现对 kvm 虚拟化用 qemu-img 管理操作一条命令的上下 逻辑也非常的清晰比如说再创建快照时我们首先要 ll 查看客户机的信息 使用snapshot 命令创建一 个快照并查看是否创建成功 回到客户机删除创建的 txt 文件并查看是否删除成功随后要 shudown 重启操作并再终端输入 snapshot-a 的命令 重启客户机后发现被删除的文件被恢复了 对于基本命令 的逻辑操作还是非常重要的也要非常重视才行也包含了对virsh工具的基本命令解析如上所示 内容丰富 very good!
  • [管理与监控] ceph rbd+KVM TRIM功能使能和确认方法
    在Ceph 0.46和kvm 1.1 以后, Ceph块设备支持丢弃操作。时就意味着客户端可以发送TRIM请求让Ceph块设备释放未被使用的空间。这种操作可以通过ext4或者xfs支持。要支持这个选项,需要在启动虚拟机时候加上discard_granularity配置:例如:启动命令qemu-system-aarch64 \-bios /home/kvm/QEMU_EFI.fd \-cpu host -M virt -m 8G --enable-kvm -machine gic-version=3 -nographic \-device virtio-scsi-pci,id=scsi0 \-drive file=rbd:rbd/cent7-min2,format=raw,if=none,id=drive-scsi0-0-0-0 \-device scsi-hd,bus=scsi0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0-0-0-0,id=scsi0-0-0-0,bootindex=1 \-drive file=rbd:rbd/qimg0,format=raw,if=none,id=drive-scsi0-0-0-1 \-device scsi-hd,bus=scsi0.0,channel=0,scsi-id=0,lun=1,drive=drive-scsi0-0-0-1,id=scsi0-0-0-1,discard_granularity=512启动后进入OS查看 sdb的 discard_granularity/sys/block/sdb/queue/discard_granularity如果以virtio启动磁盘,则此参数为0,无效。(virtio不支持discard)
总条数:49 到第 页
上滑加载中