6 个运维常见故障及排查方法,是个运维就得会~
来源:湖北国菱计算机科技有限公司-湖北国联计算机科技有限公司-荆州网站建设-荆州软件开发-政府网站建设公司
时间:2025-03-04
“稳定是偶然,异常才是常态”。这句话用来形容IT运维的工作再合适不过了。 因为对于IT运维来说,工作最常遇到的就是不稳定性带来的各种故障,经常围绕发现故障、响应故障、定位故障、恢复故障这四大步骤打转。
一、Linux 系统无法启动
原因1、
文件系统配置不当,比如/etc/fstab文件等配置错误或丢失,导致系统错误无法启动。一般是人为修改错误或者文件系统故障。
排查方法:
系统配置/etc/fstab错误或丢失而无法启动,当启动的时候,出现starting system logger后停止了。
解决方法:想办法恢复/etc/fstab文件,利用Linux rescue修复模式登录系统,从而获取挂载点和分区信息,重构/etc/fstab文件。
原因2 、
非法关机,导致root文件系统破坏,也就是Linux根分区破坏,系统无法正常启动。
排查方法:
Linux下普遍采用的是ext3/ext4文件系统,ext3/ext4 是一个具有日志记录功能的日志文件系统,可以进行简单的容错和恢复,但是在一个高负荷读写的 ext3 文件系统下,如果突然发生掉电,就很有可能发生文件系统内部结构不一致,导致文件系统破坏。 Linux 在启动时会自动去分析和检查系统分区,如果发现文件系统有简单的错误,会自动修复,如果文件系统破坏比较严重,系统无法完成修复时,系统就会自动进入单用户模式下或者出现一个交互界面,提示用户介入手动修复,现象类似下面所示:
从这个错误可以看出,系统根分区文件系统出现了问题,系统在启动时无法自动修复,然后进入到了一个交互界面,提示用户进行系统修复。这个问题发生的机率很高,引起这个问题的主要原因就是系统突然掉电,引起文件系统结构不一致。一般情况下解决此问题的办法是采用fsck命令,进行强制修复。
解决方法:
根据上面的错误提示,当按下“Ctrl-D”组合键后系统自动重启,当输入root密码后进入系统修复模式,在修复模式下,可以执行fsck命令,具体操作过程如下:
需要注意的是,在执行fsck 的时候,一定要先卸载要修复的分区,然后再执行修复操作!
原因三:
Linux 内核文件丢失或者崩溃,从而无法启动,也可能是因为内核升级错误或者内核存在 bug。这种情况一般 Linux 系统启动会报错找不到内核文件,而内核文件存储在 /boot 分区,主要包括内核文件和初始化文件:
1、vmlinuz:内核镜像文件,包含内核代码和数据
显示 error: file '/vmlinuz'not found 解决方法:
a. 使用可启动修复介质启动系统,并挂载系统磁盘的/boot分区;
b. 从安装介质或系统备份中提取vmlinuz内核文件,复制到/boot分区;
c. 更新引导配置(grub.cfg),将menuentry块中的linux行指向vmlinuz内核文件;
d. 重启系统,在引导菜单选择更新后的菜单项启动系统。
2、initrd/initramfs:初始化 RAM 磁盘,包含启动时需要的模块和驱动 显示error:file'/initrd.img'notfound解决方法:
a. 参考内核文件丢失的解决步骤a,挂载/boot分区和获取initrd.img文件;
b. 将initrd.img文件复制到/boot分区;
c. 更新 grub.cfg,找到 initrd 相关行,将其指向新文件;
d. 重启系统,启动更新后的菜单项。
原因4:
硬件故障,比如主板、电源、硬盘等出现问题,导致 Linux 无法启动。 解决方法:一般来说由硬件造成的故障,只需更换硬件设备即可解决。
二、Linux系统网络故障
排查1:检查网络硬件
检查网络故障,首先要排除网络硬件设备是否存在问题。比如网卡,网线,路由器,交换机等设备是否正常。这些是网络正常运行的基本条件,如果发现某些设备出现故障,只需更换硬件即可解决问题。
排查2:检查网卡是否正常工作
a. 检查网卡是否正常加载可以通过 ifconfig 命令判断网卡是否正常加载。如果通过 ifconfig 可以显示网络接口的配置信息,表示系统找到网卡驱动程序,网卡加载正常;解决方法:如果发现问题网卡,我们可以使用ethtool工具查看问题网卡的具体状态信息(注意:Speed/Link deteced等字段)
b. 检查网卡IP设置是否正确接下来就要检查网卡的软件设定,比如IP是否配置,配置是否正确,确保IP的配置和局域网其它计算机配置没有冲突。
排查3:检查局域网内主机能否互连
检查网络之间的连通是否存在故障,可以先通过ping命令测试局域网主机之间的连通性,然后ping网关,检测主机到网关的通信是否正常。
排查4:检查系统路由表信息是否正确
检查系统路由表状态是处理网络故障的一种很重要的方法。很多时候都是ip地址没有配错,网卡也正常加载但是路由配置不正确,而导致网络问题的出现。因此需要检查系统的路由表设置是否正确,如果一个Linux系统有两块网卡,同时两块网卡设置的IP不在一个网段,要特别注意系统路由表的设置。例如下面这个系统的网络接口信息:
从上面输出可知,本系统有两块网卡,分别配置不同网段的IP地址,假定eth0 通过映射的方式对外提供ssh连接服务,而eth1仅供局域网主机之间共享数据使用。 现在的问题是,外界无法ssh远程登录到此系统,而网卡加载没有问题,网卡IP设置也没问题,接下来看看此系统的路由设置:
此时外界就可以通过ssh服务远程连接到 Linux 系统了。
排查5:检查DNS解析
在Linux系统中,有两个文件用来指定系统到哪里寻找相关域名解析的库,分别是文件 /etc/host.conf 和 /etc/nsswitch.conf。 /etc/host.conf 文件指定系统如何解析主机名,Linux通过域名解析库来获得主机名对应的IP地址。下面是RedHat Linux安装后缺省的/etc/host.conf内容:
order hosts,bind
其中,order 指定主机名查询顺序,这里表示首先查找/etc/hosts文件对应的解析,如果没有找到对应的解析,接着就根据/etc/resolve.conf指定的域名服务器进行解析。
/etc/nsswitch.conf 文件是由 SUN 公司开发的,用于管理系统中多个配置文件查询的顺序,由于 nsswich.conf 提供了更多的资源控制方式,nsswich.conf 文件现在已经基本取代了 hosts.conf,虽然 LINUX 系统中默认这两个文档都存在,但实际上起作用的是 nsswitch.conf 文件。
nsswitch.conf 文件每行的配置都以一个关键字开头,后跟冒号: 紧接着是空白,然后是一系列方法的列表。例如这段信息:
hosts: files dns
表示系统首先查询主机库文件,如果没有找到对应的解析,接着会去DNS配置文件指定的 DNS 服务器进行解析。清楚了Linux下域名解析的原理和过程,我们就可以根据这两个文件的设定,确定解析的顺序,从而判断出域名解析可能出现的问题。
排查6:检查相关服务是否开启
在一个应用出现故障时,必须要检测服务本身。比如服务是否开启,配置是否正确等。检查服务是否正确打开,分为两步,第一步是查看服务的端口是否打开:例如,我们不能用root用户ssh登录到192.168.60.133这台 Linux 服务器,首先检查sshd服务的22端口是否打开:
# telnet 192.168.60.133 22
SSH-2.0-OpenSSH_4.3
这个输出表示192.168.60.133 的22端口对外开放,或者可以说sshd服务是处于打开状态。如果没有任何输出,可能是服务没有启动,或者服务端口被屏蔽。也可以在服务器上通过 netstat 命令检查22端口是否打开: