运维常见故障及排查方法,值得学习收藏!
1、Linux 系统无法启动 原因1 排查方法: 系统配置/etc/fstab错误或丢失而无法启动,当启动的时候,出现starting system logger 后停止了。 解决方法: 想办法恢复 /etc/fstab 文件,利用 Linux rescue 修复模式登录系统,从而获取挂载点和分区信息,重构 /etc/fstab 文件。 原因2: 非法关机,导致 root 文件系统破坏,也就是 Linux 根分区破坏,系统无法正常启动。 排查方法: Linux下普遍采用的是 ext3/ext4 文件系统,ext3/ext4 是一个具有日志记录功能的日志文件系统,可以进行简单的容错和恢复,但是在一个高负荷读写的 ext3 文件系统下,如果突然发生掉电,就很有可能发生文件系统内部结构不一致,导致文件系统破坏。 Linux 在启动时会自动去分析和检查系统分区,如果发现文件系统有简单的错误,会自动修复,如果文件系统破坏比较严重,系统无法完成修复时,系统就会自动进入单用户模式下或者出现一个交互界面,提示用户介入手动修复,现象类似下面所示: checking root filesyste /dev/sdb5 contains a file system with errors, check forced /dev/sdb5: Unattached inode 68338812 /dev/sdb5:UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY (i.e., without -a or -p options) FAILED /contains a file system with errors check forced an eror occurred during the file system check *dropping you to a shell;the system will reboot when you leave the shell Press enter for maintenance (or type Control-D to continue): give root password for maintenance 从这个错误可以看出,系统根分区文件系统出现了问题,系统在启动时无法自动修复,然后进入到了一个交互界面,提示用户进行系统修复。这个问题发生的机率很高,引起这个问题的主要原因就是系统突然掉电,引起文件系统结构不一致。一般情况下解决此问题的办法是采用fsck命令,进行强制修复。 解决方法: 需要注意的是,在执行 fsck 的时候,一定要先卸载要修复的分区,然后再执行修复操作! 原因3: 显示 error: file '/vmlinuz' not found 解决方法: - 使用可启动修复介质启动系统,并挂载系统磁盘的 /boot 分区; - 从安装介质或系统备份中提取 vmlinuz 内核文件,复制到 /boot 分区; - 更新引导配置(grub.cfg),将 menuentry 块中的 linux 行指向vmlinuz内核文件; - 重启系统,在引导菜单选择更新后的菜单项启动系统。 2、initrd/initramfs:初始化 RAM 磁盘,包含启动时需要的模块和驱动 显示 error: file '/initrd.img' not found 解决方法: ● 参考内核文件丢失的解决步骤a,挂载 /boot 分区和获取 initrd.img 文件; ● 将 initrd.img 文件复制到 /boot 分区; ● 更新 grub.cfg,找到 initrd 相关行,将其指向新文件; ● 重启系统,启动更新后的菜单项。 原因4: 硬件故障,比如主板、电源、硬盘等出现问题,导致 Linux 无法启动。 解决方法:一般来说由硬件造成的故障,只需更换硬件设备即可解决。 2、Linux系统网络故障 1 排查1:检查网络硬件 检查网络故障,首先要排除网络硬件设备是否存在问题。比如网卡,网线,路由器,交换机等设备是否正常。 这些是网络正常运行的基本条件,如果发现某些设备出现故障,只需更换硬件即可解决问题。 2 排查2:检查网卡是否正常工作 解决方法:如果发现问题网卡,我们可以使用 ethtool 工具查看问题网卡的具体状态信息(注意:Speed / Link deteced 等字段 ) 接下来就要检查网卡的软件设定,比如IP是否配置,配置是否正确,确保IP的配置和局域网其它计算机配置没有冲突。 3 排查3:检查局域网内主机能否互连 检查网络之间的连通是否存在故障,可以先通过ping命令测试局域网主机之间的连通性,然后ping网关,检测主机到网关的通信是否正常。 4 排查4:检查系统路由表信息是否正确 解决方法:删除192段的缺省路由,然后增加10段的缺省路由即可: 此时外界就可以通过ssh服务远程连接到 Linux 系统了。 5 排查5:检查DNS解析 /etc/host.conf 文件指定系统如何解析主机名,Linux 通过域名解析库来获得主机名对应的 IP 地址。 nsswitch.conf 文件每行的配置都以一个关键字开头,后跟冒号: 紧接着是空白,然后是一系列方法的列表。例如这段信息: 表示系统首先查询主机库文件,如果没有找到对应的解析,接着会去DNS配置文件指定的 DNS 服务器进行解析。 清楚了Linux下域名解析的原理和过程,我们就可以根据这两个文件的设定,确定解析的顺序,从而判断出域名解析可能出现的问题。 6 排查6:检查相关服务是否开启 在一个应用出现故障时,必须要检测服务本身。比如服务是否开启,配置是否正确等。 3 MBR扇区故障 故障现象: 1、找不到引导程序,启动中断 2、无法加载操作系统,开机后黑屏 故障原因: 1、病毒、木马等造成的破坏 2、错误的分区操作,磁盘读写错误操作 解决办法: 1 备份MBR扇区数据 ● 备份MBR扇区数据。 2 模拟MBR扇区被破坏的故障 重启计算机,当出现“Operating system not found”的提示信息,表示无法找到可用的操作系统,此时硬盘已经损坏,如果没有光盘引导,则系统一直处于如下状态,因此无法启动主机。 3 进入急救模式来修复MBR扇区故障 ● 先关闭计算机-->虚拟机-->电源-->打开电源时进入固件(F)-->选择Boot-->将光盘放在第一位 ● 选择进入急救模式[Rescue installed system] ● [choose a language]选择English-->确认 ● [Keyboard type]选择us-->确认 ● [Unsupported Hardware Detected]选择OK ● [Satup Networking]选择No ● [Rescue]选择Skip ● 选择Shell Start shell-->选择Ok ● 查看/dev/sdb硬盘和/dev/sda硬盘,能看到sdb1分区,看不到sda设备,因为sda设备的MBR被破坏 ● 将之前拷贝的文件重新写回来 2、重启计算机,发现可以正常启动计算机,说明修复了MBR扇区故障。 4 GRUB 引导故障 故障现象: 系统引导停滞,显示“grub>”提示符 故障原因: 有时 Linux 启动后会直接进入GRUB命令行界面(只有“grub>”提示符),此时很多用户就选择了重新安装GRUB甚至重新安装系统。其实一般而言此故障的原因最常见的有两个: 一是GRUB配置文件中选项设置错误; 二是GRUB配置文件丢失。 若是第一种情况,则一般显示error: you need to load the kernel first: 引导配置错误,内核文件没有被正确加载,提示先加载内核。 解决办法: ● 启动系统修复介质,备份/boot分区文件; ●检查/boot/grub2/grub.cfg文件,找到menuentry块中linux和initrd行,确保它们正确指向vmlinuz和initrd.img文件; ● 重启系统,进入BIOS将引导选项设置为启动磁盘,保存后重启; ● 启动grescue grub>提示符,运行: set prefix= (root) ′ /boot/grub2 ′configfile(prefix)/grub.cfg boot 命令以修复并重新加载grub配置,然后启动系统。 若是第二种情况,GRUB rescue> : 当GRUB引导加载程序文件丢失或磁盘无法访问时,会结束在rescue提示符。 ● 启动系统安装或修复介质,备份数据并检查文件系统。使用fsck修复或使用娱乐用光盘工具修复磁盘问题; ● 引导进入安装系统,运行grub2-install /dev/sda将GRUB重新安装至系统磁盘MBR; ● 修改BIOS启动选项为从系统磁盘启动。重启系统,现GRUB菜单应可正常显示,启动系统; ● 如果仍无法启动,可能需要重新安装系统或更换硬件。 5 忘记 Linux root 密码 很多人经常会忘记Linux系统的root密码,而着急选择重新安装系统,这里为大家整理了两个更加直接的解决方法: 1 1、进入急救模式重设root用户密码 进入急救模式,加载系统镜像,切换到系统根环境进行重置root密码: ● 打开电源时进入固件,将开机启动项boot中的CD-ROM调到第一项; ● 进入急救模式: ● 重启进入登入界面后输入刚才设置的密码即可 2 2、进入单用户模式进行修改root密码: 以Redhat linux为基准,操作步骤如下: ● 重启系统,待linux系统启动到grub引导菜单时,找到当前系统引导选项(可以按方向键展开隐藏的菜单,单处理器只有一个引导项,多处理器有3个或3个以上引导项,一般默认选项就是系统当前引导选项); ● 通过方向键将光标放到当前系统引导项上,然后按键盘字母“e”,进入编辑状态。 ● 然后通过上下键,选中带有kernel指令的一行,继续按键盘字母“e”,编辑该行,在行末尾加个空格,然后添加single,类似与这样:kernel /vmlinuz-2.6.18-8.el5 ro root=LABEL=/ rhgb quiet single ● 修改完成,按回车键,返回到刚才的界面。 ● 最后按键盘“b”,系统开始引导。这样系统就启动到了单用户模式下,这里的单用户和windows下的安全模式类似,在单用户模式下,只是启动最基本的系统,网络以及应用服务均不启动。 单用户模式启动完毕,系统会自动进入到命令行状态下,类似与“sh-3.1#”,然后直接执行passwd,回车,系统会提示输入新的root密码两次,最后会看到修改密码成功的提示,这样就完成了root密码的修改。 如果需要正常启动系统,现在只需输入“init 3”,就进入了多用户模式。用root用户重新登录系统,看看设置的新密码是否生效。 6 Read-only file system 错误解决 故障现象: 涉及到修改/保存条目等需要写磁盘操作的命令都无法使用(如tar、cp、mv、rm、chmod、chown、wget下载等指令),总是提示Read-only file system,也就是说系统是只读的,什么也写不了。 故障原因: 1、文件系统损坏; 2、磁盘问题,磁盘又坏道; 3、fstab文件配置错误,如分区格式错误错误(将ntfs写成了fat)、配置指令拼写错误等。 排查网站程序,看报错信息和服务日志错误,以及系统日志,来定位问题所在。 解决办法: ● 如果能够确认数据和系统的文件没有被损坏,修复fstab文件配置后只要重新R/W加载或reboot就能够恢复正常。 以读写方式重新挂载文件系统 ● 如果是文件系统有问题,那就需要在umount状态下执行fsck命令来检查文件系统并修复文件系统中的错误。 ● 如果仅仅是想将数据备份出来而且机器又在身边的话,你可以用live-cd从光盘启动系统,然后直接备份。当然此时你也可以修改硬盘中的配置文件,如/etc/fstab。[root@localhost /]#umount /dev/sdb5[root@localhost /]#fsck .ext3 -y /dev/sdb5e2fsck 1.39 (29-May-2006)/ contains a file system with errors, check forced.Pass 1: Checking inodes, blocks, and sizesPass 2: Checking directory structurePass 3: Checking directory connectivityPass 4: Checking reference countsInode 6833812 ref count is 2, should be 1. Fix? yesUnattached inode 6833812Connect to /lost+found? yesInode 6833812 ref count is 2, should be 1. Fix? yesPass 5: Checking group summary informationBlock bitmap differences: -(519--529) -9273Fix? yes…… ……/: * FILE SYSTEM WAS MODIFIED **/: 19/128520 files (15.8% non-contiguous), 46034/514048 blocks
# route delete default# route add default gw 10.10.1.254
order hosts,bind
hosts: files dns
# telnet 192.168.60.133 22 SSH-2.0-OpenSSH_4.3
sh-4.2# chroot /mnt/sysimage#重设root用户密码bash-4.2# passwd rootbash-4.2# exit //退出镜像回到系统sh-4.2# reboot //重启系统(注意重启后要进入固件将Hard-drive调至第一项)
mount -o rw,remount /system
nohup fsck -y /dev/VolGroup00/LogVol00 > /dev/shm/fscklog & # 检查好后重启 reboot