努力
加油

Ubuntu Server在浪潮物理服务器上部署的最佳实践有哪些?

在浪潮(Inspur)物理服务器上部署 Ubuntu Server,核心痛点通常不在于操作系统本身的兼容性——毕竟 Ubuntu 对 x86_64 架构的支持是业界标杆——而在于硬件驱动适配、固件版本匹配、以及针对国产服务器特有硬件(如 BMC、RAID卡、网卡)的调优。

很多踩坑的经历都源于“拿通用镜像直接装”或者“忽略了 BIOS/BMC 的基础配置”。以下是基于生产环境经验总结的最佳实践,按实施顺序排列:

1. 前置准备:固件与驱动的版本对齐

这是最容易忽视但最关键的一步。浪潮服务器的稳定性高度依赖于 BIOS、BMC(基板管理控制器)、Riser 卡和 RAID 控制器的固件版本。

  • 查阅官方兼容性列表:不要盲目使用最新的 LTS 版本或最新的内核。去浪潮官网下载对应机型(如 NF5280 G5/G6, AF3 系列等)的《Ubuntu 兼容性报告》或《驱动支持列表》。
  • 固件升级策略:
    • BIOS/BMC:建议在安装 OS 前,通过 iBMC Web 界面将 BIOS 和 BMC 升级到厂商推荐的“稳定版”(Stable),而非“最新版”(有时新版会引入新的 Bug)。
    • 网卡/RAID 卡:如果使用的是 Broadcom (NetXtreme) 网卡或 LSI RAID 卡,确保主板上的 Option ROM 版本与 Ubuntu 内核中内置的驱动版本大致匹配,避免启动时出现 No driver found 导致无法识别磁盘。

2. 安装介质选择:Server ISO vs Live CD

  • 必须使用 Server ISO:严禁使用 Desktop 或 Live CD 进行生产部署。Server ISO 默认不包含图形界面,资源占用更低,且预装了 cloud-init 相关工具(虽然物理机用得少,但有助于网络配置自动化)。
  • 内核版本选择:
    • 推荐 Ubuntu 22.04 LTS 或 24.04 LTS。这两个版本的内核较新,对较新的 CPU(如 Intel Sapphire Rapids, AMD Genoa)和新式网卡(200G/400G NIC)有更好的原生支持。
    • 如果硬件非常老旧(如 5-7 年前的机型),20.04 LTS 可能更稳妥。

3. BIOS/iBMC 关键配置项(避坑指南)

在从 U 盘启动进入安装界面之前,务必进入 BIOS 调整以下设置,否则后续可能出现性能瓶颈或兼容性问题:

  • 电源管理(Power Management):
    • 设置为 Performance 或 Custom。默认通常是 Balanced,但在高并发计算场景下,建议锁定 CPU P-State,避免频繁降频导致的延迟抖动。
    • 开启 Turbo Boost(如果业务需要单核高性能)。
  • 内存配置(Memory Settings):
    • 确保 Memory Interleaving 开启,以平衡多路 CPU 间的内存访问延迟。
    • 如果使用 RDMA 或高性能网络,检查是否启用了内存 ECC 的正确模式(通常为 SECDED 或 Chipkill)。
  • 虚拟化技术:
    • 即使不跑 KVM,也建议开启 VT-x / VT-d(Intel)或 SVM / IOMMU(AMD)。这不仅用于未来可能的容器化或虚拟机需求,更是现代 Linux 内核处理 I/O 直通(Passthrough)的前提。
  • 安全启动(Secure Boot):
    • 强烈建议关闭 Secure Boot。虽然 Ubuntu 支持 Secure Boot,但浪潮的一些第三方 RAID 卡驱动或专有监控 Agent 可能需要加载未签名的内核模块,开启 Secure Boot 会导致驱动加载失败或权限受限。

4. 分区策略:LVM 与 SSD/HDD 混合部署

不要使用默认的“Guided – use entire disk”,除非你确定这台机器只做轻量级用途。生产环境推荐手动分区或使用 subiquity(Ubuntu 20.04+ 的新安装器)的高级选项:

  • 根文件系统(/):
    • 格式:ext4 或 xfs。对于日志密集型的数据库服务器,xfs 在高并发写入下表现更佳;对于普通应用,ext4 足够稳定。
    • 大小:建议至少 50GB-100GB,预留空间供系统更新和日志轮转。
  • Swap 交换空间:
    • 如果内存 >= 64GB,Swap 可以设小一点(如 4GB-8GB)或仅作为休眠备份,重点依靠 OOM Killer 机制。
    • 如果内存较小,Swap 应设为物理内存的 1-2 倍。
  • 数据盘(/data 或 /var/lib/docker):
    • SSD/NVMe:用于数据库、缓存、容器镜像。务必启用 TRIM 支持(fstrim.timer),延长 SSD 寿命并维持性能。
    • HDD:用于备份、归档。建议使用 RAID 5 或 RAID 6(由硬件 RAID 卡管理),Linux 层只需挂载即可。
  • LVM 逻辑卷:
    • 推荐使用 LVM,以便后期动态扩展卷组容量,无需重启或重新分区。

5. 驱动与专有软件安装

Ubuntu 开源社区提供的通用内核驱动可能无法发挥浪潮硬件的全部潜力,特别是以下组件:

  • iBMC 驱动(IPMI/KCS):
    • 安装后,确保 openipmi 或 freeipmi 服务正常运行,以便通过 ipmitool 监控温度、风扇转速和电源状态。
    • 命令示例:sudo ipmitool sdr list 查看传感器数据。
  • RAID 卡管理:
    • 如果是 MegaRAID 卡,安装 storcli 或 MegaCli 工具包,便于脚本化管理 RAID 状态。
    • 注意:在 RAID 级别为 RAID 1/5/10 时,Linux 看到的是一块虚拟磁盘,无需额外配置。
  • 网卡驱动:
    • 检查 ethtool -i <interface> 确认当前使用的驱动模块。
    • 如果需要使用 RSS(Receive Side Scaling)或 TSOM(TCP Segmentation Offload)来提升吞吐,需在内核参数中调整。例如,在 /etc/default/grub 中添加 net.ifnames=0 以保留传统 eth0/eth1 命名(部分老运维脚本依赖此命名),或直接使用 systemd-networkd 配置固定名称。

6. 系统优化与安全加固

  • 禁用不必要的服务:
    • snapd:如果在物理机上不打算用 Snap 包,可以考虑禁用 snap 服务以减少后台开销(尽管 Ubuntu 默认集成度很高,完全移除较麻烦,可选择不自动更新)。
    • cups:打印服务,服务器无需启用。
    • bluetooth:蓝牙服务,物理服务器通常不需要。
  • 内核参数调优(sysctl):
    • 针对高网络负载,调整 TCP 缓冲区:
      net.core.rmem_max = 16777216
      net.core.wmem_max = 16777216
      net.ipv4.tcp_rmem = 4096 87380 16777216
      net.ipv4.tcp_wmem = 4096 65536 16777216
    • 针对文件句柄限制,修改 /etc/security/limits.conf,提高 nofile 上限,防止高并发连接数下的 “Too many open files” 错误。
  • NTP 时间同步:
    • 确保 systemd-timesyncd 或 chrony 指向内部可信的时间源。物理服务器时钟漂移比虚拟机更严重,尤其在长时间运行后。
  • 防火墙:
    • 启用 ufw 或 firewalld,仅开放必要端口(SSH:22, HTTP/HTTPS, 业务端口)。默认拒绝所有入站流量。

7. 监控与日志管理

  • 日志轮转:
    • 检查 /etc/logrotate.d/ 配置,确保系统日志(syslog, auth.log)和应用日志不会无限增长占满磁盘。
  • Prometheus Node Exporter:
    • 部署 Node Exporter,采集 CPU、内存、磁盘 I/O、网络流量等指标。这是构建统一监控平台的基础。
  • iBMC 告警集成:
    • 配置 SNMP Trap 或 IPMI Alert,将硬件故障(硬盘预测失败、电源异常)直接发送到你的监控系统(如 Zabbix, Prometheus + Alertmanager),实现硬件级别的主动预警。

总结 Checklist

  1. [ ] 确认 BIOS/BMC 固件版本符合浪潮兼容性列表。
  2. [ ] BIOS 中关闭 Secure Boot,开启 VT-x/IOMMU,电源策略设为 Performance。
  3. [ ] 使用 Ubuntu Server LTS ISO 安装,手动规划 LVM 分区。
  4. [ ] 安装后更新所有系统包:sudo apt update && sudo apt upgrade -y。
  5. [ ] 安装必要的硬件管理工具(ipmitool, storcli 等)。
  6. [ ] 配置 NTP、UFW 防火墙、日志轮转。
  7. [ ] 部署监控XX(Node Exporter)。
  8. [ ] 进行压力测试(IO 读写、网络吞吐),验证驱动正常工作。

遵循以上步骤,可以最大程度避免因硬件驱动冲突、固件不兼容或配置不当导致的系统不稳定问题,确保 Ubuntu Server 在浪潮物理服务器上高效、稳定运行。