深入理解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 51454 #*.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:表示端口之间已经建立连接而且正在传输数据。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AVL Design Explorer DOE】

AVL Design Explorer DOE 1、关于DOE的个人理解2、DOE参考资料-知乎2.1 DOE发展及基本类型2.2 DOE应用场景2.3 Mintab 中的 DOE工具3、AVL Design Explorer DOE示例 1、关于DOE的个人理解 仿真和试验一样,就像盲人摸象,在不知道大象的全景之前&#xff…

Java 垃圾回收

一、概述 GC GC(Garbage Collection),在程序运行过程中内存空间是有限的,为了更好的的使用有限的内存空间,GC会将不再使用的对象清除然后将其所占用的内存释放出来。 java的垃圾回收机制 Java的垃圾收集(Garbage Collection, …

嵌入式Linux复制剪切删除指令详解

指令操作 1. cp 复制指令 a. 用法:cp [ 选项 ] [ 源文件或目录 ] [ 目标文件或目录 ]; b. 用途:用于复制文件或目录; c. 通常情况下,复制的都不是空文件夹,所以直接使用 cp 复制空文件会失败&#xff0…

创建Django项目及应用

1 创建Project 1个Project可以对应多个app django-admin startproject myproject 2 创建App python manage.py startapp app01 INSTALLED_APPS [# ...app01,app02,# ... ] 如果要让这个应用在项目中起作用,需要在项目的 settings.py 文件的 INSTALLED_APPS 配置…

java中成员内部类、局部内部类、匿名内部类各自的特点

成员内部类:定义在类的内部,方法的外部,成员内部类作为外部类的成员,可以直接访问外部类的私有属性。 局部内部类:定义在方法的内部,对于局部内部类我们常常使用一个方法,得到一个接口实现类的…

臭氧浓度传感器在食品厂与制药厂中的应用

在食品厂和制药厂的生产过程中,消毒是一个至关重要的环节。有效的消毒可以确保产品免受微生物污染,从而保障消费者的健康。近年来,臭氧作为一种广谱杀菌剂,因其强效的消毒能力和低污染性,在食品厂和制药厂的消毒过程中…

SpringMVC:创建一个简单的SpringMVC框架

目录 一、框架介绍 两个重要的xml文件 SpringMVC执行流程 二、Vscode搭建SpringMVC框架 1、maven创建webapp原型项目 2、pom.xml下添加springmvc的相关依赖 3、在web.xml配置 4、springmvc.xml的配置 5、编写Controller控制器类 6、 编写JSP界面 7、项目结构图 一…

VS2017中使用qt翻译家,除ui界面外其他用tr包裹的字符串在翻译家中显示为乱码

1、ui界面中的中文,可以正常显示 2、其他用tr包裹的字符串,显示为乱码 3、解决 改为utf8保存。 然后更新翻译文件,重新打开发现已经ok了。 参考博客: https://blog.csdn.net/zhou714534957/article/details/124948822 https://blog.csdn.net/weixin_52689816/article/d…

【Linux】期末复习

《Linux程序设计》各章知识点梳理 第1章 软件包的管理方式方面,Ubuntu、CentOS的差异 Ubantu使用APT,CentOS使用YUM 如何添加一个新用户? Useradd new_user_name 什么是Shell? Shell 是一个用 C 语言编写的程序,这个…

Milvus向量数据库:高效处理海量非结构化数据的利器

一、引言 随着数据量的爆炸式增长,如何高效地存储、管理和查询海量非结构化数据成为数据科学和人工智能领域的一个重大挑战。传统的关系型数据库在处理这种类型的数据时显得力不从心,而向量数据库作为一种新型的数据库解决方案,提供了极大的…

PAT-1004 成绩排名(java实现)

这一关感觉还没第三关难,思路很清晰 题目 1004 成绩排名 读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。 输入格式: 每个测试输入包含 1 个测试用例,格式为 第 1 行…

【算法】宵暗的妖怪

✨题目链接: 宵暗的妖怪 ✨题目描述 露米娅作为宵暗的妖怪,非常喜欢吞噬黑暗。这天,她来到了一条路上,准备吞噬这条路上的黑暗。这条道路一共被分为n 部分,每个部分上的黑暗数量为ai 。露米娅每次可以任取 连续的 未被…

赚钱其实没有秘密,多琢磨一下不丢人

为什么学了很多知识还是挣不到钱? 挣不到钱,是因为你不够稀缺;挣钱太少,是因为你不懂杠杆,用杠杆撬动稀缺,个人价值自然水涨船高。 学富五车,为何财库依旧空空?怎样才能提高挣钱的…

在全志H616核桃派开发板上配置SSH远程终端方法详解

熟悉指令用户可以对已经联网的核桃派进行局域网SSH远程终端控制,方便使用自己的PC对核桃派远程进行各种指令操作。 普通用户(默认) 账号:pi ; 密码:pi管理员账户 账号:root ; 密码:root 在这之…

在Android Studio中使用谷歌Gemini代码助手

今天在做android开发的时候,一个项目使用到了gradle8.0,但是我的Android Studuio根本不支持,无可奈何只能从小蜜蜂版本升级了水母 | 2023.3.1版本,但突然发现AS已经集成了Gemini助手。 首先我们需要下载这个版本的: h…

2.5Bump Mapping 凹凸映射

一、Bump Mapping 介绍 我们想要在屏幕上绘制物体的细节,从尺度上讲,一个物体的细节分为:宏观、中观、微观宏观尺度中其特征会覆盖多个像素,中观尺度只覆盖几个像素,微观尺度的特征就会小于一个像素宏观尺度是由顶点或…

JDBC常见异常(10)—预编译模式下占位符动态排序字段失效

场景需求 需要根据不同的列进行对应的排序操作,实现动态列名排序 类似🐟动态查询或更新 但是JDBC预编译模式下占位符的排序字段失效 SQL语句 分页查询 select * from (select t.*, rownum rn from(select * from emp order by empno desc) t where …

《java数据结构》--一篇解决二叉搜索树!!

😸二叉搜索树的概念 二叉搜索树又名二叉排序树,一般具有以下性质: 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉…

C语言高级编程及实例剖析.pdf

C语言高级编程及实例剖析.pdf C语言,作为一种经典且强大的编程语言,已经在多个领域得到广泛应用。然而,要想真正掌握C语言的高级编程技巧,却并非易事。本文将深入探讨C语言的高级编程技巧,并结合实例进行详细剖析&…

61. UE5 RPG 实现敌人近战攻击技能和转向攻击

在前面,我们实现了敌人的AI系统,敌人可以根据自身的职业进行匹配对应的攻击方式。比如近战战士会靠近目标后进行攻击然后躲避目标的攻击接着进行攻击。我们实现了敌人的AI行为,但是现在还没有实现需要释放的技能,接下来&#xff0…