目录
前言
熟悉Linux系统中常见的日志文件,了解一般故障的分析与解决办法,将有助于管理员快速定位故障点,“对症下药”,及时解决各种系统问题
一.inode和block的概述
- 文件数据包括元信息与实际数据,文件存储在硬盘上,硬盘最小存储单位是"扇区",每个扇区存储512字节
1.block(块)
- 一般连续八个扇区组成一个“块”(block),一个块是4K大小,是文件存取的最小单位
- 操作系统读取硬盘的时候,一次性读取一个块
2.inode(索引节点)
- 每个inode都有一个号码,操作系统用inode号码来识别不同的文件。Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称,文件名和inode号码是一一对应关系,每个inode号码对应一个文件名
3.查看文件名对应的inode 号码有两种方式
- ls -i 文件名 (仅显示文件名和大小)
- stat 文件名 (更详细一些)
- inode也会消耗硬盘空间,所以格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据:另一个是inode区,存放inode所包含的信息。每个inode的大小,一般是128字节或256字节
- 通常情况下不需要关注单个inode的大小,而是需要重点关注inode.总数。inode的总数在格式化时就给定了,执行**“df-i”**命令即可查看每个硬盘分区对应的的inode总数和已经使用的inode数量
4.inode耗尽故障处理
- 之前我们学习过,每个文件与inode是相互对应的关系,也就是说每个文件都会有一个inode号码,但这样就会有可能会发生inode已经用光,但硬盘还未存满的情况
- 一旦发生这种情况后,我们就无法再在硬盘上创建新文件了,为了更直观的让大家理解,下面通过一个案例来模拟Linux文件系统中文件数量耗尽的故障
#使用fdisk创建分区/dev/sdb1, 分区大小30M即可
fdisk /dev/sdb
mkfs.ext4 /dev/sdb1
mkdir /test
mount /dev/sdb1 /test
df -i
#模拟inode节点耗尽故障
for ((i=1; i<=7680; i++)) ;do touch /test/file$i;done
touch {1..5680}.txt
df -i
df -hT
#删除文件恢复
rm -rf /test/*
df -i
df -hT
二.EXT恢复误删文件
- 我们很多普通用户在删除一个文件的时候,实际上并不知晓inode节点和block数据,仅仅只是找到这个文件(名),然后删除
- 实际上Linux是通过Link(链接)的数量来控制文件删除的,只有当一个文件不存在任何Link的时候,这个文件才会被彻底删除
- 针对Linux系统下的EXT文件系统,可以用extundelete恢复工具来恢复文件,它是一个开源的Linux数据恢复工具,支持ext3、ext4文件系统(ext4只能在CentOS6版本中恢复)
1.准备(编译安装extundelete)
- 可以接着刚才新创建好的那个分区接着做,不过要先解挂载,然后重新格式化为“ext3”再来挂载
- 在编译安装extundelete之前需要先安装两个依赖包(首先注意自己有没有挂载镜像)
- 安装完依赖包后,可以将软件包拷进来,或者是直接下载(直接复制粘贴即可)
- 解压、配置、编译、安装
2.模拟删除
- 回到/test/目录下,往该目录下新建文件,(“echo”是输出的意思,相当于用a的内容创建出四个文件)
- 查看文件系统/dev/sdb1下存在哪些文件,i节点从2开始,2代表该文件是系统最开始的目录
- 我们再删除a文件和b文件之后,“ls”会发现a和b文件都没有了,再输入“extundelete /dev/sdb1 --inode 2”命令时也会发现a和b文件处于Deleted被删除状态
3.执行恢复操作
- 首先回到家目录,解挂/test/,再使用恢复/dev/sdb1文件系统下的所有内容,执行完此命令后,会在当前目录下出现一个新目录,里面保存了已经恢复的文件
- extundelete的用法还有很多,有兴趣的同学可以通过help查看更多的详细用法
- 文件被误删后,inode号若被覆盖(目录被占满或格式化)就无法再找回恢复了
三.XFS类型文件恢复
1.概述
- 是另外一种类型,不是直接删除恢复了,而是备份恢复
- CentOS7默认采用xfs类型的文件,xfs类型的文件可以用xfsdump与xfsrestore工具进行备份恢复
- xfsdump的备份级别有两种: 0表示完全备份: 1-9表示增量备份
- 增量备份:备份完毕之后,磁盘若有新增内容,它只会备份新增内容,而不是再一次的进行完整备份
- xfsdump 的备份级别默认为0.
2.命令格式
- xfsdump -f 指定备份存放位置 要备份的路径或设备文件
3.常用选项
- -f:指定备份文件目录
- -L:指定会话标签(如果不指定的话,直接执行会提示我们输入)
- -M:指定设备标签
- -s:备份单个文件(后面不能直接跟路径)
4.使用限制
- 只能备份已挂载的文件系统
- 必须使用root的权限才能操作
- 只能备份XFS文件系统
- 备份后的数据只能让xfsrestore解析
四.日志文件
1.日志的功能
- 日志文件用于记录Linux系统中各种运行信息的文件,相当于是一种“日记”
- 不同的日志文件记载了不同类型的信息,比如用户登录时间、程序报错等等
- 通过阅读日志,有助于诊断和解决系统故障(有据可查)
- 此外,当主机受到黑客攻击时,日志文件还有助于帮助寻找黑客留下的痕迹(比如暴力破解多次尝试密码来登录)
2.日志的分类
在Linux系统中,日志数据主要包括以下三种类型:
- 内核及系统日志:
- 由系统服务rsyslog统一进行管理,根据其主配置文件/etc/rsyslog.conf中的设置决定将内核消息及各种系统程序消息记录到什么位置
- 系统中相当一部分程序会把自己的日志文件交由rsyslog日志管理,因此这些格式基本一致
- 用户日志:
- 记录系统用户登录及退出系统的相关信息
- 包括用户名、登录的终端、登录时间、来源主机、正在使用的进程等
- 程序日志:
- 用于记录本程序运行过程中的各种事件信息
- 由各种应用程序独立管理的日志文件,记录格式不统一
- Linux操作系统本身和大部分服务器程序的日志文件都默认放在目录/var/log下
3.常见的日志文件
- 对于Linux系统中的日志文件,有必要了解其各自的用途,这样才能在需要的时候更快更准确的找到问题所在,及时解决各种故障,下面介绍一些常见的日志文件
日志文件 | 介绍 |
---|---|
内核及公共消息日志:/var/1og/messages | 记录Linux内 核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等 |
计划任务日志:/var/log/cron | 记录crond计划任务产生的事件信息 |
系统引导日志:/var/1og/dmesg | 记录Linux 系统在引导过程中的各种事件信息 |
#邮件系统日志:/var/ log/maillog | 记录进入或发出系统的电子邮件活动 |
用户登录日志:/var/1og/secure | 记录用户认证相关的安全事件信息 |
/var/log/lastlog | 记录每个用户最近的登录事件;二进制格式 |
/var/log/wtmp | 记录每个用户登录、注销及系统启动和停机事件;二进制格式(反正你看不懂) |
/var/run/btmp | 记录失败的、错误的登录尝试及验证事件;二进制格式 |
- 进入目录,"vim 目标"即可查看日志
4.日志文件的分析
- 熟悉了系统中的主要日志文件后,再来介绍针对日志文件的分析方法
- 分析日志文件的目的在于浏览日志查找关键信息,对服务器进行调试,以及判断故障的原因等
- 对于大多数文本格式的日志文件(如内核及系统日志、大多数的程序日志),只要使用tail、more、less、cat等文本处理工具就可以查看日志内容
- 而对于一些二进制格式的日志文件(如用户日志),则需要使用特点的查询命令
5.内核及系统日志
- 由系统服务 rsyslog 统一管理
- 软件包:rsyslog-7.4.7-16.el7.x86_ 64
- 配置文件: /etc/rsyslog.conf
- 主要程序: /sbin/rsyslogd
- 输入“vim /etc/rsyslog.conf”可以进入查看配置文件
- "*.info"表示info等级及以上的所有等级的信息都写到对应的日志文件里
- “mail.none”表示某件事的信息不写到日志文件里
- Linux系统内核日志消息的优先级别(数字等级越小,优先级越高,消息越重要) :
优先级别 | 说明 |
---|---|
0 | EMERG(紧急):会导致主机系统不可用的情况 |
1 | ALERT(警告):必须马上采取措施解决的问题 |
2 | CRIT (严重) :比较严重的情况 |
3 | ERR (错误) :运行出现错误 |
4 | WARNING (提醒):可能影响系统功能,需要提醒用户的重要事件 |
5 | NOTICE (注意):不会影响正常功能,但是需要注意的事件 |
6 | INFO(信息):一般信息 |
7 | DEBUG (调试) :程序或系统调试信息等 |
- 一般在实际使用中,最多纪录到ERR(3,错误)级别,不可能把所有的信息都纪录到日志中,为了效率,只纪录重要的(就是说要么就是普通日志或者错误日志,更多的是错误日志,看看到底发生了什么故障)
6.日志记录的一般格式
- 内核及大多数系统消息都被记录到公共日志文件/var/log/messages中,而其他一些程序消息被记录到各自独立的日志文件中,此外日志消息还能够记录到特定的存储设备中,或者直接发送给指定用户
- 查看/var/log/messages文件的内容
- 每一行表示一条日志消息,每一条消息均包括四个字段
- 时间标签:消息发出的日期和时间
- 主机名:生成消息的计算机的名称
- 子系统名:发出消息的应用程序的名称
- 消息:消息的具体内容
- 有些情况下,可以设置rsyslog,使其在把日志文件记录到文件的同时将日志信息发送到打印机进行打印,这样无论网络入侵者怎么修改日志都不能清除入侵的痕迹
- rsyslog是一个经常会被攻击的显著目标,破坏了它会使管理员难以发现入侵以及入侵痕迹,因此要特别注意监控其守护进程及配置文件
总结
熟练掌握日志文件可以在工作中起到事半功倍的效果,可以帮助我们解决很多故障问题