3. 现有数据中心资产盘点
迁移工程的第一份硬输入不是方案,而是资产台账。EPYC 平台迁移之所以比普通服务器替换更复杂,是因为它同时牵动 CPU 微架构代际、内存通道与容量、NUMA 拓扑、PCIe 代际、网卡速率与存储路径。如果盘点只停留在“某型号服务器若干台”,后续的兼容性矩阵、迁移批次和容量规划都会失去依据。本节的目标是建立一套可复现的采集方法:明确采集哪些字段、用什么工具取、如何交叉校验,最终形成可被迁移规划直接消费的资产清单。
一、先定义采集对象与字段粒度
资产盘点要区分三个层次:物理层、逻辑层和拓扑层。物理层关注服务器型号、序列号、机架位置、CPU 型号与步进、内存条数量与单条容量;逻辑层关注操作系统、内核版本、驱动、虚拟化平台、业务归属;拓扑层关注 NUMA 节点、PCIe 设备归属、网卡与交换机端口、存储路径与多路径状态。迁移评估最常被忽略的是拓扑层,而 EPYC 的 CCD、CCX 与 NUMA 布局恰恰决定了虚拟机与进程的放置策略,因此拓扑字段必须与物理字段同等对待。
建议的最小字段集如下:主机名、厂商与型号、序列号、BIOS 版本、CPU 型号与代际、插槽数、每插槽核心数、内存总量与单条规格、内存通道填充情况、NUMA 节点数、网卡型号与速率、HBA/RAID 型号、存储路径数、操作系统与内核版本、虚拟化平台版本、业务系统标识。字段确定后,采集才有统一口径,否则不同工程师导出的表格无法合并。
二、CPU 代际的识别方法
CPU 代际不能只看型号字符串。以 EPYC 为例,7001 系列为 Naples(Zen 1),7002 为 Rome(Zen 2),7003 为 Milan(Zen 3),9004 为 Genoa(Zen 4),8004 为 Siena(Zen 4c)。在 Linux 上可用以下命令获取关键信息:
lscpu | egrep 'Model name|Socket|Core|Thread|NUMA|MHz'
grep -m1 'model name' /proc/cpuinfo
dmidecode -t processor | egrep 'Socket|Version|Core Count|Thread Count'
其中 lscpu 给出逻辑视图,dmidecode 给出固件层视图,两者应交叉核对。若 lscpu 显示 2 插槽 128 线程,而 dmidecode 显示单插槽 64 核,说明超线程或固件报告存在差异,需要记录并复核。代际判断还应结合 BIOS 版本,因为部分老平台升级 BIOS 后才支持新代际 CPU,这直接影响迁移窗口。
三、内存配置与 NUMA 采集
内存采集要同时记录容量和通道填充。EPYC 每插槽支持 8 或 12 通道,通道未填满会显著降低带宽。可用以下命令:
dmidecode -t memory | egrep 'Size|Locator|Speed|Manufacturer|Part Number'
numactl --hardware
lscpu | grep NUMA
numactl --hardware 会输出每个 NUMA 节点的 CPU 列表和内存大小。若节点内存分布不均,说明内存条未按通道均衡安装,迁移到新平台前应记录该偏差,避免把不均衡配置直接复制到新机器。内存字段建议记录到“单条容量 × 条数 × 通道号”,而不是只记总量。
四、存储与网络拓扑采集
存储侧要采集本地盘、HBA、RAID 控制器、多路径和 LUN 映射。常用命令包括:
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,MODEL
lsscsi -v
multipath -ll
cat /proc/mdstat
网络侧要采集网卡型号、速率、PCIe 归属、绑定模式和交换机端口。命令示例:
lspci | egrep -i 'ethernet|infiniband|fibre'
ethtool eth0 | egrep 'Speed|Duplex|Link detected'
ip -br link
cat /proc/net/bonding/bond0
拓扑采集的关键是把 PCIe 设备映射到 NUMA 节点。可用 lspci -vv 查看设备所在总线,再结合 numactl --hardware 判断该总线归属哪个 NUMA 节点。网卡若跨 NUMA 访问,会引入额外延迟,迁移规划时应优先把高吞吐业务放在同节点网卡上。
五、批量采集与交叉校验
单机命令适合抽样,全量盘点必须批量执行。推荐用 Ansible 的 setup 模块采集基础事实,再补充自定义命令。示例 playbook 片段:
- hosts: all
gather_facts: yes
tasks:
- name: 采集 CPU 与 NUMA
shell: lscpu; numactl --hardware
register: cpu_out
- name: 采集内存条明细
shell: dmidecode -t memory
register: mem_out
- name: 采集网卡与 PCIe
shell: lspci | egrep -i 'ethernet|fibre'; ethtool eth0
register: net_out
采集完成后必须做三项校验:一是 CPU 逻辑核数与固件报告是否一致;二是内存总量是否等于单条容量乘以条数,且各通道填充是否均衡;三是网卡与 HBA 的 PCIe 总线是否落在预期 NUMA 节点。任何一项不一致都要标记为“待复核”,不能直接进入迁移台账。
六、可直接使用的资产盘点表模板
下表字段可直接作为采集模板,每台服务器一行,采集后按“待复核”标记异常项。示例数据为教学假设,不代表真实环境实测值。
| 主机名 | 型号 | CPU 型号/代际 | 插槽×核心 | 内存总量/通道 | NUMA 节点 | 网卡速率 | 存储路径 | OS/虚拟化 | 状态 |
|---|---|---|---|---|---|---|---|---|---|
| node-a01 | R7525 | EPYC 7543 / Milan | 2×32 | 512GB / 8通道满 | 2 | 25GbE×2 | 4 路径 | RHEL 8.6 / KVM | 正常 |
| node-a02 | R7525 | EPYC 7543 / Milan | 2×32 | 384GB / 6通道 | 2 | 25GbE×2 | 2 路径 | RHEL 8.6 / KVM | 待复核 |
| node-b07 | R740 | Xeon Gold 6248 / Cascade | 2×20 | 256GB / 6通道 | 2 | 10GbE×2 | 2 路径 | ESXi 7.0 | 待迁移 |
表中 node-a02 内存仅填 6 通道、存储仅 2 路径,属于典型的不均衡配置,迁移前应确认是硬件限制还是配置遗漏。node-b07 为待迁移的旧平台,其 CPU 代际与 EPYC 差异较大,需在兼容性矩阵中单独评估。资产盘点的最终产出不是一张漂亮表格,而是一份能回答“哪些机器可以迁、按什么顺序迁、哪些需要先整改”的决策依据。
dmidecode、multipath -ll 等命令通常需要 root 权限。批量执行前应确认权限边界与审计要求,避免在生产高峰期集中采集造成额外负载。