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

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

linux文件系统:

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

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

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

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

创建文件:第一个是实际空间大小的要占,第二个就是元信息。元信息和实际数据都保存在硬盘上。元信息(inode)占128字节或者256字节。

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

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

时间戳:

atime:只要读取文件就会更新这个时间

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

ctime:修改文件的权限也会更新这个时间。

inode的内容:

inode号:linux系统都是识别文件的inode号

元信息发生了变化,inode号也会随之改变

inode号的总数?

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

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

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

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

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

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

实验:

1、exit4

2、xfs 要有结论 20M 模拟把inode号耗尽,看看还能不能继续写入?能写入的话,能写入多少呢?

可以继续写入,第一次能多写61个,第二次能行134个

如果inode号满了,exit4和xfs之间有什么区别?

exit4不能继续创建文件了,但xfs还可以继续创建文件

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

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

xfsdump 备份

xfsrestore 恢复

xfsdump 命令的选项:

-f 指定需要备份的硬盘分区(硬件设备的挂载点也可以)

-L 指定标签

-M 指定设备标签

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

xfsdump使用限制:

1、只能备份xfs文件系统

2、只能备份已经挂载的文件系统

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

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

5、如果两个设备的uuid相同,不能备份(这种情况几乎不会有)

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

[root@localhost ~]# xfsdump -f /opt/backup /dev/sdb2 [-L backup -M sdb2]

-f 执行文件

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

/dev/sdb2 设备

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

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

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

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

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

xfsrestore -f /opt/backup /data1/

前一个是备份的问价

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

具体操作:

[root@localhost opt]# xfsdump -f /opt/backup /dev/sdb3 [-L backup -M sdb3]              #将data3目录下的内容进行备份
[root@localhost opt]# cd /data3         #进入data3目录下
[root@localhost data3]# ls              #查看现有的文件
123.txt  qwe.txt
[root@localhost data3]# ls -i           #查看现有文件的inode号
68 123.txt  69 qwe.txt
[root@localhost data3]# rm -rf *        #删除现有文件
[root@localhost /]# xfsrestore -f /opt/backup /data3/       #将文件恢复
[root@localhost /]# cd /data3
[root@localhost data3]# ls              #被删的文件恢复了
123.txt  qwe.txt
[root@localhost data3]# ls -i           #inode号改变了
74 123.txt  75 qwe.txt
​

EXT类型备份和恢复:

ext4只能在centos6

ext3格式:需要extundelete进行恢复

日志分析:

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

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

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

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

访问日志和一些自由业务日志不包含其中。

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

/var/log/dmesg: 引导过程中的日志信息

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

/var/log/secure: 用户认证的相关消息

linux的日志级别:

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

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

日志级别怎么定义:

*.info *:表示所有,表示系统当中的设备,或者程序。

info:包含info以及info级别以上的日志。

auth 用户认证产生的体制

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 /var/log/mail.log: 只记录日志级别是info的

mail.!info /var/log/mail.log: 除了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、关闭防火墙和安全机制

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

2、打开系统管理日志

[root@test2 opt]# vim /etc/rsyslog.conf 
73 local7.*                                                /var/log/boot.log
74 local6.*                                                /var/log/ssh.log     #在74行加一个自定义的日志

3、配置sshd_config文件

[root@test2 etc]# vim /etc/ssh/sshd_config          #进入sshd_config文件内
 32 #SyslogFacility AUTHPRIV                            #将32行注释掉
 33 SyslogFacility LOCAL6                               #将ssh日志保存到我们之前自定义的日志中去

4、将两个服务重启一下

[root@test2 etc]# systemctl restart rsyslog.service 
[root@test2 etc]# systemctl restart sshd

5、打开ssh.log的日志

[root@test2 log]# tail -f ssh.log 
May 31 16:11:03 localhost sshd[15025]: Server listening on 0.0.0.0 port 22.
May 31 16:11:03 localhost sshd[15025]: Server listening on :: port 22.
May 31 16:11:47 localhost sshd[15037]: Accepted password for root from 192.168.60.1 port 49991 ssh2

6、用另一个主机test3访问主机test2

[root@test3 ~]# ssh root@192.168.60.20
The authenticity of host '192.168.60.20 (192.168.60.20)' can't be established.
ECDSA key fingerprint is SHA256:exDKRdJYt8I/epk5vy8tx4NIWpdeTgKktVBWDTq1jmU.
ECDSA key fingerprint is MD5:ae:80:df:32:41:cb:64:3b:6c:ad:1d:92:e1:77:40:04.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.60.20' (ECDSA) to the list of known hosts.
root@192.168.60.20's password: 
Last login: Fri May 31 16:18:20 2024

7、主机test2显示test3访问test2的ssh日志

[root@test2 log]# tail -f ssh.log
May 31 16:11:03 localhost sshd[15025]: Server listening on 0.0.0.0 port 22.
May 31 16:11:03 localhost sshd[15025]: Server listening on :: port 22.
May 31 16:11:47 localhost sshd[15037]: Accepted password for root from 192.168.60.1 port 49991 ssh2
May 31 16:15:54 localhost sshd[15130]: Accepted password for root from 192.168.60.30 port 44106 ssh2

第二个实验:

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

test2 192.168.60.20 日志收集服务器

test3 192.168.60.30 20上面产生的日志,都会发到20上,30自己不再记录日志

操作:

1、在主机test3里更改rsyslog.conf文件

[root@test3 ~]# vim /etc/rsyslog.conf 
 19 $ModLoad imtcp                  #将19行和20行的注释去掉
 20 $InputTCPServerRun 514
 54 #*.info;mail.none;authpriv.none;cron.none                /var/log/messages          #将54行注释
 55 *.info;mail.none;authpriv.none;cron.none               @@192.168.60.20          #加一个55行,将test3的系统日志放到test2内的系统日志

2、在主机test2里更改rsyslog.conf文件

[root@test3 ~]# vim /etc/rsyslog.conf 
 19 $ModLoad imtcp                  #将19行和20行的注释去掉
 20 $InputTCPServerRun 514

3、在test3里重启一下rsyslog.service文件

[root@test3 ~]# systemctl restart rsyslog.service           #重启rsyslog.service文件
[root@test3 ~]# netstat -antp | grep 514
tcp        0      0 0.0.0.0:514             0.0.0.0:*               LISTEN      16771/rsyslogd      
tcp6       0      0 :::514                  :::*                    LISTEN      16771/rsyslogd      

4、在test2里重启一下rsyslog.service文件

[root@test2 log]# systemctl restart rsyslog.service             #重启rsyslog.service文件

5、在test2里打开系统日志

[root@test2 log]# tail -f /var/log/messages
May 31 16:50:01 localhost systemd: Started Session 60 of user root.
May 31 17:00:01 localhost systemd: Started Session 61 of user root.
May 31 17:01:01 localhost systemd: Started Session 62 of user root.
May 31 17:10:01 localhost systemd: Started Session 63 of user root.
May 31 17:10:54 test2 systemd: Stopping System Logging Service...
May 31 17:10:54 test2 rsyslogd: [origin software="rsyslogd" swVersion="8.24.0-34.el7" x-pid="14958" x-info="http://www.rsyslog.com"] exiting on signal 15.
May 31 17:10:54 test2 systemd: Stopped System Logging Service.
May 31 17:10:54 test2 systemd: Starting System Logging Service...
May 31 17:10:54 test2 rsyslogd: [origin software="rsyslogd" swVersion="8.24.0-34.el7" x-pid="16198" x-info="http://www.rsyslog.com"] start
May 31 17:10:54 test2 systemd: Started System Logging Service.

6、在test3里模拟一下

[root@test3 ~]# logger "this is xy102"

7、在test2的系统日志里显示

[root@test2 log]# tail -f /var/log/messages
May 31 17:14:07 test2 systemd-logind: Removed session 56.
May 31 17:15:02 test3 root: this is xy102

8、在test3的系统日志里不显示

[root@test3 ~]# tail -f /var/log/messages
May 31 17:07:05 localhost systemd: [/usr/lib/systemd/system/firstboot-graphical.service:14] Support for option SysVStartPriority= has been removed and it is ignored

@@192.168.233.10

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

@表示使用UDP协议进行传输

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

ESTABLISHED:表示端口之间已经建立连接而且正在传输数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/665032.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python】解决Python报错:AttributeError: ‘generator‘ object has no attribute ‘xxx‘

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

【核心动画-关键帧动画-CAKeyframeAnimation Objective-C语言】

一、接下来,我们来说这个关键帧动画, 1.我们把之前的基本动画,这一坨代码,备份到test1方法里边, 然后,开始说我们的关键帧动画,步骤都是一样的,都是三大步: // 关键帧动画 // 1.做什么动画 // 2.怎么做动画 // 3.对谁做动画 1)做什么动画 第一,我们现在要创建…

计算机图形学入门04:视图变换

1.MVP变换 将虚拟场景中的模型投影到屏幕上,也就是二维平面上,需要分三个变换。 1.首先需要知道模型的位置,也就是前面提到的基本变换,像缩放、平移,旋转,也称为模型(Model)变换。 2.然后需要知道从…

STM32定时器与PWM对LED灯的控制

文章目录 一、定时器——Timer(一)概念(二)分类(三)功能(四)结构1.模块一——时基单元2.模块二——输出比较模块 二、实验内容(一)标准库点亮LED灯1.实验说明…

99.网络游戏逆向分析与漏洞攻防-ui界面的设计-角色信息显示的界面与功能

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果,代码看不懂是正常的,只要会抄就行,抄着抄着就能懂了 内容…

新型 Meterpreter 后门能够在图片中隐藏恶意代码

据Cyber Security News消息,ANY.RUN 沙盒分析了一种被称为Meterpreter 的新型后门恶意软件,能利用复杂的隐写技术将恶意有效载荷隐藏在看似无害的图片文件中。 基于Meterpreter的攻击从一个包含 PowerShell 脚本的 .NET 可执行文件开始,该脚…

解决VSCode右键没有Open In Default Browser问题

在VSCode进行Web小程序测试时,我们在新建的HTML文件中输入 !会自动生成页面代码骨架,写入内容后,我们想要右键在浏览器中预览。发现右键没有“Open In Default Browser”选项。原因是没有安装插件。 下面是解决方案:首先在VSCode找…

【CSS布局】响应式设计原则以及双飞翼布局圣杯布局

历史小剧场 温体仁未必是奸臣,钱谦益未必是好人,不需要惊讶,历史往往跟你所想的并不一样。英雄可以写成懦夫,能臣可以写成奸臣,史实并不重要,重要的是,谁来写。----《明朝那些事儿》 响应式设计…

【计算机毕设】基于SpringBoot的学生心理咨询评估系统设计与实现 - 源码免费(私信领取)

免费领取源码 | 项目完整可运行 | v:chengn7890 诚招源码校园代理! 1. 研究目的 随着社会的快速发展和竞争压力的增加,学生心理健康问题日益突出。设计和实现一个基于SpringBoot的学生心理咨询评估系统,旨在…

【Seafile】Seafile容器版文件删除后存储空间不释放问题解决

Seafile是一款非常优秀的网盘系统,我们可以根据官方文档,在本地虚拟机研究Seafile免费版的安装和使用,安装建议采用使用docker容器的方式。 不过在使用过程中,刚接触的小伙伴可能会遇到这样的问题: 删除网盘里面的文…

煤矿输送设备无人化运维巡检解决方案

一、煤矿行业目前存在的挑战和难题 煤矿行业面临着复杂的环境,如粉尘、潮湿、高温、高瓦斯等,对巡检设备和人员安全有威胁。并且设备分布广、需要长时间作业,全面巡检难度大、对巡检工作的耐力和持续性要求高。而煤矿输送设备无人化运维巡检…

OAK相机如何将 YOLOv10 模型转换成 blob 格式?

编辑:OAK中国 首发:oakchina.cn 喜欢的话,请多多👍⭐️✍ 内容可能会不定期更新,官网内容都是最新的,请查看首发地址链接。 Hello,大家好,这里是OAK中国,我是Ashely。 专…

MedSAM 学习笔记(续):训练自定义数据集

1、下载官方权重 官方的预训练权重:https://dl.fbaipublicfiles.com/segment_anything/sam_vit_b_01ec64.pth 下载后保存在:work_dir/SAM/sam_vit_b_01ec64.pth 目录 2、摆放数据集 因为MedSAM 分割模型需要对3D数据集进行切片处理,也就是对nii.gz 数据处理成 npy 格式 …

计算机图形学入门05:投影变换

1.投影变换 上一章已经介绍了投影变换,就是将三维图像投影到二维平面上,而投影变换又分为正交投影(Orthographic Projection)和透视投影(Perspective Projection)。如下图: 正交投影 没有近大远小的现象,无论图形与视点距离是远是…

通过定时器和脉冲控制LED

一、定时器 (一)定时器简介 STM32定时器是STM32微控制器中的重要块,用于生成精确的时间基准。它可以用于测量时间间隔、产生脉冲、实现定时中断等功能。通过配置寄存器,用户可以灵活地控制定时器的工作模式和参数,实现…

Visual Studio Code使用(C++项目新建,运行)

VS Code 直接在官网下载安装。 接下来安装插件,下图是C所需的对应插件 1.新建项目 VS Code下载安装完成后,直接进入欢迎页: 在访达/文件夹中新建一个文件夹,欢迎页点击【打开】,选择刚刚新建的文件夹。点击第一个图…

材质技术在AI去衣中的作用

随着人工智能技术的飞速发展,越来越多的应用场景开始涌现。其中,AI去衣技术作为一种新兴的图像处理技术,已经在很多领域得到了广泛的应用。而在AI去衣技术中,材质技术起到了至关重要的作用。本文将详细介绍材质技术在AI去衣中的作…

autocad背景色、引线文字大小

一、改变背景 在命令行输入op,回车,弹出配置对话框: 二、改变引线文字大小 选中引线,右键选择【特性】,在文字选项卡中设置文字高度:

【机器学习】探索未来科技的前沿:人工智能、机器学习与大模型

文章目录 引言一、人工智能:从概念到现实1.1 人工智能的定义1.2 人工智能的发展历史1.3 人工智能的分类1.4 人工智能的应用 二、机器学习:人工智能的核心技术2.1 机器学习的定义2.2 机器学习的分类2.3 机器学习的实现原理2.4 机器学习的应用2.5 机器学习…

JVM-之GC日志

一、 开启gc 日志 在项目中开启GC 日志打印后会查看gc 日志如下 nohup java -Xms768m -Xmx768m -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath./dumplog/dumplog.log -Xloggc:./dumplog/gc.log -XX:PrintGCDetails -XX:PrintGCDateStamps -XX:PrintHeapAtGC -jar xxxx…