PKS项目虚拟机不是把通用KVM换个壳,它的核心是飞腾CPU、麒麟操作系统和安全固件这整条栈的联调;只要把虚拟化层、固件引导模式和virtio驱动三处对齐,部署和调优的坑能少掉一大半。
很多人第一次接触这套东西,会默认它跟x86上的KVM是一回事,照着老教程一路敲命令,然后在virsh console里卡住不动,问题往往不在命令写错,而在ARM64这套底座跟x86的脾气不一样,下面按实际落地的顺序拆开讲。
底座先讲清楚:PKS项目虚拟机到底跑在什么上面
PKS在信创语境里通常指飞腾处理器、麒麟操作系统加安全体系这套组合,虚拟机跑在它上面,链路是这样的。
三层结构,每层都有讲究
- 硬件层:飞腾FT-2000+/64、FT-2000/4、S5000C这类ARM64芯片,中断控制器是GICv3,带SMMU做设备直通,这意味着虚拟机中断要走ITS翻译,配置不对就会出现”能启动但网络慢得离谱”。
- 系统层:银河麒麟V10 SP系列、openEuler ARM版、龙蜥社区版本都有人用,内核版本直接决定KVM模块的成熟度,老内核在SMMU透传上容易出问题。
- 虚拟化层:底层就是libvirt加QEMU/KVM,厂商平台多数是在这上面再包一层管理界面,所以你会用
virsh,就掌握了七八成的日常操作。
固件这一步最容易翻车
ARM64虚拟机没有传统BIOS,走的是UEFI加ACPI,安装qemu-kvm和libvirt之后,需要确认固件文件在位,常见路径是/usr/share/AAVMF/AAVMF_CODE.fd和AAVMF_VARS.fd,部分发行版放在/usr/share/qemu-efi-aarch64/,装系统时没带上这个文件,现象就是虚拟机起来了、VNC黑屏、进不去安装界面。
pks项目虚拟机怎么部署:从镜像到实例的实操路径
按顺序走,比东一榔头西一棒子快得多。
宿主机准备
- 确认KVM模块加载:
lsmod | grep kvm,ARM64上应能看到相关模块。 - 检查设备节点:
ls -l /dev/kvm,普通用户要加进kvm组,否则virsh启动会报权限错误。 - 装齐组件:
dnf install qemu-kvm libvirt virt-install virt-manager bridge-utils,麒麟源里都有。 - 启动服务:
systemctl enable --now libvirtd,再virsh list --all确认能连上。
创建实例
磁盘先建好,qemu-img create -f qcow2 /var/lib/libvirt/images/pks-vm01.qcow2 80G,再用virt-install起机器,关键参数只有几个:
--machine virt:ARM64统一用virt机型,别照搬x86的q35。--cpu host-passthrough:让虚拟机直接用宿主的CPU特性,性能最好,代价是不能跨代迁移。--disk ...bus=virtio和--network ...model=virtio:半虚拟化驱动,吞吐差距明显。--boot uefi:走UEFI引导。
装完进系统,virsh console pks-vm01就能接管串口控制台,如果卡在Connected to domain没有下文,通常是内核参数没加console=ttyAMA0,改一下grub就好。
装完别急着交付
进系统第一件事是确认virtio驱动齐全,lsmod | grep virtio看块设备、网卡、气球驱动是否都在,缺了会退回模拟设备,性能直接掉一个量级,接着systemctl disable firewalld按需处理,再配好yum源和时区,这套流程跟物理机没区别。
性能取舍:pks项目虚拟机和KVM哪个好
这问题问得挺多,但答案是:它俩本来就是一个东西,PKS项目虚拟机的虚拟化内核就是KVM,真正的差别在”通用KVM”和”针对飞腾平台调过的KVM”之间,行业共识认为,同一颗飞腾芯片上,两者在纯计算场景差距不大,差距主要出现在中断密集和IO密集的负载上。
| 维度 | 通用KVM裸配 | 整栈适配后的PKS虚拟机 |
|---|---|---|
| 中断处理 | 默认配置,ITS未优化 | 配GICv3ITS,多队列中断分摊 |
| 内存 | 默认4K页 | 开启大页,减少TLB压力 |
| CPU调度 | 不绑核 | vCPU绑物理核,避开NUMA跨节点 |
| 迁移 | 可跨平台 | 同代芯片内迁移更稳 |
| 运维生态 | 文档丰富 | 有厂商支持,出问题有人兜底 |
几个真正影响体感的开关
- 大页内存:
echo 4096 > /proc/sys/vm/nr_hugepages,再在libvirt的XML里加<memoryBacking><hugepages/></memoryBacking>。 - vCPU绑核:
virsh vcpupin pks-vm01 0 4这类命令,把vCPU钉在物理核上,减少上下文抖动。 - virtio多队列:网卡加
queues='4',块设备加iothread,IO密集场景能明显改善。 - 精简设备:不需要的声卡、USB控制器从XML里删掉,减少模拟开销。
网络与存储:pks项目虚拟机网络配置怎么设置
网络这块,两种方案最常用,选哪个看规模。
桥接模式:小规模首选
宿主机上建网桥,ip link add br0 type bridge,把物理网口ens3f0挂上去,再给br0配地址,虚拟机XML里写<interface type='bridge'><source bridge='br0'/><model type='virtio'/></interface>,优点是配置直观、虚拟机直接拿业务网段IP;缺点是每台宿主机的网桥都得手工维护。
OVS模式:多租户和自动化场景
ovs-vsctl add-br ovsbr0建桥,ovs-vsctl add-port ovsbr0 ens3f0挂端口,虚拟机接type='bridge'指向ovsbr0,好处是VLAN、流表、端口镜像都能用命令编排,适合批量交付,代价是多一层依赖,排障要会看ovs-vsctl show和流表。
存储选型看场景
- 单机测试:qcow2放本地盘,
qemu-img随时扩容,最简单。 - 生产单机:LVM逻辑卷直通,少一层文件系统开销。
- 集群:Ceph的RBD,配合
virtio-scsi和限速策略,迁移时不用搬磁盘,这一点在信创环境里很实用。
采购视角:pks项目虚拟机价格和迁移节奏
这个长尾问得实在,价格没法一句话说死,但构成是清楚的:硬件整机、操作系统授权、虚拟化平台授权、实施适配服务、后续维保,五块加起来才是总账。
- 硬件占大头,飞腾整机按配置差异不小,多路和大内存机型拉高明显。
- 系统授权按节点或按核数计,批量采购有阶梯。
- 平台授权看是否用厂商管理平台,纯开源方案这部分可以省,但要自己投入人力。
- 适配服务最容易被低估,业务系统从x86迁到ARM64,中间件和数据库的重新编译、回归测试都算钱。
迁移节奏上,建议先迁无状态的应用服务,再动数据库和核心业务,做国产化替代时,把”能跑起来”和”跑得稳”分开评估,很多项目卡在后者。
PKS项目虚拟机常见疑问Q&A
PKS项目虚拟机支持GPU和PCIe设备直通吗
支持,飞腾平台通过SMMU做IOMMU隔离,宿主机开启内核参数iommu.passthrough=0后,用virsh nodedev-dumpxml找到设备,在XML里加<hostdev>段即可,前提是BIOS里打开虚拟化与IOMMU相关选项,且设备本身在ACS分组上不冲突,显卡直通还要处理ROM和显存映射,国产GPU的驱动版本要和宿主内核匹配。
PKS项目虚拟机的快照和备份怎么做才靠谱
virsh snapshot-create-as做内部快照方便,但它依赖qcow2链,链一长性能下降,不适合长期保留,稳妥做法是外部快照配合qemu-img convert导出整盘,或者直接用存储层快照,备份策略按”整机镜像加增量”组合,定期做一次恢复演练,不然备份文件是不是可用没人知道,据中国信通院的相关评估报告,信创环境里备份未验证是常见的运维短板。
PKS项目虚拟机和容器该怎么分工
两者不冲突,虚拟机承担需要完整内核、强隔离、跑老业务系统的场景;容器跑微服务和新建应用,业内专家指出,信创项目里常见的形态是”虚拟机做底座、容器做上层”,把Kubernetes节点跑在ARM64虚拟机里,既能隔离故障域,又保留了编排能力,代价是多一层资源开销,密度要求高的场景要算清楚这笔账。
说到底,PKS项目虚拟机的门槛不在命令有多复杂,而在对ARM64这套底座特性的熟悉程度,把固件、virtio驱动、中断和大页这几件事做对,剩下的操作和你在x86上做的没有本质区别。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/927607.html


评论列表(3条)
这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于通用的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!
这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是通用部分,给了我很多新的思路。感谢分享这么好的内容!
这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是通用部分,给了我很多新的思路。感谢分享这么好的内容!