当前位置:首页>Linux>90%运维人员生产上会遇到的Linux问题

90%运维人员生产上会遇到的Linux问题

  • 2026-10-10 14:19:17
90%运维人员生产上会遇到的Linux问题

作为一名Linux运维人员,在生产上必定会遇到各种各样的运维问题,在恢复业务过程中,花费大量时间进行排错。为了提升故障处理效率,今天本文给大家分享生产上常见的Linux问题和解决思路,看看大家踩中几条。

一、/etc/fstab配置编写错误,重启后进入不了系统

在生产中,不可避免的会涉及新增块设备和逻辑卷、自动挂载ISO镜像或NFS服务。fstab配置如写的有问题,就会出现重启无法进入系统。尤其是生产环境,服务器一般都不重启,当时修改配置并不会影响系统正常运行。但是重启后会重新加载配置,造成系统挂死。修改这个配置可能是星期、月甚至更久之前的事,在后续在排查问题时,需要花费很长时间才能定位出来。

常见的错误:

(1)defaults写成default

(2)挂载点路径不存在或写错。

配置详解:

/etc/fstab里每一行共6个字段,用空格或Tab分隔,格式固定:

<设备> <挂载点> <文件系统> <挂载选项> <dump备份> <fsck检查顺序>

(1)第1个字段:要挂载的设备(必填)

可以写这几种:

/dev/sda1、/dev/vdb1 #裸设备挂载UUID=xxx-xxx-xxx-xxx-xxx #UUID挂载,一般/boot路径使用此挂载方式/dev/mapper/ #逻辑卷 逻辑卷挂载

(2)第2字段:挂载点(必填)

磁盘要挂载到哪个目录:

根目录:/

引导:/boot

交换分区:swap

数据盘:/data、/www 等自定义目录

(3)第3字段:文件系统类型(必填)

xfs:CentOS7+默认

ext4:通用Linux分区

swap:交换分区

iso9660:镜像

nfs:共享文件

写错就会挂载失败,进不了系统。

(4)第4字段:挂载参数(必填)

多个参数用逗号分隔:

defaults:默认

loop:表示把文件当成块设备挂载,一般用于ISO镜像

nofail:磁盘不存在或者连不上也不阻止开机(强烈推荐NFS服务、自己新增挂载配置加上这个)

(5)第5字段:是否备份

一般就两个值:

0:不备份(绝大多数场景)

1:需要 dump 备份(几乎不用)

生产统一写0 即可。

(6)第6字段:开机检测

开机fsck 磁盘检查顺序,决定开机要不要自检、谁先检查:

0:不检查(数据盘、U 盘、移动硬盘都写0)

1:根分区/专用,只允许根写1

2:其他需要检查的 Linux 分区(如 /boot,/home等)

二、服务器路由丢失或异常

常见错误:

(1)通过route add添加临时路由,重启后丢失

(2)双网卡均配置网关,产生2条默认路由。一个操作系统里面,只允许有一个网段,其它网卡只能配置明细。否则,会引发路由异常。

解决思路:

(1)查看当前系统的网卡配置,执行命令:

ip a

在/etc/sysconfig/network-scripts/文件夹下,新增“route-网卡名”文件,例如:route-eth0

(2)添加路由配置

10.0.0.0/24 via 192.168.1.1 dev eth0#表示到10.0.0.0/24,通过网卡eth0

三、SSH登录不上,服务器拒绝登录

常见原因:

(1)hosts.allow和hosts.deny配置异常

(2)SSH配置文件,禁用root登录

(3)账号过期被锁定

解决思路:

(1)针对第一个问题,系统默认先检查hosts.allow文件,再检查hosts.deny文件。allow文件里面是允许的IP,deny文件里面是拒绝的IP,如果都没有配置默认允许。

配置格式:

sshd:IP地址或者IP网段

例如,sshd:192.168.1.0/24,如果在hosts.allow表示允许这个地址段登录,在hosts.deny表示拒绝这个地址段登录。

(2)针对第二个问题,编辑SSH配置文件/etc/ssh/sshd_config,查看如下配置是否设置为no,然后重启下ssh服务。强烈建议不允许root登录。

PermitRootLogin nosystemctl restart sshd

(2)针对第三个问题,需要进入到root账号下,重置过期账户。如果root账户也过期,就需要进入单用户模式下,重置root账户过期问题,重置方式见之前公众号文章。国产操作系统 root 密码丢失?欧拉龙蜥一篇搞定进入到系统里面后,执行如下命令解决账号过期:

chage -E -1 用户名#账号永不过期

四、已删除文件占用磁盘空间不释放

删除了文件,但句柄没释放,空间不还回磁盘。主要原因是Linux文件有2种属性,一个是目录项(也就是文件名称)、一个是索引节点(inode)。执行rm命令只是删除了目录项,但是inode还在。所以,df -h空间不释放,而执行du -sh看到的inode已经变小。

常见原因:

进程还在持有被删除文件的句柄→ 文件不会真正删除 → 空间不释放。

解决思路:

(1)查看是哪个进程占用已删除文件

lsof | grep deleted

如有输出内容,表示有进程占用

(2)杀掉占用对应进程的ID

kill -9 PID

(3)执行df -h查看空间是否有变化。

五、进程被OOM杀死(Out of Memory)

系统内存不够用了,内核为了保系统不宕机,挑了个进程杀掉。

排查思路:

(1)执行命令:dmesg | grep -i "oom",如果看到类似如下内容,表示被OOM杀死。

Out of memory: Killed process 1234 (java)

(2)临时增加swap内存,缓解内存压力

# 创建 4G swap

dd if=/dev/zero of=/swapfile bs=1G count=4chmod 600 /swapfilemkswap /swapfileswapon /swapfile

(3)调整OOM优先级,保护重点进程

echo -1000 > /proc/[PID]/oom_score_adj #替换[PID]为真实需要保护的ID

(4)排查内存泄露原因,并针对应用进行限制内存上限。

六、文件句柄、进程数不足

常见原因:

(1)文件句柄不足,报错信息:too many open files,进程打开的文件/连接太多,超过系统限制。

(2)进程数不足,报错信息:fork: retry: Resource temporarily unavailable,

用户能创建的进程/线程数超限。

解决思路:

(1)进入到/etc/security/文件夹下,编辑limits.conf文件,末尾添加如下内容:

# 全局软硬限制* soft nproc 65535* hard nproc 65535* soft nofile 65535* hard nofile 65535# root 单独加强root soft nproc 65535root hard nproc 65535root soft nofile 65535root hard nofile 65535

解释:

nproc:最大进程 / 线程数

nofile:最大文件句柄数

soft:警告线

hard:天花板

(2)修改系统全局句柄限制,编辑/etc/sysctl.conf文件。

fs.file-max = 1000000

(3)生效配置

sysctl -p

七、Linux文件系统损坏

产生原因:

异常掉电,文件系统正在写元数据(目录项、inode、分配块)时中断,导致:目录错乱、文件大小不对、孤儿文件、inode 位图不一致。

解决思路:

(1)磁盘进行解挂载,避免对数据产生影响。以sda1为例:

umount /dev/sda1

(2)修复前预检查

fsck.ext4 -n /dev/sda1

(3)对分区进行修复,使用fsck命令。如果是根目录故障或者xfs文件系统故障,则需要使用xfs_repair命令修复。

#非根目录fsck.ext4 -y /dev/sdb1#xfs文件系统或根目录xfs_repair /dev/sda1

(4)重新挂载硬盘

mount /dev/sda1 /data

八、网络服务不通

产生原因:

(1)firewalld未放行网络服务;

(2)iptables未放行网络服务;

注意,iptables和firewalld不要同时出现,避免出现安全策略混乱问题。推荐Linux7和7之前版本之前使用iptables,Linux8及以上使用firewalld。

解决思路:

(1)firewalld放行网络服务

firewall-cmd --permanent --add-port=80/tcpfirewall-cmd --permanent --add-port=443/tcpfirewall-cmd --permanent --add-port=22/tcpfirewall-cmd --permanent --add-port=8080/tcp

(2)重载生效配置

firewall-cmd --reload

(3)iptables放行网络策略

iptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A INPUT -p tcp --dport 443 -j ACCEPTiptables -A INPUT -p tcp --dport 22 -j ACCEPTiptables -A INPUT -p tcp --dport 8080 -j ACCEPT

(4)保存iptables策略,避免重启后失效

iptables-save > /etc/sysconfig/iptables

九、内核态CPU高,频繁切换上下文

产生原因:

(1)多线程抢同一把锁或线程数高

(2)网卡进行大量网络收发、短连接;

(3)磁盘 IO 密集

解决思路:

(1)查看整体CPU使用率,执行命令:top

重点关注us、sy和si三个指标

(2)查看上下文切换,重点关注cswch/s和vncswch/s这两列数值,执行指令:

pidstat -w 

(3)执行iostat查看磁盘IO情况

iostat

问题判定:

(1)锁竞争激烈和网络风暴

表现:

sy 高(内核态 CPU)

cswch/s 极高

软中断si也高

us 不高、iowait不高

(2)高频磁盘IO/大量小文件读写

表现:

sy高

cswch/s高

wa (iowait)高

pidstat -d看到读写很高

(3)线程/进程数量过多,或服务器CPU配置不足

表现:

sy 明显高

cs 系统上下文切换几十万

cswch/s + nvcswch/s 双高

【结束语】

评论区有文章总结!觉得好可以关注、点赞、推荐、转发,谢谢!

最新文章

随机文章