23、linux系统文件和日志分析

时间:2024-06-02 15:27:50

linux文件系统与日志分析

文件时存储在硬盘上的,硬盘上的最小存储单位是扇区,每个扇区大大小是512字节。

inode:元信息(文件的属性 权限,创建者,创建日期等)

block:块,连续的八个扇区组成一个块,一个块的大小是4k,创建一个文件,最小也要占4k。

块是文件存储的最小存储单位。

在这里插入图片描述

操作系统读取硬盘,是一次性读取多个扇区一个一个块读取数据。

创建文件:实际空间大小的要占,第二个就是元信息。元信息和实际数据都保存在硬盘上。

元信息,inode 128字节或者256字节。

在这里插入图片描述

一个文件必须占用一个inode号(只要创建文件必须有一个inode号)

至少占用一个block(空文件,也要占一个块)

时间戳:

atime:访问,读取文件就会更新这个时间。

mtime:修改文件数据,更改文件的属性,都会更新这个时间。

ctime:修改文件权限也会更新这个时间。
在这里插入图片描述
inode号:linux系统都是识别文件的inode号

在这里插入图片描述

修改文件内容,硬盘中的位置发生变化,inode号也会发生变化。vim

[root@localhost opt]# ls -i
33624704 123                33965422 nginx-1.22.0
33624702 john-1.8.0.tar.gz  33618581 nginx-1.22.0.tar.gz
33624944 login.sh
[root@localhost opt]# vim 123
[root@localhost opt]# ls -i
33624708 123                33965422 nginx-1.22.0
33624702 john-1.8.0.tar.gz  33618581 nginx-1.22.0.tar.gz
33624944 login.sh


元信息发送了变化,inode也会发送变化

在这里插入图片描述

inode号的总数?df -i

磁盘大小。磁盘越大,inode越多,越小,inode越小。

inode号和文件名分离,二者只是映射关系,linux系统的特有现象:

1、文件名包含特殊字符,rm可能无法正常删除,可以直接删除inode号。

2、移动文件,重命名,inode是不变的。

3、一旦对文件操作,后续所有的认证和识别都是通过inode来的,不再考虑文件名。

4、元信息发送变化,inode也会发生变化。

xfs文件系统,如何能够实现备份和恢复?(必会)

centos7默认使用文件系统就是xfs

xfsfump备份

xfsrestore恢复

xfsdump命令选项:

-f 指定需要备份的文件目录(设备挂载点)/指定备份硬盘分区

-L 指定标签

-M 指定设备标签

-s 备份单个文件,-s 后面不能之间根路径。

xfsdump使用限制:

1、只能备份xfs的文件系统

2、只能备份以及挂载的文件系统

3、只有root权限才能进行操作

4、备份之后的数据要恢复,只能使用xfsrestore解析恢复。

5、如果两个设备的uuid相同,不能备份。

备份完之后,恢复文件,inode号是否会发送变化

1、建立sdb1物理卷,已经创建文件系统及挂载点sdb1,进入挂载目录/data1,写入需要备份的文件,写入后进行备份
xfsdump -f(指定需要备份的文件目录(设备挂载点)/指定备份硬盘分区) /opt/backup /dev/sdb1 [-L backup -M sdb1]
2、进入/data1,删除需要备份文件
[root@localhost data1]# ls
123
[root@localhost data1]# rm -rf *
3、备份恢复
[root@localhost data1]# xfsrestore -f /opt/backup /data1/
[root@localhost data1]# ls
123

/opt/backup 必须是个文件,必须是个不存在的文件,不能是目录,如果已存在,必须是个空文件。

/dev/sdb2 设备

[-L 文件标签(备份文件的标签) ]

[-M 设备标签(要备份的硬盘分区)]

备份级别:全量备份和增量备份

0也是备份 也就是全量备份

1-9是增量备份,一般不用。

xfsrestore -f /opt/backup /data1/

前一个是备份的文件

后一个是恢复到指定的目录

EXT类型备份和恢复:

ext4只能在centos6

ext3格式

extundelet

日志分析:

系统的日志类型以及日志如何分析

linux系统本身的日志和大部分的服务器程序的日志都在/var/log/

/var/log/messages 记录了linux的内核消息,各种应用程序的公共的日志消息。

应用程序公共日志:开 关 重启 网络错误 程序故障这些都属于公共日志

访问日志和一些*业务日志不包含在其中。

cron:记录的是定时任务的日志

dmesg:引导过程的日志信息

maillog:记录进入或者发出的系统电子邮件信息

secure:用户认证的相关信息

在这里插入图片描述

rsyslog

在这里插入图片描述

linux的日志消息级别

在这里插入图片描述

linux的日志级别:数字越小,优先级越高,消息越重要

级号 消息 级别 说明
0 EMERG 紧急 会导致主机系统不可用的情况,系统崩溃。磁盘要满了(EMERG)
1 ALERT 警告 必须要采取措施解决的问题。密码到期,数据库奔溃。
2 CRIT 严重 比较严重的情况,磁盘读写出了故障,有些程序的功能无法启动。
3 ERR 错误 运行出现错误,程序启动失败,端口被占用等等,间的最多的情况,出现最多的,出现了也是要尽快解决的
4 WARNING 提醒 可能会影响功能,需要提醒用户的重要时间,但不是报错。磁盘利用率到了85%
5 NOTICE 注意 也是需要用户注意的,无需处理
6 INFO 信息 一般信息,系统或者应用程序在工作中产生的正常消息
7 DEBUG 调试 程序在开发阶段,调试程序时的信息
none 没有优先级 不记录任何日志消息

*.info 表示所有,表示系统中的设备,或者程序。info:包含info以及info级别以上的日志。

auth 用户认证产生的日志

daemon 守护后台进程的进程

authpriv:SSh,FTP登录验证的信息

news:网络传输产生的信息

syslog:系统的相关日志

kern:系统的内核日志

user:用户进程日志

local-local7:自定义程序

uucp:unix-to-unix copy两个linux之间的通信

mail.info /var/log/mail.log:记录邮件的信息,包含info及info以上的,记录到/var/log/mail.log

mail.=info /ar/log/mail.l0g 只记录日志级别是info的

mail.!info /var/log/mail.10g 除了info的不记录,其他的都记

mail.info;news.info=mail,news.info

日志信息翻译

May 31 13:46:02 test1 systemd: starting The Apache HTTP server…

May 31 13:46:02 表示当前日志发生的时间

test1表示发生的主机名

systemd:哪个系统产生了这个日志

starting The Apache HTTP server…日志的具体内容

第一个实验:ssh的日志单独列出来

1、test1、test2关防火墙、安全机制

[root@test1 opt]# systemctl stop firewalld    ##关闭防火墙
[root@test1 opt]# setenforce 0                ##关闭安全机制

[root@test2 ~]# systemctl stop firewalld
[root@test2 ~]# setenforce 0

2、打开系统日志,单独列出ssh日志

[root@test1 opt]# vim /etc/rsyslog.conf
local7.*                                                /var/log/boot.log
到74行,local6.*                                                /var/log/ssh.log

3、把默认ssh日志存储位置注释

[root@test1 opt]# vim /etc/ssh/sshd_config 
32gg行 32 #SyslogFacility AUTHPRIV   进行注释##
33行写入 33 SyslogFacility LOCAL6     更改日志位置

4、服务刷新

[root@test1 opt]# systemctl restart rsyslog.service

[root@test1 opt]# systemctl restart sshd

[root@test1 opt]# cd /var/log/
[root@test1 log]# ls

anaconda            maillog            spooler-20240519
audit               maillog-20240519   spooler-20240531
boot.log            maillog-20240531   ssh.log

5、查找 ssh.log日志

[root@test1 log]# tail -f ssh.log

[root@test2 ~]# ssh root@192.168.168.10

Are you sure you want to continue connecting (yes/no)? yes

root@192.168.168.10's password: 123

May 31 23:20:12 test1 sshd[48095]: Accepted password for root from 192.168.168.20 port 44206 ssh2


第二个实验:

配置日志服务器,来进行日志收集

test1 192.168168.10 日志收集服务器

test2 192.168.168.20上产生的的日志,都会发到10上,20自己不再记录日志

1、test2进入系统日志配置文件,之前一定关闭防火墙和安全机制

[root@test2 ~]# vim /etc/rsyslog.conf

#*.info;mail.none;authpriv.none;cron.none                /var/log/messages   #注释这一行

*.info;mail.none;authpriv.none;cron.none                @@192.168.168.10 ##日志存储改到192.168.168.10

$ModLoad imudp                                                   ##@@是tcp传输端口打开
$UDPServerRun 514

2、文件配置完成,刷新。

[root@test2 ~]# systemctl restart rsyslog.service 

3、test1日志配置,打开tcp端口514传输

[root@test1 ~]# vim /etc/rsyslog.conf

*.info;mail.none;authpriv.none;cron.none                /var/log/messages        ##不用改

Provides TCP syslog reception

$ModLoad imtcp                                                                ##关闭注释,打开端口
$InputTCPServerRun 514                                                 ##关闭注释,打开端口

[root@test1 ~]# systemctl restart rsyslog.service
[root@test1 ~]# systemctl stop firewalld
[root@test1 ~]# setenforce 0
[root@test1 ~]# tail -f /var/log/messages

4、到test2,输入[root@test2 ~]# logger “this is xy102”

5、test1,出现日志Jun 1 12:42:46 test2 root: this is xy102

6、test2,不会出现日志。

@@表示使用tcp协议进行数据传输

@表示使用udp协议进行数据传输

LISTEN:监听,端口是否开启。端口是否正常传输数据

eatablished:表示端口之间以及建立连接而且正在传输数据。

文件系统:对文件的操作,用户时针对文件名,系统针对的inode好哦,系统都是inode来进行识别。

inode号保存的是元信息,大小,时间戳。

block块 文件的最小存储单位,连续的8个扇区,4k。

创建文件:保存云信息,保存实际数据。

备份个恢复:XFS ext3

*问题:**xfs模拟耗尽inode,能不能写入,若能写入,写入多少。如果inode号满了,ext4和xfs之间有什么区别?***

1、增加硬盘、物理卷分区,创建文件系统,挂载。
在这里插入图片描述

2、查看inode号

在这里插入图片描述

3、创建10237个文件
在这里插入图片描述

4、继续新建到10300个

在这里插入图片描述

5、继续新建到10400个

在这里插入图片描述

总结:1、ext4创建inode号,inode满了以后,不能继续创建inode号。

2、xfs创建文件,消耗inode号,inode号满了以后,可以继续创建inode号,df -i显示可用inode号个数10237,最终消耗10365个inode号。

g-OPyXW2tN-1717227770016)]

2、查看inode号

[外链图片转存中…(img-EPsaF42u-1717227770016)]

3、创建10237个文件

[外链图片转存中…(img-DtMaf1D1-1717227770016)]

4、继续新建到10300个

[外链图片转存中…(img-sSvDPy9Q-1717227770016)]

5、继续新建到10400个

[外链图片转存中…(img-k0TkGW5f-1717227770016)]

总结:1、ext4创建inode号,inode满了以后,不能继续创建inode号。

2、xfs创建文件,消耗inode号,inode号满了以后,可以继续创建inode号,df -i显示可用inode号个数10237,最终消耗10365个inode号。