十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

信创平台运维高频故障排查实战指南

信创平台运维高频故障排查实战指南 干信创平台运维这行酸甜苦辣基本都尝遍了。刚开始接手的时候我天真的以为信创平台就是“换了张桌面的 Linux”结果被一个又一个的故障按在地上摩擦。直到后来我把这些坑一个个填平才真正意识到信创环境复杂的地方不是操作系统本身有多难而是“三种 CPU 架构 两套主流 OS 一堆国产数据库/中间件”叠加在一起之后再遇到形形色色的老业务软件随便哪个环节不匹配都会变成运维凌晨三点的夺命电话。这篇文章没什么大道理纯粹是我在一线摸爬滚打做信创平台运维时攒下来的真实案例和排查思路挑的全是 90% 的工程师都会遇上的高频故障。不管你是刚接手信创维保的桌面运维还是从传统 Linux 运维往国产化方向转型的工程师照着文章里的思路走一遍大概率能少走好几个月的弯路。1. 信创环境的真实面貌先摸清家底再谈故障排查1.1 三种主流芯片架构的高频认知误区我接过很多同事转过来的工单第一句话经常是“这台机器明明按照 CentOS 的方式装了软件怎么一运行就报错”。其实大多数时候不是系统坏了而是架构没对上。信创环境里常见的 CPU 架构大致可以分为三类x86 架构以海光、兆芯为代表指令集兼容 Intel/AMD兼容性最好很多旧软件可以直接跑。ARM 架构以鲲鹏、飞腾为代表能效比高服务器上见得最多但几乎所有二进制软件都要有对应的 ARM64 版本。龙芯架构以龙芯 3A5000/3A6000 为代表早期用过 MIPS 指令集现在主流是 LoongArch软件适配生态相对前两者更窄。你在终端里执行一条命令就能看清楚当前机器的架构uname -m输出结果常见的有x86_64、aarch64、loongarch64。这个信息是整个故障排查的地基因为后面安装软件、拉取容器镜像、下载驱动、选择数据库客户端全都要基于架构来做判断。我见过最典型的例子是有人在飞腾服务器上直接用了官网下载的 x86 JDK结果 Java 进程一启动就报“Cannot execute binary file: Exec format error”。原因说白了就是“插头不匹配”架构不同的二进制文件根本没有办法在另一种 CPU 上运行。这个认知不建立起来后面的故障排查就全是瞎猜。1.2 两套主流OS的差异与“迷之操作习惯”信创操作系统虽然品牌很多但主流基本可以归成两条线统信 UOS底层基于 Debian软件包管理习惯用apt。麒麟系列这里要特别说清楚银河麒麟和中标麒麟合并之后既有基于 Debian 的版本也有基于 CentOS/RHEL 的版本所以有的机器用apt有的机器用yum千万不能一概而论。很多传统 Linux 运维上手信创系统时第一反应就是“照着 CentOS 的操作习惯来”结果在 UOS 上敲yum install习惯性地去找源发现压根不好使在麒麟的 CentOS 兼容版上又习惯性地用apt折腾半天什么都装不上。这种“迷之操作习惯”带来的问题往往比系统本身的故障更耗时间。还有一个关键点信创操作系统的软件源通常指向官方源或者内网镜像源不要直接换成普通 Ubuntu/CentOS 的公共源。我见过有人图方便把 UOS 的源直接改成 Debian 源然后执行apt upgrade结果把桌面环境整个升崩了。信创 OS 的源在软件包的版本和依赖关系上做过定制混用公共源的风险极高这条后面会展开讲。2. 高频故障深度拆解五个让工程师凌晨加班的典型案例2.1 软件源与依赖地狱一条命令装软件反而卸载了桌面现象描述在统信 UOS 或基于 Debian 的麒麟系统上用户反馈“我跑了一条sudo apt install xxx结果系统崩了”重启之后桌面进不去只剩一个命令行登录界面甚至开机直接黑屏。背后原因这类事故十有八九出在软件源配置上。如果你把 UOS 的源替换成了 Debian 源或者在内网源同步的时候没有同步完整apt在安装新软件时会尝试对大量依赖包做版本升降级。一旦依赖解析出现问题apt可能会把桌面包、显卡驱动包、内核模块一起换掉。最终结果就是“软件没装上桌面没了”。另一种高发场景是混用yum和apt。有人在基于 Debian 的 UOS 上手动装了某个用rpm打包的软件然后又用apt去做依赖修复结果两边包管理器的数据库不一致系统直接进入依赖地狱。排查与处理步骤先别乱动系统。如果你还能进入命令行或者通过 SSH 登录第一件事就是把/etc/apt/sources.list和/etc/apt/sources.list.d/目录下的所有源配置备份出来。检查源配置里有没有非信创官方的源地址。如果发现普通 Debian 源或者第三方源立刻注释掉换回官方源或单位内网镜像源。执行依赖修复时先看apt --fix-broken install的模拟结果。建议先跑apt-get install -f --simulate如果模拟结果里出现大量Remv卸载包尤其是lightdm、gdm3、xserver-xorg、dde这类的桌面包千万不要直接执行。如果已经把桌面环境干掉了先从 LiveCD 启动进入救援模式挂载根分区后 chroot 进去重装桌面核心包例如apt install dde lightdm xserver-xorg最后检查一下显示管理器是不是被禁用或者开机默认进入多用户模式systemctl get-default systemctl set-default graphical.target实操心得在信创桌面上能通过应用商店安装的软件就尽量用应用商店装能不手动apt install就不要手动装。而且无论如何都不要在业务机器上执行全量apt upgrade或yum update尤其是没有做过内核版本锁定的环境。信创平台的软件包更新策略我后面会单独说这里先记住一句话稳定压倒一切。2.2 内核升级后网卡/显卡驱动“消失”现象描述某台服务器或桌面终端升级内核之后重启出现两种典型状况。一种是服务器直接没有 IP 了SSH 断连机房现场看发现网卡灯不亮另一种是图形桌面的机器开机后分辨率变得很怪要么黑屏要么只能进安全模式。背后原因Linux 的内核模块和内核版本是强绑定的。网卡驱动、显卡驱动这类第三方内核模块如果是在旧内核下编译的新内核起来之后通常不会被自动加载。信创机器的硬件组合又千奇百怪很多网卡用的是 Realtek、兆芯内置或者个别国产网卡芯片部分驱动在官方内核里根本没有必须依赖厂商提供的源码包重新编译。排查与处理步骤如果重启后还能进系统先看当前内核版本和已安装的内核列表uname -r rpm -qa | grep kernel # 麒麟 RPM 系 dpkg --list | grep linux-image # UOS Debian 系查看内核模块目录是否存在确认驱动模块编译产物ls /lib/modules/$(uname -r)如果发现某个驱动模块在旧内核目录下有、新内核目录下没有基本就是模块没适配。网卡问题优先检查加载模块是否需要手动指定dmesg | grep -i eth lsmod | grep 网卡芯片 modprobe 网卡模块名如果是编译型驱动重新执行/usr/src/厂商驱动目录里的安装脚本编译完成后用depmod -a更新模块依赖。显卡驱动问题相对麻烦尤其是 N 卡或者部分国产显卡。先看/var/log/Xorg.0.log里的报错确认驱动加载失败的位置。如果之前有备份过旧内核最简单粗暴的办法是重启时在 Grub 菜单里选择旧内核进入先把业务恢复。无论驱动是否成功编译都建议加载一次 DKMS 机制让内核升级时自动重新编译模块。另外把内核版本固定住比如用yum versionlock或apt-mark hold锁定当前内核包。实操心得信创机器升级内核之前先看厂商有没有发布适配新内核的驱动包。没有适配包的话不要轻易升级内核。我在实际项目里吃过一次大亏一台飞腾服务器的网卡驱动是厂商源码编译的我升级内核后没注意网卡驱动模块没编译上结果机房断电重启后服务器直接失联最后只能申请现场维护。后来我立了一条规矩所有信创机器升级内核前必须导出驱动清单升级后第一时间验证网卡和显卡状态不行就立即回滚。2.3 容器镜像架构不匹配x86镜像跑到ARM服务器上直接Segmentation fault现象描述在鲲鹏或飞腾服务器上通过 Docker 或 containerd 运行一个镜像结果容器一启动就报exec format error或者服务进程起来后立刻崩溃日志里都是Segmentation fault。还有一种情况是容器能跑但性能极差CPU 占用诡异。背后原因绝大多数镜像仓库里默认推送的是amd64架构的镜像。在arm64架构的机器上拉取镜像时如果仓库没有自动按照平台匹配拉下来的就是 x86 镜像。这个镜像里的二进制文件统统是 x86 指令集ARM CPU 根本执行不了所以会出现上面那几种现象。排查与处理步骤先确认当前服务器的架构uname -m查看已拉取镜像的平台信息docker image inspect 镜像名:tag --format {{.Architecture}}或者用docker manifest inspect 镜像名:tag输出里的architecture字段会明确告诉你镜像是amd64还是arm64。拉取正确的架构镜像一般规范仓库的镜像都会带-arm64或-arm64v8后缀多架构镜像则会自动匹配。如果要自己构建镜像建议用 buildx 一次性构建多架构docker buildx build --platform linux/amd64,linux/arm64 -t 镜像名:tag --push .如果业务上必须用某个只有 x86 版本的旧镜像短期内可以靠 QEMU 模拟运行应急但生产环境千万不要长期这么干性能损耗和稳定性都不可控。实操心得信创环境里做容器化一定要把“架构”这个概念刻进团队的运维规范里。建议在镜像仓库侧配置架构过滤规则或者在 Kubernetes 集群里通过 nodeSelector、污点容忍把不同架构的节点分组避免调度时把错误架构的镜像跑到错误的节点上。还有一个更隐蔽的坑即使是同一个镜像基础镜像源如果没有做多架构同步docker pull在 ARM 机器上拉下来的可能是 amd64 版本而且不报错只是跑不起来。所以规范的做法是在 CI/CD 流程里强制把架构信息写进镜像 tag比如应用名-v1.2.0-arm64从源头上隔离。2.4 国产数据库/中间件字符集、时区与JDBC参数引发的乱码和连接故障现象描述应用系统完成信创改造后业务人员反馈页面上中文显示乱码或者日期时间差了 8 个小时又或者应用日志里出现Access denied、Connection reset等奇怪的数据库连接错误。有些系统干脆报“ORA-”开头的错误码一看就是兼容层的问题。背后原因国产数据库达梦、人大金仓、openGauss 等对标准的 SQL 支持基本没问题但对 JDBC 连接参数、字符集、时区的处理习惯和国际通用数据库不太一样。最常见的三个坑数据库实例初始化时字符集设置不对默认可能是 GBK 或 GB18030而应用层写入和读取使用 UTF-8中文自然乱。JDBC URL 缺少字符集和时区参数例如没有characterEncodingUTF-8、没有serverTimezoneAsia/Shanghai。应用服务器的系统时区没有设置为东八区叠加数据库时区默认值导致应用查询出来的时间字段相差 8 小时。排查与处理步骤先看数据库的字符集配置。以达梦为例可以用管理工具连上去执行SELECT * FROM V$PARAMETER WHERE NAME LIKE %CHARSET%;或者通过初始化参数查看。如果是建库时定死了 GB18030应用侧尽量用characterEncodingGB18030先保证不乱码中期再做字符集迁移。检查应用 JDBC 连接串。一个典型的达梦连接串长这样jdbc:dm://192.168.1.10:5236/DMSERVER?useUnicodetruecharacterEncodingUTF-8serverTimezoneAsia/Shanghai人大金仓的驱动是基于 PostgreSQL 的连接串参数类似 PG同样要显式指定characterEncoding和时区。检查数据库服务端时区SELECT NOW();如果返回时间和北京时间不一致修改数据库参数和操作系统时区。Linux 侧强烈建议统一使用timedatectl set-timezone Asia/Shanghai中间件层面需要关注 JVM 默认编码。在 Java 应用的启动脚本里加上-Dfile.encodingUTF-8 -Duser.timezoneGMT08实操心得信创平台上改造老应用很多问题本质上不是“代码要重写”而是“连接参数和运行环境没对齐”。我接手过一个 OA 系统业务数据写入数据库后中文能正常显示但是 JSP 页面从库里读出来就乱码查到最后发现是 JDBC 连接池的 initialSize 配置里缺了characterEncodingUTF-8页面层编码又是 GBK两头不统一。这种问题在传统数据库上可能不明显因为部分驱动有自动检测机制但国产数据库的驱动在容错性上还比较挑参数所以连接串上把参数写全等于给自己省事。2.5 外设、打印机与高拍仪最平凡也最折磨人的兼容性故障现象描述桌面终端迁移到信创操作系统之后最常见的麻烦往往不是业务系统而是打印机、高拍仪、扫描仪、USB-Key 这类外设。打印机添加后一直提示打印失败或者打印出乱码高拍仪打开软件黑屏U 盾插上后浏览器读不到证书。背后原因外设驱动的生态在国产操作系统上一直是个短板。很多老型号外设的驱动只提供了 Windows 版本厂商没有适配 Linux/信创系统。另外不少 USB 外设缺少 udev 规则系统默认没有给当前用户分配设备访问权限。而像打印机这类设备信创 OS 自带的驱动库里如果缺少对应 PPD 文件就只能靠用户手动指定通用驱动效果自然不理想。排查与处理步骤先把外设连接到机器用lsusb确认设备有没有被系统识别到。如果lsusb能看到厂家 ID 和产品 ID说明硬件链路是通的问题大概率出在驱动或权限。用dmesg | tail -50查看内核日志。如果提示permission denied或者cannot enable就是 udev 规则问题。可以手动创建规则文件给当前用户授权sudo vim /etc/udev/rules.d/99-usb-key.rules写入类似内容SUBSYSTEMusb, ATTR{idVendor}厂商ID, ATTR{idProduct}产品ID, MODE0666打印机问题先走系统自带的“打印机设置”添加设备尝试用系统自带的通用驱动比如Generic PCL 6做一次测试打印。如果乱码换Generic PostScript驱动再试。有些打印机需要通过厂商给出的 Linux PPD 文件手动安装可以去设备厂商官网找“信创适配”“国产操作系统”相关的下载入口。高拍仪、扫描仪类设备优先看应用软件是否支持 V4L2 协议或者厂商是否提供 Linux 版 SDK。如果是纯 Windows 驱动设备基本没有好的兼容办法建议直接更换支持信创环境的型号别浪费时间折腾。实操心得外设问题的根子其实在采购环节。单位里如果已经在推信创平台采购外设之前一定要让供应商书面承诺支持统信 UOS 或麒麟系统最好提供适配认证证书和 Linux 驱动。等设备到货之后在测试机上先把驱动装一遍、功能验一遍再批量部署。采购的时候多花十分钟问清楚后面运维能少加一整年的班。3. 故障排查三板斧日志、救援与可复现实验3.1 journalctl 与 dmesg先看日志再动手能节省80%时间很多刚转信创运维的工程师碰到问题第一反应是查论坛、问群里。我的习惯正好相反先看日志日志里没有明确线索再去查资料。因为信创平台的软件版本组合太复杂别人遇到的情况很难完全复刻到你的环境里只有本机日志才是“现场证据”。日志排查的两个核心命令journalctl -xe-e是跳到日志末尾-x是补充说明。桌面端或者服务端报错时这条命令能快速告诉你最近发生了什么。journalctl -u 服务名 --since 30 minutes ago这条用来定位某个具体服务的错误非常高效比如lightdm、sshd、nginx。内核层面的问题驱动、硬件要用dmesgdmesg -T | grep -i error-T参数把时间戳转换成可读时间方便对照故障发生时间。我处理过一个典型故障用户报告某台 UOS 桌面开机卡在 Logo 页怎么等都进不去图形界面。我用 LiveCD 起来挂载根分区后执行journalctl -u lightdm --since 2025-06-01 09:00:00日志里明确写着磁盘空间不足/分区使用率 100%。接着用df -h确认发现是/var/log被某个疯狂刷日志的进程打满了。清掉日志、重启 lightdm 服务问题直接解决。如果不动日志直接去修桌面可能折腾一天都找不到病因。3.2 LiveCD救援系统起不来时的救命稻草信创系统版本复杂系统起不来、引导损坏、忘记 root 密码这类问题靠常规手段很难在线修复这时候直接从 LiveCD 启动进入救援模式是最稳妥的办法。统信和麒麟都有自己的官方 LiveCD 维护工具可以制作一个 U 盘启动盘。具体操作步骤大概是在能正常工作的机器上下载对应发行版、对应 CPU 架构的 LiveCD 镜像用dd或者官方启动盘制作工具写入 U 盘。把 U 盘插到故障机器上开机进入 BIOS/UEFI 启动菜单选择从 U 盘启动。进入 Live 环境后挂载故障机器的根分区。先lsblk确认分区名假设根分区是/dev/sda2sudo mount /dev/sda2 /mnt sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/syschroot 进入系统环境sudo chroot /mnt根据需要执行修复操作重置用户密码passwd 用户名、重新生成 grub 引导grub2-mkconfig -o /boot/grub2/grub.cfg、卸载掉导致崩溃的驱动包等。退出 chroot重启机器。实操心得LiveCD 救援盘一定要提前做好而且要保证和现网机器同架构。我见过有人拿着一台 x86 的 LiveCD 去弄 ARM 服务器U 盘插上去压根启动不了。另外如果你在 chroot 环境里修复驱动时网络不通记得先把/etc/resolv.conf拷进去不然连软件源都访问不了。3.3 最小复现与变更记录不重现的故障最难修信创环境里有些故障不是稳定的今天报一次明天不报后天又出现。这类“幽灵故障”最耗人的精力。我的经验是不要漫无目的地猜而是想尽一切办法做最小复现。有一次用户反馈一台桌面机每天下午三点左右会短暂卡死几十秒我去现场看的时候一切正常。后来我看了系统里的 crontab 和周期性任务发现下午三点正好有一个系统自带的临时文件清理任务在跑同时杀毒软件也在这个时间点做全盘扫描两者叠加把磁盘 IO 拉满了。找到规律后我把两个任务的触发时间错开故障就消失了。这个案例能成立靠的是完整的变更记录和任务清单。所以我现在每到一批新的信创机器第一件事就是把所有主机的计划任务、服务自启项、内核参数、软件源配置全部采集归档。信创平台“搜不到现成答案”的场景很常见但你的运维记录就是最好的答案来源。4. 日常运维最佳实践把故障提前挡在大门外4.1 用 Ansible 批量巡检与基线修复信创平台往往以一个批次为单位推广动辄几十台甚至上百台桌面终端和服务器。靠手动一台台登录去检查系统和改配置效率低不说还容易漏掉个别机器。我建议从一开始就引入 Ansible 做批量运维。一个最简单的巡检 Playbook 可以这样写先用来收集所有机器的基础信息- hosts: all gather_facts: yes tasks: - name: 收集操作系统发行版 command: cat /etc/os-release register: os_release - name: 收集内核版本 command: uname -r register: kernel_version - name: 收集内存和磁盘状态 shell: free -h df -h / register: system_status - name: 输出结果 debug: msg: - OS: {{ os_release.stdout }} - Kernel: {{ kernel_version.stdout }} - Status: {{ system_status.stdout }}再比如统一修复软件源配置。先把正确的源文件放在 Ansible 控制端的files/目录下然后批量下发- hosts: all tasks: - name: 下发信创源配置 copy: src: files/ossources.list dest: /etc/apt/sources.list when: ansible_os_family Debian执行前先加一个--check参数做演练确认改动范围符合预期再真正执行。实操心得信创机器用 Ansible 时要特别注意 Python 环境。部分精简过的国产系统默认 Python 版本较低可能导致 Ansible 的模块执行报错。我习惯在控制端统一使用较新的 Python 版本并且尽量用command、shell、copy这类基础模块少依赖第三方模块提高兼容性。4.2 补丁与升级策略宁稳勿新传统互联网公司讲究“快速迭代”但信创环境里的业务往往对稳定性要求极高尤其是财务、医疗、政务服务这类场景。所以在补丁和升级策略上我始终坚持“宁稳勿新”。具体操作上有几条经验建立内网软件源镜像定时从官方源同步更新包不给生产机器直接访问外网源的权限。这样既能保证补丁及时性又能避免源漂移问题。补丁分级安全补丁尤其涉及 SSH、内核提权漏洞的优先打功能性更新按季度评估后再打内核和显卡驱动这类高风险更新非必要不打。每次升级前必须记录当前版本做好系统盘快照或者虚拟机快照。如果有条件先在一台测试机上升级验证再小批量灰度推广。对关键机器执行内核版本锁定。UOS 可以用apt-mark hold linux-image-xxx麒麟 RPM 系统可以用yum versionlock kernel。防止有人手滑执行了全量更新。4.3 备份、应急与演练信创平台经过多年运行积累的业务数据越来越重要备份和应急体系的优先级应该排在所有工作前面。我通常建议至少做到这几层备份系统层服务器系统盘做整盘镜像备份建议用dd或者官方备份工具在重大变更前执行一次。配置层/etc目录以及应用配置目录做定期增量备份备份频率取决于变更频率。数据库层使用国产数据库自带的备份工具做逻辑备份和归档日志备份测试恢复流程别等到事故发生了才第一次演练。应急演练方面我建议每半年做一次“系统盘损坏快速恢复”演练。从备份镜像恢复到新机器上记录完整耗时。我在项目上做过一次演练结果发现数据库备份文件在备份服务器上已经静默损坏了原因是备份脚本虽然每天都执行但从没做过恢复验证。从那以后我定了一条铁律备份不验证等于没有备份每次演练必须包含一次真实恢复。5. 常见问题速查表日常处理工单时我习惯把问题和解法整理成速查表直接丢给一线同事对照处理。下面这几条是我觉得信创平台最常遇到的你可以直接抄到自己的运维手册里。故障现象可能原因快速排查方式推荐处理办法apt install 后桌面崩溃源配置错误/依赖被破坏journalctl -u lightdm --since 10 minutes agoLiveCD 进入救援模式重装桌面核心包重启后网卡没 IP内核升级后驱动模块缺失uname -r对比旧内核旧内核启动恢复重编驱动锁定内核版本容器启动报 exec format errorx86 镜像跑在 ARM 机器docker manifest inspect 镜像换 arm64 镜像或构建多架构镜像应用中文乱码数据库字符集/连接串参数不匹配查询数据库字符集参数修改 JDBC URL 增加 characterEncodingUTF-8打印机打印乱码驱动不匹配查看 CUPS 打印机队列状态更换通用驱动或安装官方 PPD 文件USB-Key 无法识别缺少 udev 权限规则lsusb确认设备存在添加 udev 规则并 reload修改系统问题后无法启动grub 引导损坏尝试进恢复模式LiveCD chroot 执行 grub2-mkconfig最后再分享一个我个人的体会。信创平台运维和传统 Linux 运维最大的不同是“出问题后百度和论坛上经常搜不到现成的答案”。传统环境里碰到报错复制错误信息一搜大概率能翻到完全一致的解决方案但在信创环境里硬件和软件的组合千差万别哪怕错误信息一样底层原因也未必相同。所以不要依赖“抄答案”要养成“看日志、找规律、再验证”的习惯把每次踩过的坑都整理成自己团队的工单台账。干上三个月之后你会发现身边最值钱的不是某个命令而是你积累下来的那一套针对自家信创环境的排障经验。这套经验才是运维工程师真正越老越吃香的底气。
返回列表