Skip to content

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-V

vCPU 调度

物理 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 → VM4
bash
# 开启 SR-IOV(以 Intel X710 为例)
echo 4 > /sys/class/net/eth0/device/sriov_numvfs

# 验证 VF 创建
ip link show eth0

DPDK 加速

对于网络密集型应用,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)

褚成志的云与计算笔记