CAS 虚拟化架构详解
虚拟化技术栈
CAS 基于 Linux KVM 构建,完整技术栈如下:
应用层(Guest OS / VM)
↓
QEMU(设备模拟层)
↓
KVM(内核虚拟化模块,利用 CPU 硬件虚拟化)
↓
libvirt(虚拟化管理 API)
↓
CVK Agent(H3C 虚拟化代理)
↓
物理硬件(Intel VT-x / AMD-V)CPU 虚拟化
硬件辅助虚拟化
现代 CPU 提供硬件虚拟化扩展:
- Intel:VT-x(Virtualization Technology for IA-32/64)
- AMD:AMD-V(AMD Virtualization)
bash
# 检查 CPU 是否支持虚拟化
grep -E 'vmx|svm' /proc/cpuinfo
# vmx = Intel VT-x
# svm = AMD-VvCPU 调度
物理 CPU 时间片分配:
物理核心 0: [VM1-vCPU0] [VM2-vCPU0] [VM1-vCPU0] [VM3-vCPU0] ...
物理核心 1: [VM1-vCPU1] [VM2-vCPU1] [VM4-vCPU0] [VM1-vCPU1] ...
...
调度策略:
- 默认:公平调度(CFS)
- 实时 VM:可绑定物理核(CPU Pinning),避免调度延迟CPU 绑定(CPU Pinning)
对于延迟敏感的应用(如数据库、实时系统),建议 CPU 绑定:
xml
<!-- libvirt XML 配置:将 VM 的 vCPU 绑定到物理核 -->
<vcpu placement='static'>4</vcpu>
<cputune>
<vcpupin vcpu='0' cpuset='2'/>
<vcpupin vcpu='1' cpuset='3'/>
<vcpupin vcpu='2' cpuset='4'/>
<vcpupin vcpu='3' cpuset='5'/>
<emulatorpin cpuset='0-1'/>
</cputune>内存虚拟化
内存管理技术
| 技术 | 说明 | 适用场景 |
|---|---|---|
| 大页内存(HugePages) | 2MB/1GB 大页,减少 TLB Miss | 数据库、高性能应用 |
| 内存气球(Balloon) | 动态调整 VM 内存,提高利用率 | 通用场景 |
| KSM(内核同页合并) | 合并相同内存页,节省内存 | 内存超分场景 |
| NUMA 感知 | VM 内存分配在同一 NUMA 节点 | 大内存 VM |
bash
# 配置大页内存(在宿主机上)
echo 'vm.nr_hugepages = 51200' >> /etc/sysctl.conf # 100GB 大页
sysctl -p
# 检查大页使用情况
cat /proc/meminfo | grep Huge存储 I/O 虚拟化
virtio-blk vs virtio-scsi
| 驱动 | 性能 | 功能 | 推荐场景 |
|---|---|---|---|
| virtio-blk | 高 | 基础 | 系统盘 |
| virtio-scsi | 稍低 | 丰富(支持 SCSI 命令) | 数据盘,支持热插拔 |
| IDE | 低 | 兼容性好 | 旧系统兼容 |
I/O 调度优化
bash
# 宿主机磁盘调度器(SSD 推荐 none 或 mq-deadline)
echo mq-deadline > /sys/block/sda/queue/scheduler
# 检查当前调度器
cat /sys/block/sda/queue/scheduler
# VM 内部(Guest OS)也需要优化
echo none > /sys/block/vda/queue/scheduler网络 I/O 虚拟化
SR-IOV(单根 I/O 虚拟化)
SR-IOV 允许物理网卡直接分配给 VM,绕过软件虚拟化层,性能接近物理网卡:
物理网卡(PF,Physical Function)
├── VF0 → VM1(直通,无软件开销)
├── VF1 → VM2
├── VF2 → VM3
└── VF3 → VM4bash
# 开启 SR-IOV(以 Intel X710 为例)
echo 4 > /sys/class/net/eth0/device/sriov_numvfs
# 验证 VF 创建
ip link show eth0DPDK 加速
对于网络密集型应用,CAS 支持 DPDK(Data Plane Development Kit)加速:
传统路径:VM → virtio → OVS(内核态)→ 物理网卡
DPDK 路径:VM → vhost-user → OVS-DPDK(用户态)→ 物理网卡
性能提升:延迟从 ~100μs 降至 ~10μs集群架构
CAS 集群组成
CAS 集群(最大支持 128 台宿主机)
├── 宿主机1(CVK)
│ ├── VM1
│ ├── VM2
│ └── VM3
├── 宿主机2(CVK)
│ ├── VM4
│ └── VM5
├── ...
└── 共享存储(Ceph / FC SAN / NFS)
└── 所有 VM 磁盘存储在共享存储上
(热迁移的前提条件)资源池(Resource Pool)
CAS 集群
├── 资源池A(生产环境)
│ ├── 宿主机1、2、3
│ └── 优先级:高,预留 20% 资源
├── 资源池B(测试环境)
│ ├── 宿主机4、5
│ └── 优先级:低,不预留
└── 资源池C(DMZ 区)
├── 宿主机6
└── 网络隔离性能基准
典型 CAS 环境性能参考:
| 指标 | 参考值 |
|---|---|
| VM 启动时间 | 30-60 秒 |
| 热迁移时间(32GB VM) | 2-5 分钟 |
| 虚拟化 CPU 开销 | < 5%(KVM 硬件辅助) |
| 虚拟化内存开销 | < 3% |
| 虚拟化网络延迟增加 | < 50μs(virtio) |
| 虚拟化存储 IOPS 损耗 | < 10%(virtio-blk) |