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

news2024/12/23 12:14:33

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

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

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

相关文章

【产品经理】电商支付模块

在电商类的产品中,支付功能是非常重要的模块。那么,这个模块包含哪些功能呢? 电商平台上的支付模块作为整个购物流程中至关重要的一环,远哥聊聊如何解决用户在购物过程中面临的种种挑战,包括支付方式的选择&#xff0c…

Java实现数据结构---数组

文章目录 概念存储原理数组的操作完整代码 概念 数组是(Array)是有限个相同类型的变量所组成的有序集合,数组中的每一个变量为称为元素。数组是最简单、最常用的数据结构。 数组下标从零开始。 存储原理 数组用一组连续的内存空间来存储一…

HTTP --tcp

TCP TCP连接 tcp/ip是全球计算机以及网络设备都在使用的一种常见的分组交换网络分层协议集,客户端可以打开一条tcp/ip连接,连接到可能运行在世界各地的服务器应用程序,一旦连接建立起来了,在客户端和服务器的计算机之间交换的报…

Token的使用(JWT)

客户端用户登录生成token,然后返回给客户端后被存储,然后需要使用时客户端会发送到服务器进行验证。 package com.example.springblog;import io.jsonwebtoken.Claims; import io.jsonwebtoken.JwtParser; import io.jsonwebtoken.Jwts; import io.jsonw…

软件测试可发现所有bug吗?有什么样的原则和目的?

在今天的高度数字化时代,软件测试的重要性不可忽视。这是一种系统性的过程,通过对软件系统进行评估和验证,以确定其是否满足预期要求。在软件开发的各个阶段,软件测试都扮演着至关重要的角色。它涉及到软件功能、性能、安全性等多…

HackTheBox-Machines--Cronos

文章目录 0x01 信息收集0x02 命令注入漏洞0x03 权限提升 Cronos 测试过程 0x01 信息收集 1.端口扫描 发现 SSH(22)、DNS(53)、HTTP(80)端口 nmap -sC -sV 10.129.227.2112.53端口开启,进行DNS…

Mysql基础教程(12):JOIN

MySQL JOIN 在 MySQL 中,JOIN 语句用于将数据库中的两个表或者多个表组合起来。 比如在一个学校系统中,有一个学生信息表和一个学生成绩表。这两个表通过学生 ID 字段关联起来。当我们要查询学生的成绩的时候,就需要连接两个表以查询学生信…

姚班带队OpenCSG,超越Devin,创造大模型编程领域新纪录

摘要 来自中国大模型初创公司OpenCSG推出的StarShip CodeGen Agent,以23.67%的成绩刷新了普林斯顿SWEBench(大模型真实独立编程评测)排行榜,取得了全球第二名的成绩,同时创造了非GPT-4o基模的最高纪录(SOTA)。 SWEBen…

案例|开发一个美业小程序,都有什么功能

随着移动互联网的迅猛发展,美业连锁机构纷纷寻求数字化转型,以小程序为载体,提升服务效率,增强客户体验。 线下店现在面临的困境: 客户到店排队时间过长,体验感受差 新客引流难,老用户回头客…

2024ciscn初赛——easycms

什么是CMS? CMS是“Content Management System”的缩写,意为“内容管理系统”。网站的开发者为了方便,制作了不同种类的CMS,可以加快网站开发的速度和减少开发的成本。 常见的CMS: php类cms系统:dedecms、…

【计算Nei遗传距离】

报错 Warning message: In adegenet::df2genind(t(x), sep sep, ...) : Markers with no scored alleles have been removed 原因: 直接用plink转换为VCF,丢失了等位基因分型(REF ALT) (plink编码的规则&…

【Pytorch 】Dataset 和Dataloader制作数据集

文章目录 Dataset 和 Dataloader定义Dataset定义Dataloader综合案例1 导入两个列表到Dataset综合案例2 导入 excel 到Dataset综合案例3 导入图片到Dataset导入官方数据集Dataset 和 Dataloader Dataset指定了数据集包含了什么,可以是自定义数据集,也可以是以及官方数据集Data…

R语言绘图 --- 饼状图(Biorplot 开发日志 --- 2)

「写在前面」 在科研数据分析中我们会重复地绘制一些图形,如果代码管理不当经常就会忘记之前绘图的代码。于是我计划开发一个 R 包(Biorplot),用来管理自己 R 语言绘图的代码。本系列文章用于记录 Biorplot 包开发日志。 相关链接…

基于深度学习的模糊认知图方法

1 文章信息 文章题目为“Deep Fuzzy Cognitive Maps for Interpretable Multivariate Time Series Prediction”,该文于2019年发表于“IEEE TRANSACTIONS ON FUZZY SYSTEMS”。文章提出了深度模糊认知图(FCM)用于多变量时间序列预测&#xff…

视频汇聚EasyCVR视频监控云平台对接GA/T 1400视图库对象和对象集合XMLSchema描述

GA/T 1400协议主要应用于公安系统的视频图像信息应用系统,如警务综合平台、治安防控系统、交通管理系统等。在城市的治安监控、交通管理、案件侦查等方面,GA/T 1400协议都发挥着重要作用。 以视频汇聚EasyCVR视频监控资源管理平台为例,该平台…

30-ESP32-S3-WIFI篇-01 FreeRTOS

ESP32-S3-WIFI-FreeRTOS 任务 介绍 FreeRTOS FreeRTOS是一个开源的实时操作系统(RTOS)内核,以模块化的方式与ESP-IDF集成。这意味着所有的ESP-IDF应用程序和各种ESP-IDF组件都建立在FreeRTOS框架之上。FreeRTOS内核已经被移植到ESP芯片的所…

C/C++|智能指针的shared_from_this和enable_shared_from_this

参考博客(或者叫摘抄的博客,本博客只做为个人学习使用): 施磊老师牛逼 深入掌握C智能指针 C智能指针的enable_shared_from_this和shared_from_this机制 文章目录 再探 shared_ptr错误一修改错误一错误二修改错误二 enable_shared_from_this和shared_from…

web项目规范配置(husky、eslint、lint-staged、commit)

背景: 团队开发为了保证提交代码格式统一,通常在进行代码提交的时候对暂存区代码进行校验,如没有通过eslint(本例使用eslint)校验,则不能提交到远端。 安装依赖 husky 、eslint 、prettier 、lint-staged npm install husky e…

光环云携手火山引擎共推全栈AI服务,赋能千行百业智能化转型,助力新质生产力发展

5月15日,2024春季火山引擎FORCE原动力大会在北京举办。作为智算云网综合服务提供商,光环云受邀出席大会,与火山引擎共同探索大模型时代下行业发展的新趋势。 会上,光环云数据有限公司正式与火山引擎签署生态伙伴合作协议&#xf…

算法与数据结构:红黑树

ACM大牛带你玩转算法与数据结构-课程资料 本笔记属于船说系列课程之一,课程链接: 哔哩哔哩_bilibilihttps://www.bilibili.com/cheese/play/ep66799?csourceprivate_space_class_null&spm_id_from333.999.0.0 你也可以选择购买『船说系列课程-年度会…