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 访问,会引入额外延迟,迁移规划时应优先把高吞吐业务放在同节点网卡上。

资产盘点采集架构:从物理对象到迁移台账 采集对象层(物理与逻辑资产) 服务器型号/序列号 dmidecode -t system CPU 型号/代际 lscpu / dmidecode 内存容量/通道 dmidecode -t memory 存储/HBA/多路径 lsblk / multipath 网卡/PCIe/NUMA lspci / ethtool 采集工具与执行方式 本地命令采集 lscpu / dmidecode / lspci 带外管理采集 Redfish / IPMI / BMC 批量脚本与配置管理 Ansible / SSH 批量执行 网络拓扑发现 LLDP / SNMP / 交换机 交叉校验与迁移台账输出 校验规则 lscpu 与 dmidecode 一致性 内存通道填充均衡性 PCIe 设备 NUMA 归属 资产清单字段 主机名 / 型号 / CPU 代际 内存 / 存储 / 网卡 / NUMA OS / 虚拟化 / 业务归属 迁移规划消费 兼容性矩阵 / 迁移批次 容量规划 / 网络割接 存储路径与多路径复核

五、批量采集与交叉校验

单机命令适合抽样,全量盘点必须批量执行。推荐用 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 节点。任何一项不一致都要标记为“待复核”,不能直接进入迁移台账。

带外管理(Redfish/IPMI)可以在操作系统未启动时采集固件层资产,适合与 OS 内采集结果交叉验证。对于已下线或无法登录的服务器,带外采集往往是唯一手段。

六、可直接使用的资产盘点表模板

下表字段可直接作为采集模板,每台服务器一行,采集后按“待复核”标记异常项。示例数据为教学假设,不代表真实环境实测值。

主机名 型号 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 权限。批量执行前应确认权限边界与审计要求,避免在生产高峰期集中采集造成额外负载。