Linux系统启动流程、分析日志文件和排查系统故障

一、系统引导过程

  1. CentOS7引导

1.1开机自检:初始化硬件

   开始加电,主板BIOS对硬件检查,如错误中断,成功移交系统控制权

1.2查找启动介质

   自检后选引导介质

1.3引导加载器

从介质中加载介质程序

1.4加载内核

   内核初始化,探测可用硬件,硬件启动程序

1.5第一个进程

   /sbin/init  启动systemd进程

1.6运行级别

   /etc/systemd/system/default.target

   模式:

    0 ==> runlevel0.target, poweroff.target   关机

    1 ==> runlevel1.target, rescue.target    字符界面,单用户模式,不能联网

    2 ==> runlevel2.target, multi-user.target  字符界面

    3 ==> runlevel3.target, multi-user.target  字符界面,多用户模式,可以联网

    4 ==> runlevel4.target, multi-user.target   保留

    5 ==> runlevel5.target, graphical.target    图形界面

6 ==> runlevel6.target, reboot.target      重启

1.7初始化及准备操作系统

systemd执行sysinit.target

1.8 systemd启动multi-user.target下的服务

1.9 systemd执行multi-user.target下的/etc/rc.d/rc.local

1.10 Systemd执行multi-user.target下的getty.target及登录服务

1.11 systemd执行graphical需要的服务

2.CentOS 7 系统服务管理

启动:systemctl start name.service

停止:systemctl stop name .service

重启:systemctl restart name.service

重载:systemctl reload name.service

状态:systemctl status name.service

查看某服务当前是否运行:systemctl is-active name.service

查看所有已经激活的服务:systemctl list-units  --type service

开机自启动:systemctl enable name.service

  • 分析日志文件

1.日志的两个比较重要的作用是:审核和监测(如系统故障排错、统计访问量)。对于Linux系统而言,日志文件都默认放在/var/log/下

2.在linux系统中,日志数据主要包括以下三种类型:

2.1内核及系统日志:这种日志数据由系统服务rsyslog统一管理,根据其主配置文件/etc/syslog.conf中的设置决定将内核消息及各种系统程序消息记录到什么位置,系统中有相当一部分程序会把自己的日志文件交由rsyslog管理,因而这些程序使用的日志记录已具有相似的格式。

2.2用户日志:这种日志数据用于记录linux操作系统用户登录及退出系统的相关信息,包括用户名、登录的终端、登录时间、来源主机、正在使用的进程操作等。

2.3程序日志:有些应用程序会选择由自己独立管理一份日志文件,而不是交给rsyslog服务管理,用于记录本程序运行过程中的各种事件信息。由于这些程序只负责管理自己的日志文件,因此不同程序使用的日志记录格式可能会存在较大的差异。

3.常见的日志文件:(/var/log/)

大多数日志文件是纯文本文件,可以用cat 、head、tail等来查看

文件类型用file命令查,格式:file 文件名或者目录名

secure:安全相关,主要是用户认证,如登录 、创建和删除账号 、sudo等

messages:记录linux内核消息及各种应用程序的公共日志消息,包括启动、I/O错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获取相关的时间记录信息。

boot.log:系统启动日志。能看到启动流程。

cron:计划任务日志。会记录crontab计划任务的创建、执行信息。

dmesg:硬件设备信息(device)。纯文本,也可以用dmesg命令查看。

yum.log:yum软件的日志。记录yum安装、卸载软件的记录。

lastlog:用来记录用户最后登录事件的日志。用lastlog查看(二进制日志文件)

btmp:登录失败的信息(bad)。用lastb查(二进制日志文件)

wtmp:该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件,用last查(二进制日志文件)。

  1. 日志文件分析

4.1内核及系统日志

内核及系统日志功能主要由rsyslog软件包提供

/etc/logrotate.d/syslog      //日志轮转(切割)相关文件

/etc/rsyslog.conf          //rsyslogd的主配置文件

/etc/sysconfig/rsyslog       //环境设置配置文件

4.1.1日志类别:(用man 3 syslog来查看)

LOG_AUTH     //安全或授权信息

LOG_AUTHPRIV     //安全或授权信息 (私有)

LOG_CRON     //计划任务

LOG_DAEMON     //系统守护进程

LOG_FTP     //ftp守护进程相关

LOG_KERN     //内核消息 (these can't be generated from user processes)

LOG_LOCAL0     //本地自定义

LOG_LPR     //打印子系统

LOG_MAIL     //邮件子系统

LOG_NEWS     //新闻组子系统

LOG_SYSLOG     //系统消息

4.1.2日志等级level:(用man 3 syslog来查看)

LOG_EMERG     //紧急,紧急情况,系统不可用(例如系统崩溃)。

LOG_ALERT     //警告,需要立即修复,例如系统数据库损坏。

LOG_CRIT     //严重,例如硬盘错误,可能会阻碍程序的部分功能。

LOG_ERR     //错误,运行出现错误

LOG_WARNING     //提醒,可能影响正常功能,但是需要注意的事件

LOG_NOTICE     //注意,不是错误,不会影响正常功能,但是需要注意的事件

LOG_INFO     //信息,一般信息

LOG_DEBUG     //调试,程序或系统调试信息等

以公共日志/var/log/messages文件的记录格式为例,其中每一行表示一条日志消息,每一条消息均包括以下四个字段。

时间标签:消息发出的日期和时间

主机名:生成消息的计算机的名称

子系统名称:发出消息的应用程序的名称

消息:消息的具体内容

4.2用户日志

在wtmp、btmp、lastlog等日志文件中,保存了系统用户登录、退出等相关的事件消息,但这些文件都是二进制的数据文件,不能直接使用cat、tail等文本查看工具进行浏览,需要使用who、w、users、last和lastb等命令获取日志信息。

(1)查询当前登录的用户情况:users、who、w命令

(2)查询用户登录的历史记录:last(用于查询成功登录到系统的用户记录)、lastb(用于查询登录失败的用户记录,也可以直接从安全日志文件/var/log/secure中获得相关信息)命令

4.3程序日志

在Linux系统中,还有相当一部分应用程序没有使用rsyslog服务来管理日志,而是由程序自己维护日志记录。例如,httpd网站服务程序使用两个日志文件access_log和error_log分别记录客户访问事件和错误事件,不同应用程序的日志记录格式差别较大,且没有严格使用统一的格式。

故障 忘记root密码(7.5版本)

  1. grub界面按‘e’
  2. 然后向下找以‘Linux16’开头在后输入‘init=/bin/bash’不知selinux 输入‘enforcing=0’
  3. 接着Ctrl+x以单用户启动
  4. mount -o rw,remount / 因单用户权限过低(只读),添加权限
  5. passwd root 然后修改密码
  6. touch / .autorelabel 如selinux关闭不需执行
  7. exec /sbin/init

排除文件系统故障

  1. dd if=/dev/zero of=/dev/sdb1 bs=512 count=4破坏/dev/sdb1 文件系统数据库,从而尝试,    不可挂载 ’ (null) ’
  2. 重启
  3. xfs_repair /dev/sdb1 再次尝试,且成功挂载

磁盘资源耗尽故障

1)模拟i节点耗尽故障

# mkdir  /dir2

# mount  /dev/sdb2  /dir2

# df  -i  /dir2

编写一个测试程序,运行该程序后可以耗尽sdb2分区中所有可用的i节点。

运行测试程序,确认磁盘空间占用情况

当i节点耗尽以后,在该文件系统中在创建新的文件时,将出现“设备上没有空间”的错误提示,通过df命令可以查看到分区中实际上还有可用的剩余空间,但是因为i节点已经用完,所以无法创建新的文件

修复i节点耗尽故障

只需找出该分区中占用大量i节点的细小文件或空文件,并进行转移或者删除即可。

  1. 模拟磁盘容量耗尽故障
  1. 挂载光盘

2.加容量

3.find 查找大文件删除

4.查看磁盘

   

扩展:添加磁盘不重启

1. 添加了磁盘后查看,没有刷新出来

[root@node /]# fdisk -l

2. 查看主机总线号

root@node /]# ls /sys/class/scsi_host/

host0  host1  host2

3.重新扫描SCSI总线来添加设备

[root@node /]# echo "- - -" > /sys/class/scsi_host/host0/scan

[root@node /]# echo "- - -" > /sys/class/scsi_host/host1/scan

[root@node /]# echo "- - -" > /sys/class/scsi_host/host2/scan

4. 查看磁盘,可以看到 /dev/sdb这个就是新加的盘

[root@node /]# fdisk -l

扩展:添加网卡不重启

1.首先切换到/etc/sysconfig/network-scripts目录下

2.仿照第一块网卡的配置文件为第二块网卡添加配置文件,配置文件名ifcfg-网卡名,网卡名可以通过ifconfig获取

3.需要修改的字段包括,NAME改成第二块网卡的网卡名、DEVICE改成第二块网卡的网卡名、UUID可以通过nmcli con show查看然后修改

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白xkk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值