ARTICLE DETAIL

资讯详情

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

麒麟服务器排障实战:版本识别、软件源与高频问题处理

麒麟服务器排障实战:版本识别、软件源与高频问题处理 简介面向运维人员与系统管理员的银河麒麟高级服务器操作系统V10 SP2常见问题手册覆盖从系统安装配置、本地源搭建到服务部署的完整链路。资源以PDF格式提供共1个文件包大小2.76MB内容包含ftp、内网源、nfs、ntp、snmp、iscsi等常用服务配置方案以及进单用户方式、本地yum源搭建、bond创建、vnc搭建、软raid创建、防火墙管理等进阶操作指导。手册还针对系统安装失败、激活失效、忘记密码、ssh连接异常、图形界面闪退等高频疑难场景给出分步骤的排查思路与具体命令目录结构清晰按解决方案和问题处理两个模块组织便于快速查阅。目前已有634人学习下载。对正在使用或计划迁移至麒麟系统的运维工程师而言手册能有效缩短问题定位时间降低从传统服务器转向国产系统的试错成本是一份即查即用的实用手册。1. 麒麟服务器与系统常见问题排查先分清版本再动手接手一台报障的麒麟服务器第一件事不是猜测“系统坏了”而是先确认手里拿的到底是哪一版麒麟。银河麒麟V10的服务器版和桌面版、x86与ARM版排障命令和软件包完全不是一套。我在实施现场反复踩过重启后网卡不启动、yum 404、wine应用白屏、打印机服务掉线这些都是高频问题但大部分根因不是系统崩溃而是版本没摸清就套用了CentOS的老经验。这篇把麒麟服务器和系统常见问题梳理成一套可复现的排查路径先认版本、再配软件源然后按网络、图形问题、虚拟化、打印逐项排。适合正在做麒麟适配、机房交付或系统加固的运维和交付工程师照着命令走能省一到两小时的误判时间。2. 摸清系统底细银河麒麟V10版本矩阵与软件源选型2.1 银河麒麟V10版本矩阵服务器版/桌面版、x86/ARM怎么选银河麒麟V10是当前最常见的版本号但它不是一个单一系统。按产品线分有服务器版和桌面版按CPU架构分有x86_64和aarch64飞腾、鲲鹏版本。这两个维度的排列组合决定了软件包格式、内核参数和排障工具互相之间的rpm包绝大多数不通用。维度区分方式对排障的影响产品线服务器版 / 桌面版服务器版默认不带图形桌面软件源组成不同很多桌面组件装不上CPU架构x86_64 / aarch64包管理器按架构过滤混用报“not compatible”大版本V10 / V10 SP1 / V10 SP2内核版本和yum源配置差异部分老SP源已下线我见过最典型的翻车把桌面版的安装包复制到服务器版上用dnf安装结果依赖拉进来一堆X11库系统环境被搞乱最后只能重装。任何排障动作之前先把版本信息打在屏幕上至少不会跑偏。2.2 用命令确认系统信息拿到准确的软件包元数据确认版本不靠肉眼靠命令。以下四条命令在麒麟V10上都能跑前两条是麒麟自带或定制的后两条是通用排查# 发行版与版本号确认是不是银河麒麟V10 cat /etc/os-release # 麒麟内核与版本信息工具比 uname -r 显示更完整 nkvers # CPU 架构x86_64 还是 aarch64决定软件包源 uname -m # 当前内核版本 uname -rnkvers是银河麒麟特有的命令输出里包含内核版本、操作系统版本、编译时间比uname多出麒麟自己的构建标识。判定版本后再拉取软件源命中率会高很多。uname -r要重点看是否有.kylin字样这个标识直接说明内核是麒麟定制还是原版内核定制内核在加载第三方驱动时容易遇到版本签名问题。实际操作里把这几条命令的输出保存到本地后续所有排查的基线都以它为准。2.3 软件源配置在线源、本地源与离线rpm包的三条路麒麟V10服务器版x86继承了类RHEL8的仓库结构分BaseOS和AppStream两个主仓库。在线装软件首选官方源但内网环境往往访问不了外部源最常见做法是挂载ISO做本地源或者下载rpm包离线安装。选择顺序建议是在线源 本地ISO源 离线rpm包。# 本地源挂载麒麟V10服务器版ISO mkdir -p /mnt/kylin mount -o loop /data/KylinV10-Server-2022.iso /mnt/kylin # 检查ISO目录结构确认是 BaseOS/AppStream 还是 Packages 模式 ls /mnt/kylin # 生成本地仓库配置 cat /etc/yum.repos.d/local.repo EOF [local] nameKylin Local Repo baseurlfile:///mnt/kylin/BaseOS enabled1 gpgcheck0 EOF # 导入AppStream仓库 cat /etc/yum.repos.d/local-appstream.repo EOF [local-appstream] nameKylin Local AppStream baseurlfile:///mnt/kylin/AppStream enabled1 gpgcheck0 EOF # 清理缓存并确认仓库可识别 yum clean all yum repolist这里的gpgcheck0是内网本地源的标准做法因为ISO自带介质完整性验证关掉签名检查能避免内网环境里密钥未导入导致的public key not available报错。如果ISO目录名不是标准的BaseOS/AppStream而是Packages把baseurl改成file:///mnt/kylin/Packages。另外各SP版本的ISO最好单独挂载不要把SP1和SP2的包混进同一个仓库yum会因依赖版本比对失败而陷入循环报错。离线rpm包安装有个实用细节yum install ./xxx.rpm会自动解析本地rpm的依赖并尝试从已启用的仓库补齐比rpm -ivh更省心。在完全没有源的机器上可以用yum localinstall配合--skip-broken但别轻易加该参数否则依赖缺失会在运行阶段才暴露。3. 高频故障排查网卡重启失联、修复助手、字体和时间同步3.1 重启后网卡不启动NetworkManager 与 ifcfg 的托管之争麒麟V10服务器版安装完后最常见的现象是配置静态IP写入/etc/sysconfig/network-scripts/ifcfg-ens*重启机器后网络起不来。不少老工程师第一反应是改ONBOOTyes改完systemctl restart network结果还是不生效。真实的坑在于NetworkManager与网络脚本的托管关系。麒麟服务器版默认由NetworkManager管理网络设备但ifcfg文件仍被读取。问题通常出在NM没有加载这个配置或者连接名称与配置文件不匹配。优先用nmcli操作尽量避免手改脚本# 查看设备当前托管状态 nmcli device status # 把设备设为由 NM 管理防止unmanaged状态 nmcli device set ens33 managed yes # 修改现有连接为静态IP配置 nmcli connection modify ens33 ipv4.method manual \ ipv4.addresses 192.168.1.100/24 \ ipv4.gateway 192.168.1.1 \ ipv4.dns 223.5.5.5 # 激活连接这一步等效于老思路里的重启网络 nmcli connection up ens33nmcli connection modify直接写进NM的connection配置文件和ifcfg-ens33联动比手工编辑更可靠。命令里的ipv4.dns按你所在网络的DNS改内网环境务必先确认网关可达。排查时先跑nmcli device status看到状态是unmanaged就是NM没接管按上述步骤执行即可。另外注意麒麟桌面版的网络图标变灰、显示“未托管”也是同一个原因。3.2 麒麟系统修复助手能用与不能用的边界自带的“麒麟系统修复助手”在图形化系统的开始菜单里能找到它在三类场景下确实有用开机引导损坏黑屏只到GRUB、系统包依赖错乱、用户忘了重置root密码。但用它之前要搞清楚它修复的是系统软件层面的问题不是硬件问题也不是驱动兼容问题。磁盘坏道、固件故障、内核模块不匹配修复助手只会提示“修复失败”不会给你更多信息。我一般把修复助手当作图形化入口真正的排障用命令行收尾。引导修复的等效命令是这两条# 重建 initramfs修复内核模块缺失导致的启动失败 dracut -f /boot/initramfs-$(uname -r).img $(uname -r) # 重写 GRUB2 配置并重装引导 grub2-mkconfig -o /boot/grub2/grub.cfg grub2-install /dev/sdadracut -f用于强制重建适用于系统在内核升级后能进图形界面但某些服务模块加载失败的情形。grub2-install的目标磁盘是启动盘设备名需要先用lsblk确认填错会覆盖其他磁盘的引导区这是真实踩过的现场事故。修复助手修完后如果重启依旧异常检查/var/log/messages报错里包含dracut字样时回到命令行处理比反复点修复更高效。3.3 字体下载安装与显示异常中文字体失效怎么办麒麟桌面版应用界面里的中文变成方块或者显示为乱码多数是字体配置损坏或者中文字体包没有装全。老牌的“麒麟系统字体下载”需求对应的场景通常是用户拷贝Windows下的宋体/黑体文件到麒麟结果放了.ttc格式。麒麟基于fontconfig能读ttf/otf对ttc的兼容性视应用而定装完还是方块不代表系统坏了。# 看当前系统可用的中文字体确认问题是不是缺字体 fc-list :langzh | head # 建立字体目录并拷贝字体文件支持 wqy、Noto、思源黑体 mkdir -p /usr/share/fonts/chinese cp ./SourceHanSansCN-Regular.otf /usr/share/fonts/chinese/ # 重建字体缓存让 fontconfig 识别新字体 fc-cache -fv /usr/share/fonts/chinese # 验证字体是否成功注册 fc-list | grep -i sourcehanfc-cache -fv的-f是强制刷新缓存-v输出详细过程正常会看到“fc-cache: succeeded”字样。字体文件权限必须是644、目录权限755权限不对时会静默跳过不报错这是典型的“命令执行成功但没效果”的原因。如果下载的是.otf注意较老的Qt4应用会无法识别优先使用.ttf格式。字体问题排查的最后一步是重启桌面会话而不是重启系统killall gnome-shell或注销重登避免解释成本。3.4 时间不同步引发的登录与证书问题改用国内时间服务器麒麟服务器加入AD域、执行等保基线检查、或访问HTTPS接口时系统时间偏差超过30秒就会出现莫名其妙的“登录失败”“证书无效”。这个问题伪装性强因为报错指向认证、指向证书但根因是NTP没配。麒麟默认时间同步服务是chronyd配置文件在/etc/chrony.conf。# 编辑时区与时间同步配置 vim /etc/chrony.conf # 把默认的 pool 注释掉换成国内可达的NTP服务器 server ntp.aliyun.com iburst server ntp.tencent.com iburst # 重启时间同步服务并验证 systemctl restart chronyd chronyc sources -v配置里的iburst参数很关键表示首轮同步前发送8个快速请求能明显缩短启动后的同步时间。chronyc sources -v输出中^*前缀表示该源已成功同步^?表示不可达。内网隔离环境没有外网访问权限时改成指向内网时间服务器地址配置格式不变。这里有一个追加注意点虚拟机托管在VMware或KVM宿主机上时关掉宿主机的“主机时间同步”选项否则chronyd和宿主要求会来回踢出现时间每周反复跳变。判断是否跳变看timedatectl status里System clock synchronized字段。4. 服务器专项场景虚拟机管理系统、打印服务与跨系统传文件4.1 银河麒麟虚拟机管理系统用 virt-install 创建一台麒麟虚拟机麒麟服务器上跑虚拟化常见方案是KVM配合自带的虚拟机管理系统。宿主机的CPU虚拟化标志要先确认否则建出来的虚拟机迁不迁嵌入式均为无解。确认命令是grep -Eoc (vmx|svm) /proc/cpuinfo输出为0说明BIOS没开虚拟化或者CPU不支持。# 安装KVM相关组件麒麟V10服务器版预装不全时需要补装 yum install qemu-kvm libvirt virt-install virt-manager -y # 启用并启动libvirtd服务 systemctl enable --now libvirtd # 创建一台名为 kylin-vm 的虚拟机安装源为本地ISO virt-install \ --name kylin-vm \ --vcpus 4 \ --memory 8192 \ --disk path/data/vms/kylin-vm.qcow2,size100,formatqcow2 \ --location /data/KylinV10-Desktop-2022.iso \ --os-variant centos8 \ --network bridgebr0 \ --graphics vnc \ --noautoconsole--vcpus和--memory按宿主机实际资源调整分配过大反而造成宿主机swap占用。--disk path指定qcow2镜像路径及其容量formatqcow2明确镜像格式避免与其他工具互认时产生歧义。--os-variant centos8是ARM麒麟服务器版上用不了x86_64版本用它是兼容性最稳妥的选项。--location也可以填http源但内网建议本地ISO。创建后virsh list --all能看到虚拟机状态virsh console kylin-vm进文本控制台。网络方面优先用virtio网卡模型性能更好安装RHEL类系统会自动加载驱动。4.2 打印服务驱动安装与“系统打印服务已关闭”排障打印机在麒麟桌面和服务器上都是重灾区。报“系统打印服务已关闭”本质是CUPS服务没有运行或运行后异常退出。先看服务状态再翻日志顺序不要反。# 打印服务状态确认 active 还是 failed systemctl status cups # 打印服务实际上由套接字激活先看监听端口 ss -lntp | grep 631 # 安装打印机驱动优先用厂商提供的麒麟版rpm yum install ./hplip-3.22.10-1.x86_64.rpm # 重启并确认状态 systemctl restart cups systemctl status cupsss -lntp | grep 631这一步很多人跳过。CUPS的默认监听端口是631服务显示正在运行但端口没监听表明绑定失败多半是IPv6/IPv4双栈冲突或/etc/cups/cupsd.conf中Listen行被注释。安装驱动后建议跑lpinfo -v列出所有可用的打印机驱动和后端确认USB网络打印机是否被识别。如果lpinfo输出里没有socket://或usb://条目说明驱动后端没装上重装驱动包比重启服务有效。驱动装好后用lpadmin添加远程打印机地址格式socket://192.168.1.20:9100-m指定PPD文件就不细展开了。4.3 与 Windows 互传文件麒麟系统里照片打不开的真实原因“照片在麒麟系统网传后打不开”是典型跨平台故障问题不一定出在麒麟上。最常见的原因有三个传输过程中文件损坏、文件格式被改名、文件路径里的中文编码错乱。先看真实文件格式再做决定。# 用 file 命令识别真实类型不被扩展名迷惑 file /mnt/share/IMG_001.jpg # 挂载Windows共享目录时指定编码和SMB版本 mount -t cifs //192.168.1.10/share /mnt/share \ -o usernameuser,passwordpass,vers3.0,iocharsetutf8file输出的信息里会标明JPEG/HEIC/PNG。如果显示HEIC而麒麟默认看图器不支持转成JPEG再打开别直接改扩展名。iocharsetutf8能让中文文件名在挂载后正常显示避免“找不到文件”的假象。跨平台传输还有一个隐藏坑Windows端传到麒麟时把文件放到了带空格或超长目录路径里麒麟图形界面能看见命令行Perl脚本常规处理会出问题用小工具smbclient远程取文件反而能避开挂载限制。实际工作中我通常在麒麟端用samba-client直连Windows共享将文件复制到本地后再用file验证不直接双击打开共享目录里的文件。5. 麒麟服务器避坑清单五个常见问题的踩坑记录5.1 yum install 报 404仓库源过期不是包不存在现象执行yum install httpd报错提示Error: Failed to download metadata for repo appstream或者404。很多新手以为是软件包被删除了反复去换镜像源。原因麒麟V10的官方在线源在特定SP版本停止支持后会被下线旧仓库地址失效。也可能是本地ISO源挂载目录被卸载仓库配置里还有残留记录。解决先跑yum repolist确认repo数量与名称再跑yum clean all清缓存排除元数据缓存问题。仓库失效时/etc/yum.repos.d/下指向旧版本的repo文件要替换为可用的新源或本地源不要用CentOS源直接替换。麒麟源结构是RHEL8风格但内部包的版本混合了麒麟定制内容CentOS源会导致依赖冲突。这条是麒麟运维里代价最高的一课重装系统的成本远大于细看一眼仓库配置。5.2 虚拟机里装完麒麟网络不通网卡类型选错现象在VMware或OpenStack里新建了一台麒麟V10虚拟机安装界面里网络是通的装完之后IP地址无法获取ip addr看不到网卡或有网卡没IP。原因虚拟机模板默认使用e1000网卡但部分麒麟内核构建时未包含e1000驱动导致安装完成后网卡设备丢失。也可能是在创建虚拟机时未选择“桥接模式”虚拟机只能NAT上网DHCP获取失败。解决在宿主机平台上把虚拟机网卡类型改为virtio重启虚拟机后ip addr能看到eth0。如果virtio驱动也没加载尝试加载内核模块modprobe virtio_net echo virtio_net /etc/modules-load.d/virtio_net.conf如果是VMware环境把网络适配器从e1000改为VMXNET3并重装VMware Tools麒麟V10对VMXNET3驱动支持更好。记住虚拟机里装麒麟网卡优先用paravirtualized类型别用模拟设备。5.3 网卡配置好重启失效ONBOOT 与 NetworkManager 冲突现象手动编辑ifcfg-ens33把ONBOOTyes然后systemctl restart network后网络正常但重启服务器后又失联需要进控制台手动ifup才能恢复。原因麒麟V10服务器版默认由NetworkManager管理网络systemctl restart network只是临时生效NetworkManager启动后重新接管并以自己的连接配置为准。而NM的connection配置与ifcfg-ens33字段对应性不强NM启动时没找到匹配连接设备变成unmanaged或down。解决不要再用旧习惯改ifcfg全部改用nmcli# 列出连接确认名称后修改 nmcli connection show # 修改连接的ONBOOT等效参数并设置自动连接 nmcli connection modify ens33 connection.autoconnect yes # 保存并激活 nmcli connection up ens33改完之后验证systemctl status NetworkManager确认NM是主导服务然后reboot测试不要偷懒只重启网络服务。生产环境里这块必须重启验证否则等于把隐患留给明天。5.4 打印机驱动装好服务挂了cups 的启动顺序与权限现象打印机驱动安装完成后执行systemctl restart cups服务状态显示failed再启动打印任务无响应客户端报“系统打印服务已关闭”。原因安装驱动rpm包时自动往/usr/lib/cups/filter和/usr/lib/cups/backend写入了动态库但动态库依赖的某个库版本不对CUPS启动时加载驱动动态库失败。另一个原因是服务启动时对USB设备权限不足udev规则未及时刷新。解决先看CUPS错误日志tail -n 50 /var/log/cups/error_log journalctl -u cups --no-pager -n 50日志里出现Unable to load driver时补装对应的依赖库。USB打印机出现Permission denied时systemctl restart systemd-udevd systemctl restart cups规则的优先级先确认驱动与系统版本匹配再查udev权限最后才考虑重新安装。直接重装驱动包解决不了库依赖问题只会重复报错。5.5 wine 助手装完应用白屏缺 32 位库与内核版本不符现象用麒麟的wine助手安装了Windows应用如旧版办公软件打开后窗口白屏或闪退没有任何错误弹窗。原因wine运行32位应用需要系统有32位库支持麒麟V10服务器版默认不装i686运行库。另外wine的图形渲染依赖OpenGL部分图形驱动下wine窗口输出异常。解决先看wine的位数和依赖# 确认当前wine是否支持32位 wine --version # 安装32位运行库麒麟源里有兼容i686的包 yum install glibc.i686 libX11.i686 mesa-libGL.i686 -y安装完成后运行winecfg在Libraries页签确认库加载是否正常。白屏问题多出在显卡驱动上把桌面切换成Xorg模式而不是Wayland模式能规避一部分渲染异常。wine排障的另一个有效手段是设置WINEPREFIX后重新初始化去掉旧的环境缓存WINEPREFIX/root/wine-env1 wineboot -uwine应用能不能跑取决于应用的运行库复杂程度。麒麟wine助手能解决一部分但复杂应用依然建议改用原生Linux版本或找厂商的适配版这条经验是用几次现场加班的代价换来的。6. 把排障经验固化成巡检脚本基线检查与批量验证做到这一步单台机器的故障基本能覆盖。接下来要解决的是“怎么证明这些配置在几十台机器上都是对的”。这个阶段我的习惯是写一个巡检脚本把版本信息、仓库状态、服务状态、磁盘水位一次打印配上SSH批量执行比一台台登录效率高很多。#!/bin/bash # kylin_check.sh 银河麒麟服务器巡检用法bash kylin_check.sh echo OS 版本 grep -E PRETTY_NAME|VERSION_ID /etc/os-release echo 系统时间与同步 timedatectl status | grep -E synchronized|Time zone echo 仓库状态 yum repolist | tail -n 5 echo 关键服务状态 for svc in NetworkManager chronyd cups libvirtd sshd; do state$(systemctl is-active $svc) if [ $state active ]; then echo $svc: OK else echo $svc: FAIL($state) fi done echo 磁盘使用率 df -h | grep -v tmpfs echo 空口令账户检查 awk -F: ($2){print 空口令: $1} /etc/shadow echo SSH 安全基线 grep -E ^PermitRootLogin|^PasswordAuthentication /etc/ssh/sshd_config脚本里的awk -F: ($2){print}是基线检查里最直接的探测空口令方法密码不为空时字段2是加密串为空则说明账户无口令。sshd_config检查只是粗筛生产环境还要看MaxAuthTries和AllowUsers。这个脚本配合for host in $(cat hosts); do ssh $host bash -s kylin_check.sh; done能完成小批量机器巡检机器多时换Ansible托管的ansible all -m script。我现在拿到任何一台麒麟服务器第一件事永远是那三条命令cat /etc/os-release、nkvers、yum repolist。这个习惯是在一次误判整晚、最后发现是仓库源失效的现场被逼出来的。巡检脚本本身不复杂但坚持用之后把“等故障来了再排查”变成了“定期确认环境不变”很多问题在影响业务前就暴露了。对新接手的环境先跑一遍脚本留个基线存档后面再用diff对比变化是最省心的运维方式。希望这些经验帮到你。本文还有配套的精品资源点击获取
返回列表