☰
openEuler系统维护实战:从安装规划到故障排查的完整指南
2026/10/8 14:46:35 网站建设 项目流程

提到欧拉,数学圈的朋友第一时间想到的是欧拉函数、欧拉筛这些精巧的数学工具;运维圈的朋友想到的,多半是装了openEuler操作系统的服务器。这两个“欧拉”其实有一个共同气质:严谨。欧拉函数算错一位,整个推导就崩了;欧拉系统维护漏看一条日志、少配一个参数,生产环境可能就安静地出问题。

这篇文章就是我这一段时间维护欧拉系统(openEuler)的实际总结,面向的是Linux运维、服务器管理员,以及准备在服务器上跑欧拉系统的个人开发者。内容覆盖从安装规划、图形化界面配置,到日常更新、服务管理、日志分析、磁盘网络维护、安全加固、故障排查的完整链路。我把能直接抄作业的命令、参数和思路都放在里面了,希望帮你把维护工作从“被动救火”变成“有序保养”。

1. 维护从安装规划开始:认知与布局

1.1 欧拉系统的定位与维护思路

在动手维护之前,先要搞清楚自己面对的是一个什么样的系统。openEuler目前主要面向服务器和数据中心场景,它也提供桌面环境组件,但本质上更像个“服务器底子”。它的软件包管理走的是Red Hat系列那套,dnf/yum都能用,systemd做服务管理,这在维护思路上跟CentOS、Rocky、Fedora颇为接近。

所以我在整个维护过程中一直坚持一个原则:把欧拉系统当作一个成熟的企业级Linux发行版来对待,而不是当作某种特殊玩具。这意味着:

  • 不随手关闭SELinux,除非确认业务兼容性;
  • 严格执行最小安装和按需装包;
  • 定期做更新,但在生产环境会提前做兼容性评估;
  • 统一命名和管理配置,避免“每台机器一个样”。

我见过不少朋友一拿到系统就先把SELinux关了,防火墙也停了,理由是“方便”。短期确实方便,等真出了安全事故、或者等后来想加固,再开SELinux就发现一堆坑。我这边负责的一批机器,坚持不关SELinux,配合正确放行规则,系统运行一直很稳。

1.2 安装规划:磁盘、分区、图形化界面怎么选

安装欧拉系统有几个关键决策点,这些决策决定了后续维护的难度。

第一,磁盘规划。我建议服务器场景用LVM而不是直接怼裸分区。LVM的好处是后续扩容方便,遇到分区不够用不用重新做系统。给个参考:

  • /boot:1GiB左右,ext4,启动文件和内核镜像用;
  • swap:物理内存的1到2倍,或者按业务峰值评估;
  • /:剩余空间的相当一部分,比如30到50GiB;
  • /var:如果有大量日志、容器镜像,建议单独分出来,20到50GiB起步;
  • /home:视情况独立分区,很多时候不用给它太多空间。

如果只是个人测试用,也可以单分一个根分区加swap,甚至不做swap直接上swap文件。

第二,安装介质与引导。可以从官网下载ISO,开机引导后选择“Install openEuler”,设置语言和时区,配置安装源与安装包选择,磁盘分区按前面说的思路来,然后设置root密码和创建用户,等待安装结束重启即可。

第三,图形化界面。很多朋友搜索“欧拉操作系统安装图形化界面”,其实图形化在服务器场景里不是必需品,但如果你确实需要(比如跑桌面应用、给非运维同事用的内网机器),可以在安装时就勾选相应的包组,例如“图形化环境”或“带图形的服务器”,这比事后补装省事很多。也可以在装好之后用命令行补装。

我个人的建议是:能不用图形化就不用。服务器维护的主要方式是SSH,图形化界面除了占资源、多一层攻击面,对维护工作本身帮助不大。如果你只是想用浏览器做监控,那装个Web控制台类工具比整套桌面环境划算得多。

1.3 安装后的初始化检查清单

系统装完、能ping通,这只是开始。我每次装完一台欧拉机器,都会按下面的清单过一遍,避免后面出幺蛾子。

  1. 更新系统:dnf update -y,装完之后确认内核版本;
  2. 确认主机名和解析:hostnamectl set-hostname,检查/etc/hosts,把主机名和IP对应关系写清楚;
  3. 配置时间同步:装chrony,配好NTP源,时间不同步在运维里是最容易被忽视却影响很大的问题;
  4. 确认SSH服务:检查/etc/ssh/sshd_config,确认PermitRootLogin策略、密钥登录是否启用;
  5. 配置防火墙:firewall-cmd --list-all,放行需要暴露的端口;
  6. 检查SELinux状态:getenforce,别一上来就设成disabled,至少设置成enforcing并配好放行规则;
  7. 校验存储:lsblk、df -h,确认分区挂载;
  8. 创建日常运维账号:不要所有操作都顶着root干,独立账号配合sudo才是正道。

这些步骤看着基础,但每次重新执行一遍都能规避大量后期问题。

2. 日常维护三板斧:更新、服务与日志

2.1 软件包管理:dnf/yum与镜像源配置

欧拉系统的软件包管理沿用了dnf/yum体系。有些老运维习惯只记yum,实际上在欧拉系统上,yum可能只是一个到dnf的符号链接,底层动作都由dnf完成为主。

日常维护里,我依赖最多的几个操作:

  • 查包:dnf list --installed | grep xxx、dnf provides /path/to/file,判断文件属于哪个包;
  • 装卸载:dnf install -y nginx、dnf remove -y xxx,remove前建议先看依赖影响;
  • 检查更新:dnf check-update;
  • 应用更新:dnf update -y,内核更新后记得重启;
  • 历史回滚:dnf history list、dnf history info N、dnf history undo N,在出问题时可以快速还原。

关于镜像源,换源时要小心:先备份原有repo文件,然后编辑/etc/yum.repos.d/下对应的repo文件,把baseurl换成可用的镜像地址,dnf makecache重建缓存,再dnf update验证。

换源经验谈:别只改baseurl不改gpgcheck策略,半吊子配置最容易导致“明明改了源,安装还是报错”。如果你搞不清某个repo文件是谁在维护,就先ls /etc/yum.repos.d/看清楚,再下手,别一把梭全删了然后源彻底不可用。

2.2 服务管理:systemd单元文件的正确维护姿势

服务管理是系统维护的心脏。欧拉系统用systemd,常用命令大家也熟:systemctl start/stop/restart/status/enable/disable xxx。

我觉得容易被忽略的有几个细节。

第一,systemctl status只看状态还不够,要养成journalctl -u xxx -n 50 --no-pager的习惯。status显示的是“这个服务当前是否活着”,journal能看到它怎么活的、活得舒不舒服。

第二,改完服务单元文件(/usr/lib/systemd/system/xxx.service或/etc/systemd/system/下的覆盖文件)之后,必须执行systemctl daemon-reload,否则改了半天服务根本不会按新配置重启。

第三,写自己的服务单元文件时,注意几个字段:

  • After=和Requires=定义启动顺序依赖;
  • Restart=设置为always或on-failure,配合RestartSec=避免服务崩溃后一直重启无脑刷日志;
  • 服务尽量用专用用户跑,User=和Group=不要留空。

我给一个自写服务单元文件的习惯模板:

[Unit] Description=自定义业务服务 After=network.target [Service] Type=simple User=appuser Group=appgroup ExecStart=/usr/bin/python3 /opt/business/main.py Restart=on-failure RestartSec=5 EnvironmentFile=/etc/sysconfig/business [Install] WantedBy=multi-user.target

写完之后执行systemctl daemon-reload && systemctl enable --now xxx。

第四,排查服务启动失败先看两个地方:journalctl -u xxx -e和systemctl cat xxx。前者看日志,后者看服务定义,十有八九问题就出在命令路径不对、参数引号丢了、权限不够、缺依赖这四类情况。

2.3 日志体系:journalctl与标准日志分析思路

日志是排障的第一现场。欧拉系统默认用journald集中管理日志,配合rsyslog也可以。

我比较常用的排查套路:

  • 看最近日志:journalctl -xe
  • 按时间范围过滤:journalctl --since "2024-01-01 00:00:00" --until "2024-01-01 12:00:00"
  • 按服务过滤:journalctl -u nginx.service --since today
  • 按进程号过滤:journalctl _PID=1234
  • 看内核日志:journalctl -k
  • 看上次启动以来的开机日志:journalctl -b 0

分析日志的核心思路,我一直跟团队讲三步走:先锁定时间窗口,再锁定服务或进程,最后从错误行往上翻上下文。不要一上来就搜ERROR,很多故障的根因在ERROR上面几行就埋着。

还有一点,日志量大的服务要配置轮转。别等/var/log分区被撑爆再处理。如果发现磁盘有告警,先看大文件:du -sh /var/log/* | sort -rh | head,然后决定是清理还是改轮转策略。

3. 稳定性保障:存储、网络与性能监控

3.1 磁盘与文件系统的维护实操

磁盘维护是服务器运维的高频工作。欧拉系统的文件系统默认常见的是ext4和xfs,我自己更偏爱xfs多一点,主要看重它在高吞吐和大文件场景下的表现,但日常维护步骤大同小异。

常用步骤:

  • df -h看使用率,df -i看inode,inode耗尽比空间满更隐蔽,典型的“df显示有空间,但就是写不进去”;
  • lsblk -f看文件系统类型和挂载点、UUID;
  • journalctl或dmesg | tail看是否有磁盘I/O报错。

LVM操作也绕不开。比如根分区不够了:

  1. 添加一块新盘,lsblk确认设备名;
  2. pvcreate /dev/sdb创建PV;
  3. vgextend vg0 /dev/sdb扩展到VG;
  4. lvextend -L +50G /dev/vg0/root扩LV;
  5. xfs_growfs /(xfs)或resize2fs /dev/vg0/root(ext4)。

我经常看到有人卡在最后一步:LVM扩展完,忘记给文件系统扩容,结果空间还是老样子。xfs和ext4的区别要记住:xfs的在线扩容是xfs_growfs加挂载点,ext4是resize2fs加设备路径。

磁盘清理也讲究。永远不要直接rm -rf看着大但没搞清用途的目录。先lsof +L1找已删除但仍被进程占用的文件,再du -sh定位大目录,确认业务影响后再清理。特别强调别乱删/tmp下还在被进程使用的socket或临时文件,删完服务直接hang。

3.2 网络配置与防火墙策略

欧拉系统的网络配置如果用传统方式,主要在/etc/sysconfig/network-scripts/ifcfg-*下,有些版本也支持和NetworkManager协同。我个人为了稳定和维护简单,通常会统一一个套路:要么纯NetworkManager用nmcli管理,要么纯传统配置文件方式,别搞“这台机器nmcli,那台机器ifcfg”的混搭,否则后期排查非常痛苦。

用nmcli的常用操作:

  • 查看连接:nmcli connection show
  • 配置静态IP:
nmcli connection modify ens160 ipv4.addresses 192.0.2.10/24 nmcli connection modify ens160 ipv4.gateway 192.0.2.1 nmcli connection modify ens160 ipv4.dns "192.0.2.53 8.8.8.8" nmcli connection modify ens160 ipv4.method manual nmcli connection up ens160

防火墙层面,firewalld是主力:

  • 放行端口:firewall-cmd --add-port=8080/tcp --permanent && firewall-cmd --reload
  • 放行服务:firewall-cmd --add-service=http --permanent
  • 查看规则:firewall-cmd --list-all
  • 临时规则:不加--permanent,重启失效,适合调试。

注意一个细节:别把--add-port=8080/tcp --permanent这条命令拆成两条并发执行,中间不加--reload,结果规则写进去了,当前会话没生效,你还以为配置错了。

还要定期检查默认zone是不是反直觉的,比如某些环境默认zone不是public,规则放行时要小心作用范围。我是每次配完防火墙都执行firewall-cmd --list-all-zones通读一遍。

3.3 性能监控的常用命令与判断阈值

日常维护不见得出事才看性能,我建议形成定期巡检的肌肉记忆。简单套餐:

  • uptime:看系统负载,15分钟负载长期高于核数乘以0.7就要留意;
  • top/htop:看CPU和内存占用,重点找持续高占用进程;
  • free -h:看内存是否够,swap使用率持续增长说明内存吃紧;
  • iostat -xz 1:看磁盘I/O情况;
  • vmstat 1 5:看系统层面的CPU、内存、IO综合状况;
  • ss -tlnp:看监听端口;
  • sar:如果要看历史监控,欧拉系统默认通常有sysstat,可以配cron定期抓数据。

我一般这样判断问题:CPU单核持续超过85%,先看进程再考虑优化;内存Used高不一定有毛病,关键是看available和swap使用,available持续很低才需要处理;磁盘util接近100%或者await长期偏大,结合iowait判断是否有IO瓶颈。

性能问题的处理顺序,我一直强调:先看现象和数据,再看进程和线程,最后看内核和配置。很多“性能问题”其实是日志级别开太高、或者全链路里有个慢依赖,一通乱调内核参数适得其反。

4. 安全加固与故障排查实录

4.1 SELinux、SSH、账号安全这些坑

安全加固这个环节,我在维护欧拉系统时从不跳过。

先说SELinux。我见过太多人第一件事就是/etc/selinux/config里改成disabled,图省心。这带来的问题不是立刻显现的,而是后患。在生产环境我建议保持enforcing,如果某个服务被阻止,用ausearch -m avc -ts recent查审计日志,根据日志给对应进程或端口放行策略,或者对特定目录设置正确的file context。

举个例子,如果你把一个服务的数据目录从默认上下文改成/opt/data,SELinux很可能拦截。解决办法可以用semanage fcontext -a -t httpd_sys_content_t "/opt/data(/.*)?",然后restorecon -Rv /opt/data。这比直接关SELinux干净得多。

SSH安全上,几条硬规矩:

  • 禁止root直接密码登录,PermitRootLogin no;
  • 能密钥登录就密钥登录,PasswordAuthentication no;
  • 监听端口如果非必要不改成怪异端口,改端口这种“安全”更多是心理安慰,真正有用的是密钥认证加fail2ban这类防护;
  • 定期检查/root/.ssh/authorized_keys和所有用户的authorized_keys,防止有人悄悄塞进去公钥。

账号管理也不要放松。每季度检查一次账号列表:lastlog看最近登录,看看有没有长期不登录、却还活着的账号;/etc/sudoers用visudo编辑,别用乱七八糟的编辑器改坏语法。

4.2 启动异常、依赖缺失、空间占满的排查实录

故障排查这块,我分享几个我实际踩过的坑,给大家一个排查思路。

案例一:系统启动到一半卡住。

有一次重启机器,画面卡在等待某个挂载点。我第一时间按Ctrl+C看是哪个单元卡住,发现是home分区挂载等待。根因是修改了fstab里home分区的UUID,但没对应更新,系统在等待一个不存在的设备。修复方法:进入单用户或救援模式,修正/etc/fstab,执行systemctl daemon-reload,重新挂载。

排查启动问题时的建议顺序是:先看有没有报错单元,再检查fstab、dracut配置、网络服务是否等待超时,最后才看内核参数。

案例二:服务能跑起来,但连不上。

nginx起来了,端口8899也监听,防火墙也放行了,但外部访问就是连不上。一排查,发现SELinux拦了非标准端口。解决:用半自动工具或者手动加放行规则,让nginx在8899上合法工作。

这个案例就是典型的“规则没问题但系统策略拦着”,所以排查连接问题时,除了防火墙、监听,还要把SELinux列进检查清单。

案例三:磁盘显示有空间,但写不进去。

df -h显示有20G剩余,但程序报No space left on device。排查过程:df -i看到inode已经100%占用。原因是某个目录下产生了海量小文件。定位之后,配合删除、迁移来缓解。

这个坑很多人一辈子没遇过,但一遇就是大事,inode监控要纳入巡检。

空间占满还有另一个隐藏情况:某个大文件被进程打开后删除了,但进程还在写,导致磁盘空间无法释放。处理办法是lsof +L1找到对应进程,重启或停用进程即可。

4.3 维护脚本与自动化的小技巧

运维要能省事就省事,能自动化就别手敲。我分享两个实用脚本思路。

第一个是巡检脚本。以前我都是逐台上线跑命令,后来写成shell脚本,然后用循环在清单上执行。内容大致包括:检查磁盘使用率、内存、CPU负载、关键服务状态、最近SSH失败登录次数。脚本核心是收拢输出,用颜色或特殊前缀标记异常项。

例如模块化写法:

#!/bin/bash host=$(hostname) date_time=$(date "+%Y-%m-%d %H:%M:%S") disk_usage=$(df -h / | awk 'NR==2 {print $5}') mem_usage=$(free -h | awk '/Mem:/ {print $3"/"$2}') load_avg=$(uptime | awk -F'load average:' '{print $2}') echo "[$date_time] $host disk=$disk_usage mem=$mem_usage load=$load_avg"

别当脚本怪人,也别写一堆复杂逻辑。巡检脚本的定位是“快速发现问题提醒人关注”,不是替代人工判断。

第二个是定时清理脚本。比如日志轮转、临时文件清理、打包归档。但这类脚本务必加个DRYRUN开关,没确认安全之前别直接删。我踩过的坑就是清理脚本把还在使用的临时socket文件删了,服务直接崩溃。现在写清理脚本都是先DRYRUN=true跑一遍,人工确认清单后再正式执行。

自动化还有一环就是配置管理。如果你有多台欧拉机器,强烈建议尽早考虑用Ansible这类工具做批量管理和配置漂移检测。我自己就是从“手工改ifcfg”慢慢过渡到“Ansible管理网络和安装包”,迭代效率提升明显。初始化阶段用Ansible批量拉齐hostname、时区、用户、防火墙规则,比一台一台改靠谱得多。

写到这里,我把欧拉系统维护里最常碰到的那些事儿基本上都过了一遍。说点个人体会。

我印象最深的是一次跨天故障排查,最后发现只是内核参数vm.swappiness和某个业务的缓存回收策略打架,导致服务CPU居高不下。那之后我给自己立了一条规矩:凡是改动系统配置,一定记录“改前状态、改后状态、为什么改”,并统一放在一个维护文档里。半年下来再遇到问题,翻这份文档能省掉大半猜测。

如果你也刚开始接手欧拉系统的维护工作,我的建议很朴素:先别碰那些花哨的调优参数,老老实实把安装规划、日志习惯、服务管理、安全加固这几件基础事做扎实。等基础盘稳了,再逐步引入自动化。系统维护这东西,功夫都在平时,真正出问题的时候,你拼的是对这台机器的熟悉程度和平时的准备。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询