2. ThinkSystem硬件架构与资源模型
在虚拟化与容器协同运行的场景中,硬件不再只是“跑得快”的底座,而是决定资源能否被安全切分、按需分配、低损耗共享的关键。Lenovo ThinkSystem 服务器的资源模型可以理解为三层:物理资源层(CPU、内存、本地 NVMe、GPU/加速卡、网卡)、池化抽象层(BIOS/UEFI 与固件能力、SR-IOV、NVMe 命名空间、RoCE/RDMA、存储控制器与 RAID/HBA 模式)、以及消费层(Hypervisor 虚拟机、容器运行时、Kubernetes 调度单元)。理解这三层之间的映射关系,才能判断某个工作负载应该用虚拟化承载、用容器承载,还是两者混合承载。
计算资源池化:从物理核到可切分的逻辑单元
ThinkSystem 的计算池化能力首先体现在 CPU 与内存的拓扑可见性上。以双路机型为例,BIOS 中可设置 NUMA 节点、Sub-NUMA Clustering、内存交织等策略,这些设置直接决定虚拟机 vCPU 与内存的本地性。若把一台 2 路服务器划分为多个 NUMA 节点,虚拟机应尽量让 vCPU 与内存落在同一节点,否则跨节点访问会带来明显延迟。对于容器,Kubernetes 的 CPU Manager 与 Topology Manager 可结合 kubelet 的 --cpu-manager-policy=static 与 --topology-manager-policy=single-numa-node,把 Guaranteed QoS 的 Pod 绑定到同一 NUMA 节点,从而获得与虚拟机接近的确定性。
此外,SR-IOV 在计算侧主要体现为对 PCIe 设备的虚拟功能(VF)切分。网卡、GPU、NVMe 控制器都可以通过 SR-IOV 暴露多个 VF,每个 VF 可直通给虚拟机或容器。这样做的价值是绕过 Hypervisor 或容器网络栈的软件模拟,降低 CPU 开销并提升吞吐。但要注意:VF 数量受物理功能(PF)能力限制,且 VF 的配置通常需要在 PF 侧完成,虚拟机或容器只看到“一块独立设备”。
存储资源池化:NVMe 与命名空间的切分
ThinkSystem 对 NVMe 的支持是存储池化的核心。物理 NVMe SSD 可通过控制器固件创建多个命名空间(Namespace),每个命名空间对操作系统呈现为独立块设备。在虚拟化场景中,命名空间可直通给虚拟机,减少存储栈层级;在容器场景中,可通过 CSI 驱动把命名空间或基于 NVMe 的卷挂载给 Pod。与传统的虚拟磁盘文件相比,NVMe 直通能显著降低 I/O 延迟,但会牺牲一部分快照、迁移和克隆的灵活性。
实际配置时,通常先在 UEFI/存储控制器界面确认 NVMe 盘是否处于“直通”或“RAID”模式。若使用硬件 RAID 卡,需先创建虚拟盘再分配给上层;若使用 VROC 或纯 NVMe 直通,则更强调命名空间与 PCIe 地址的对应关系。一个常见的教学示例是:两块 1.92TB NVMe 盘,每块创建两个命名空间(各 960GB),共四个命名空间,分别直通给两台虚拟机与两个容器持久卷。此时需要记录每个命名空间的 PCIe BDF 地址,以便在 Hypervisor 或 CSI 配置中准确引用。
网络资源池化:RDMA、RoCE 与 SR-IOV 的协同
网络池化在 ThinkSystem 上通常由支持 RoCEv2 的网卡承担。RDMA 允许网卡直接访问远端内存,绕过内核网络栈,从而降低延迟和 CPU 占用。对于虚拟化,可把 PF 的一个 VF 直通给虚拟机,并在虚拟机内启用 RDMA;对于容器,可通过 Multus CNI 把 SR-IOV VF 作为第二张网卡注入 Pod,再配合 RDMA 设备插件暴露 /dev/infiniband 设备。这样,同一台物理网卡既能承载管理流量,又能为高性能计算或分布式存储提供低延迟通道。
需要注意的是,RoCE 对无损网络有要求,通常需要配置 PFC(优先级流控)和 ECN。若交换机不支持或配置不当,RDMA 性能会大幅下降甚至丢包。因此,在把 RDMA 用于生产前,应先在两台节点间用 ib_send_bw 或 ib_write_lat 做基线测试,确认带宽与延迟符合预期。
虚拟化与容器协同的关键判断
当同一台 ThinkSystem 同时承载虚拟机和容器时,资源竞争主要发生在三个点:NUMA 本地性、PCIe 带宽、以及网络队列。建议把对延迟最敏感的工作负载(如分布式数据库、AI 推理)放在直通设备上,并为其预留 CPU 与内存;把弹性伸缩、快速启动的微服务放在容器侧,通过 SR-IOV VF 或 RDMA 设备插件获得接近物理机的网络性能。若两者都需要 NVMe,应避免让虚拟机和容器共享同一个命名空间,而是按命名空间或卷粒度隔离,防止 I/O 争抢导致尾延迟上升。
lscpu、numactl -H、nvme list、ibv_devinfo 记录物理资源拓扑,再决定 vCPU 绑定、命名空间分配和 VF 数量。这样可以在部署前发现 NUMA 跨节点、VF 不足或 RoCE 未启用等问题,而不是等到性能不达标再回头排查。
一个可参考的资源配置示例
假设一台双路 ThinkSystem 服务器,2×32 核 CPU、512GB 内存、4×1.92TB NVMe、2×25GbE RoCE 网卡。规划如下:虚拟机 A 用于数据库,分配 16 vCPU、128GB 内存,绑定 NUMA0,直通一个 960GB NVMe 命名空间和一个 SR-IOV VF;容器集群用于 Web 服务,分配剩余 CPU 与内存,通过 CSI 使用两个 960GB 命名空间,通过 Multus 注入两个 VF 并启用 RDMA。此时需在 BIOS 中确认 SNC 关闭或按需开启,在网卡固件中创建足够 VF,并在交换机上配置 PFC 与 ECN。部署后可用 numastat 观察跨节点访问比例,用 fio 测试 NVMe 延迟,用 ib_send_bw 验证 RDMA 带宽,从而判断资源池化是否达到预期。
总结来看,ThinkSystem 的资源池化不是单一技术,而是 CPU 拓扑、NVMe 命名空间、SR-IOV VF 与 RDMA 能力的组合。理解每一层的切分粒度和约束,才能让虚拟化与容器在同一硬件上各取所需、互不干扰。