Linux文件系统与日志分析

Posted 世界美好與你環環相扣

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux文件系统与日志分析相关的知识,希望对你有一定的参考价值。

一.inode和block概述

1.1 inode和block

一个文件有一个inode,通过indoe来读取文件,存放着文件的元信息即属性信息,
文件数据包括元信息与实际数据
●文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节
●block(块)
连续的八个扇区组成一个block 大小为4K
是文件存取的最小单位
●inode(索引节点)
中文译名为“索引节点”,也叫i节点

1.2Inode的内容Inode包含文件的元信息

●文件的字节数
●文件拥有者的User lD
●文件的Group ID
●文件的读、写、执行权限
●文件的时间戳
用STAT命令可以查看某个文件的inode信息
●示例:stat aa.txt

1.3stat命令

stat +文件 用来此案是文件的详细信息,包括indo,atime,mtime.ctime
atime   访问时间
mtime  修改文章内容时间
ctime   修改元信息时间
ll -i  a   显示节点号
df  -i  看文件系统的inode情况
stat -f a  显示文件系统的详细情况

1.4df指令

df - 报告文件系统磁盘空间的使用情况
df -a:显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统。
df -h:以容易理解的格式输出文件系统大小,例如124KB、345MB、46GB。
df -i:显示i节点信息,而不是磁盘块。
df -t:显示各指定类型的文件系统的磁盘空间使用情况。
df -x:列出不是某一指定类型文件系统的磁盘空间使用情况。
df -T:显示文件系统类型。
df 以512字节为单位
df –k 以1024字节为单位

在这里插入图片描述

1.5inode的内容

●目录文件的结构
目录也是一种文件
目录文件的结构
在这里插入图片描述
●每个inode都有一个号码,操作系统用inode号码来识别不同的文件
●Linux系统内部不使用文件名,而使用inode号码来识别文件
对于用户,文件名只是inode号码便于识别的别称

1.6Inode的号码

用户通过文件名打开文件时,系统内部的过程
1.系统找到这个文件名对应的inode号码
2.通过inode号码,获取inode信息
3.根据inode信息,找到文件数据所在的block,读出数据
查看inode号码的方法
ols -i命令:查看文件名对应的inode号码ls -i aa.txt
stat命令:查看文件inode信息中的inode号码stat aa.txt
文件存储小结
磁盘分区后的结构
在这里插入图片描述
访问文件的简单流程
在这里插入图片描述

1.7inode的大小

●inode也会消耗硬盘空间
每个inode的大小
一般是128字节或256字节
●格式化文件系统时确定inode的总数
●使用df -i命令可以查看每个硬盘分区的inode总数和已经使用的数量

1.8inode的特殊作用

由于inode号码与文件名分离,导致一些Unix/Linux系统具有以下的现象
●当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件
●移动或重命名文件时,只改变文件名,不影响inode号码
●打开一个文件后,系统通过inode号码来识别该文件,不再考虑文件名

xfs_info  /dev/sda1   xfs类型看inode大小
dumpe2fs   ext4类型

按节点号删除文件
在这里插入图片描述

二:硬链接与软链接

2.1链接文件

一种类似于Windows的快捷方式功能的文件,可以快速连接到目标文件或目录,这种称为软链接
另一种则是通过文件系统的inode链接文件来产生新的文件名,而不是产生新文件,这种称之为硬链接

2.2硬链接

一般情况下,文件名和inode号码是一一对应关系,每个inode号码对应一个文件名。

但是Linux系统允许,多个文件名指向同一个inode号码。这表示可以用不同的文件名来访问同样的内容

ln命令可以创建硬链接,命令基本格式

ln 源文件 目标  /// 不能对目录做硬链接

运行此命令后,源文件和目标文件的inode号码相同,都指向同一个inode。
inode信息中的“链接数”此时就会增加1
当一个文件拥有多个硬链接时,对文件内容修改,会影响到所有文件名
但删除一个文件名,不会影响另一个文件名的访问
删除一个文件名,就会使得inode信息中的“链接数”减少1

2.3软链接

软链接就是再创建一个独立的文件,而这个文件会让数据的读取指向它连接的那个文件的文件名
例如:文件A和文件B的inode号虽然不一样,但是文件A的内容是文件B的路径。
读取文件A时,系统会自动将访问者导向文件B
此时,文件A就称为文件B的“软链接(soft link)”或者“符号链接(symbolic link)”
这表示,文件A依赖于文件B而存在,如果删除了文件B ,打开文件A就会报错
这是软链接与硬链接的最大不同:文件A指向文件B的文件名,而不是文件B的inode号码,文件B的inode“链接数”不会因此产生变化。
软链接的创建命令的基本格式为:

ln -s 源文件或目录 目标文件或目录

2.4软链接与硬链接总结

链接文件是为文件或目录建立链接文件
在这里插入图片描述
删除原始文件后,软链接无法找到原始文件的文件名,所以会报错。硬链接与原始文件inode相同,所以不影响访问,仍旧可用。
删除一个文件,实际上并不清除inode节点和block的数据,只是在这个文件的父目录里面的block中,删除这个文件的名字
Linux是通过link的数量来控制文件的删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除

三.恢复误删除的文件

恢复XFS类型的文件

3.1xfsdump命令格式

xfsdump -f 备份存放位置 要备份的路径或者设备文件

xfsdump备份级别(默认为0)
0:完全备份
1-9:增量备份
xfsdump常用选项:-f,-L,-M,-s
xfsrestore命令格式

xfsrestore -f 恢复文件的位置 存放恢复后文件的位置

3.2xfsdump使用限制

只能备份已挂载的文件系统
必须使用root的权限才能操作
只能备份xfs文件系统
备份后的数据只能用xfsrestore解析
不能备份两个具有相同UUID的文件系统

3.3恢复XFS类型的文件

【1】磁盘分区挂载

fdisk sdb 
mkdir  /opt/bak mkdir  /opt/bak
mount /dev/sdb1  /opt/bak/

【2】xfsdump备份

xfsdump -f /bak   /dev/sdb1  -L sdb1 -M  sdb1  // -L -M 后面跟的是卷标
xfsdump   -I   查看

【3】恢复

xfsrestore   -f /bak  /opt/bak
xfsdump  -l   指定默认级别   // 刚开始的时候默认为 0

四.日志文件

●日志的功能
用于记录系统,程序运行中发生的各种事件
通过阅读日志,有助于诊断和解决系统故障
●日志文件的分类
内核及系统日志:由系统服务rsyslog统一进行管理,日志格式基本相似
用户日志:记录系统用户登录及退出系统的相关信息
●程序日志
由各种应用程序独立管理的日志文件,记录格式不统一

4.1日志保存日志

默认/var/log 目录下
在这里插入图片描述

4.2主要日志文件介绍

/var/log/messages:记录Linux内核消息和各种应用程序的公共日志信息,包括启动,I/O错误,网络错误,程序故障等

对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的时间记录信息
/var/log/cron:记录crond计划任务产生的事件信息
/var/log/dmesg:记录Linux系统在引导过程中的各种事件信息
/var/log/maillog:记录进入或发出系统的电子邮件活动
/var/log/lastlog:记录每个用户最近的登录时间
/var/log/secure:记录用户认证相关的安全事件信息
/var/log/wtmp:记录每个用户登录,注销及系统启动和停机事件
/var/log/btmp:记录失败的,错误的登录尝试及验证事件
yum安装的都存放在/var/log
手工编译安装的都是自己指定的目录

4.3日志消息的级别

受rsyslogd服务管理的日志文件都是Linux系统中最重要的日志文件,它们记录了Linux系统中内核,用户认证,邮件,计划任务等最基本的系统消息
在Linux内核中,根据日志消息的重要程度不同,将其分为不同的优先级(数字等级越小,优先级越高,消息越重要)
在这里插入图片描述
内核及大多数系统消息都被记录到公共日志文件/var/log/messages中,而其他一些程序消息被记录到各自独立的日志文件中

日志消息还可以记录到特定的存储设备中,或者直接发送给指定用户

日志记录的一般格式

[root@localhost log]# more messages
Oct 23 14:13:17 localhost journal: Runtime journal is using 8.0M (max allowed 91.1M, trying
 to leave 136.7M free of 903.6M available → current limit 91.1M).
Oct 23 14:13:17 localhost kernel: Initializing cgroup subsys cpuset
Oct 23 14:13:17 localhost kernel: Initializing cgroup subsys cpu
Oct 23 14:13:17 localhost kernel: Initializing cgroup subsys cpuacct
以这段消息举例:Oct 23 14:13:17 localhost kernel: Initializing cgroup subsys 
时间标签:Oct 23 14:13:17:消息发出的日期和时间
主机名:localhost:生成消息的计算机的名称
子系统名称:kernel:发出消息的应用程序的名称
消息:Initializing cgroup subsys :消息的具体内容

4.4保存目录

保存了用户登录,退出系统等相关信息
/var/log/lastlog:最近的用户登录事件
/var/log/wtmp:用户登录,注销及系统开,关机事件
/var/log/utmp:当前登录的每个用户的详细信息
/var/log/secure:与用户验证相关的安全性事件

4.5查看文件指令

users,who,w,
last,看最近正确登录的信息
lastb  最近登录错误的信息
tail -f    tailf 
tail -100  messages | grep -i  error  从100行开始看错误日志
cat /proc/loadavg  看系统负载   // w  top  uptime

查询当前登录的用户情况:users,who,w命令

4.6程序日志分析

由相应的程序独立进行管理

web服务:/var/log/httpd/
access_log,error_log(httpd网站服务程序使用的两个日志文件access_log和error_log,分别记录客户访问事件,错误事件。)
代理服务:/var/log/squid/
access.log , cache.log
FTP服务:/var/log/xferlog

分析工具

文本查看,grep过滤检索,webmin管理套件中查看
awk,sed等文本过滤,格式化编辑工具
webalizer,awstats等专用日志分析工具

4.7内核及系统日志

由系统服务rsyslog统一管理
●软件包: rsyslog-7.4.7-16.el7.x86_64
●主要程序:/sbin/rsyslogd
●配置文件:letc/rsyslog.conf

4.8 journalctl 指令

Contos7才有用来看日志,管理服务进程

journalctl   -xe  看日志(系统提不起来才用)
journalctl   -k  看内核
journalctl   -b  看系统启动
journalctl   -u  看某个服务
journalctl   -e  从尾部开始看最近的
journalctl   -x  提供网址信息

以上是关于Linux文件系统与日志分析的主要内容,如果未能解决你的问题,请参考以下文章

深入理解Linux文件系统与日志分析

Linux系统故障分析与排查--日志分析

Linux文件系统与日志分析

Linux/Centos7系统管理之深入理解Linux文件系统与日志分析

理论+实操:深入理解Linux文件系统与日志分析

linux系统故障分析与排查