当前位置: 首页 > news >正文

Linux文件系统与日志分析

目录

inode

block

链接

文件修复

实验步骤

针对ext文件系统恢复删除文件

针对xfs文件系统恢复删除文件

日志

日志级别

rsyslogd服务

日志目录

messages日志文件(系统日志)

集中管理日志 - 实验

1.环境配置

1.1

1.2

1.3

1.4

1.5

2.远程发送日志

2.1

2.2

3.查看日志文件

3.1

3.2

指定服务单独生成日志 - 实验

日志切割

1.1 配置日志切割

1.2 使用轮换


inode

inode的大小和block的大小在格式化时被确定下来

inode:i节点(索引号,标识该文件在磁盘中的位置);inode包括实际数据与文件的元数据(mate data)

  • xfs:每个xfs文件的inode占512字节(可调节的)
  • ext4下inode:占256字节

每个文件或目录文件都有一个inode号,Linux用inode号来识别不同的文件。

Linux系统内部不使用文件名,而使用inode号来识别文件。

对于用户,文件名只是inode号便于识别的别称

命令

说明

stat 文件名

显示文件的状态

这些信息对于xfs文件系统来讲占512字节

ext4文件系统占用254字节

dumpe2fs -h /dev/sdb1

显示 ext2、ext3、ext4 文件系统的超级块和块组信息

-h:指定只显示超级块信息

mkfs -t xfs -f /dev/sdb2 -b size=2048

在格式化xfs文件系统时定义block size的大小

mkfs -t xfs -f /dev/sdb2 -I size=1024

在格式化xfs文件系统时定义inode size的大小

mkfs -t ext4 -N 120960 /dev/sdb1

在格式化ext4时设置inode数量

mkfs -t ext4 -b 2048 /dev/sdb1

格式化时设置block大小

mkfs -t ext4 -I 512 /dev/sdb1

格式化时设置inode大小

xfs_growfs -m 30 /dev/sdb2

设置inode在该分区占%几的比例

需要该分区处于挂载状态

只要创建出一个文件,该文件在系统里会生成一个硬链接

[root@localhost ~]# stat anaconda-ks.cfg 文件:"anaconda-ks.cfg"大小:1605          块:8          IO 块:4096   普通文件
设备:fd00h/64768d    Inode:268635215   硬链接:1
权限:(0600/-rw-------)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:admin_home_t:s0
最近访问:2024-05-28 00:37:17.856009764 +0800
最近更改:2024-05-28 00:37:17.857009764 +0800
最近改动:2024-05-28 00:37:17.857009764 +0800
创建时间:- # 被废弃,但是依然保留该属性

block

  • xfs、ext4文件系统:4096
  • 磁盘IO:1024
  • 扇区IO:512

连续的八个扇区组成一个 block,是文件存取的最小单位

链接

  • 软链接:等于Windows系统的快捷方式,消耗空间,有独立的inode号
    • 如果是跨目录创建,要加绝对路径
  • 硬链接:不会消耗空间,因为inode号和属性都和原始文件一样
    • 目录不能创建硬链接
    • 不能跨分区创建

文件修复

如果在linux根据文件名删除了一个文件,实际只是删除了linux系统中该文件对于用户便于识别的“目录”,实际上该文件还存在磁盘上

如果把这个分区格式化了,相当于把一整本书的目录撕掉了。这个文件还是存在磁盘上,但是文件系统必须依靠“目录”来查找文件

命令

说明

extundelete /dev/sdb1 --restore-all

恢复该分区所有文件

xfsdump -f /opt/mydata_sdb1 /aaa

备份/aaa挂载点目录到/opt/mydata_sdb1

挂载点后不要加/

xfsrestore -f /opt/mydata_sdb1 /aaa

将/opt/mydata_sdb1的文件恢复到/aaa

实验步骤

针对ext文件系统恢复删除文件

./configure --prefix=/usr/local/extundelete

  1. 安装依赖 yum -y install e2fsprogs-devel e2fsprogs-libs gcc*
  2. 使用解压命令 tar xvf extundelete-0.2.4.tar.bz2
  3. 使用./configure --prefix=/usr/local/extundelete命令校验安装依赖
  4. make 编译源代码 生成二进制代码文件
  5. make install 安装
  6. 创建软链接让该软件包的命令能够像系统命令一样调用 ln -s /usr/local/extundelete/bin/* /usr/bin/
  7. 由于该软件包较为古老只支持ext3的文件系统,所以格式化做实验的分区的文件系统为ext3,然后挂载
    1. 此时cd到挂载的目录,可以看到该软件包对于ext3文件系统分区所生成的 lost+found 目录,当系统崩溃时,转储文件进行备份
  8. 创建几个文件,再删除,cd回上一级
  9. 取消挂载/dev/sdb1这个分区
  10. 使用 extundelete /dev/sdb1 --restore-all 命令可以恢复该分区所有删除的文件,在当前目录下生成一个恢复文件的目录
  11. 进入该目录就能查看恢复的数据

生成的恢复文件目录

针对xfs文件系统恢复删除文件

  1. 安装针对xfs恢复文件的软件包 yum -y install xfsdump
  2. cd进已挂载的xfs系统的目录,创建几个文件
  3. 备份该xfs系统目录到/opt/mydata_sdb1;xfsdump -f /opt/mydata_sdb1 /aaa
  4. 删除几个文件,然后用 xfsrestore -f /opt/mydata_sdb1 /aaa 恢复数据

删除数据,恢复数据

恢复后的数据

日志

当主机在运行特定的程序时,会产生一些消息来记录系统的变化或动作。通过日志将这些信息保存并记录系统曾经运行过的状态,日志就可以查看过去某一时刻,某个设备、服务器、主机的状态

  • 系统日志
    • /var/log/messages
  • 用户日志
    • /var/log/lastlog
      • 不能直接查看,要用相关命令查看 - last命令
  • 程序日志
    • 软件或服务的日志

日志级别

级别

说明

debug 

调试信息的日志,日志信息最多

info 

一般信息的日志,最常用

notice 

最具有重要性的普通条件的信息

warning 

警告级别

error 

错误级别,阻止某个功能或者模块不能正常工作的信息

critical 

严重级别,阻止整个系统或者整个软件不能正常工作的信息

alert 

需要立刻修改的信息

emerg 

内核崩溃等严重信息

rsyslogd服务

该服务本身是分布式日志管理,可以不借助第三方工具将日志传输到别的主机

命令

说明

rsyslogd -version

查看日志管理服务的版本信息

last

查看用户日志

路径

说明

/var/log

rsyslogd存放日志的位置

日志目录

在/var/log目录下,有些文件可以直接查看,有些文件不能直接查看,因为是加密文件,所以是二进制的形式保存的

  • 比如想要查看/var/log目录下的wtmp文件,要输入 w 命令才能查看

messages日志文件(系统日志)

集中管理日志 - 实验

系统

主机名

IP地址

centos7.9

master

192.168.10.101

centos7.9

node1

192.168.10.102

centos7.9

node2

192.168.10.103

1.环境配置

1.1

右键Xshell终端,将3台主机操作同步

1.2

进入hosts文件 配置环境

将三台主机的IP输入,保存并退出

1.3

为了实验方便,停止防火墙以及关闭内核安全机制

到这一步 关闭操作同步

1.4

配置rsyslog接收远程日志

创建文件

配置规则

说明

$ModLoad immark

加载immark模块。此模块为日志消息添加一个标记,有助于在日志文件中识别消息的起始和结束。

$ModLoad imudp

加载imudp模块,这允许rsyslog通过UDP协议接收日志消息。

$UDPServerRun 514

在UDP端口514上启动日志接收服务。这是syslog的默认端口。

$ModLoad imtcp

加载imtcp模块,使rsyslog能够通过TCP协议接收日志消息。

$InputTCPServerRun 514

在TCP端口514上启动日志接收服务。这是syslog的默认端口。

$AllowedSender tcp, 192.168.10.0/24

允许来自192.168.10.0/24网络的TCP连接发送日志到本主机。这是一个安全措施,确保只有受信任的网络可以发送日志。

$template Remote,"/data/log/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log"

把远程主机发过来的日志信息保存到指定文件

定义一个名为"Remote"的模板,然后指定日志格式和存储位置

其中第一个%fromhost-ip%代表用发送日志源主机的IP地址做目录名,第二个代表文件名,%$YEAR%,%$MONTH%,和%$DAY%代表日志生成的年、月、日。

:fromhost-ip, !isequal, "127.0.0.1" ?Remote

要接受的日志不是本机的,是Remote的(远程主机的)

一个条件过滤规则,用于决定如何处理特定的日志消息。

如果日志消息的源IP地址(fromhost-ip)不是127.0.0.1(不是本机),则应用前面定义名为"Remote"模板来保存这些日志。

*.info;mail.none;authpriv.none;cron.none /data/log/messages

这是一个日志处理规则,它表示:

    • 接收所有级别为info及以上的日志消息(*.info)。
    • 但是,忽略mail邮件、authpriv任务 和cron计划任务的日志消息。
    • 将符合条件的日志保存到/data/log/messages文件中。
1.5

创建目录树,用于存放上面配置文件指定的远程发送的日志文件

如果无法创建就在结尾加上 -p

重启日志服务

2.远程发送日志

2.1

开启操作同步

将master主机的操作同步关闭,只操作另外两台node主机

2.2

cd到相应目录,创建配置文件

写入配置,保存并退出

配置规则

说明

$template myFormat,"%timestamp% %fromhost-ip% %msg%"

定义该主机生成的日志格式

定义一个名为myFormat的模板,日志格式为:时间日期-源主机IP-日志具体内容

*.info;mail.none;authpriv.none;cron.none @@192.168.10.101

    • 接收所有级别为info及以上的日志消息(*.info)。
    • 但是,忽略mail邮件、authpriv任务 和cron计划任务的日志消息。
    • 将符合条件的日志保存到192.168.10.101

@@:代表本机生成的日志,要发送给指定的主机(101需要开启监听,能接收到)

重启日志服务

3.查看日志文件

3.1

到master主机上rsyslog配置文件的指定位置 /data/log 中就能看到其他两个主机发送的日志文件

3.2

102和103两台主机的日志都转存到101主机上,但是两台node主机本地还是存有一份日志信息,也就是说node主机的日志文件要同时生成两份,存到不同的主机上

指定服务单独生成日志 - 实验

编辑该配置文件

创建一个local0的日志设备,指定该日志设备接收到的日志存储在/opt/sshd.log

进入指定服务的配置文件

进入配置文件后用末行模式搜索SyslogF

修改sshd服务输出的日志消息给local0,注意要把这一行开头的注释删掉

改了两个服务的配置文件,重启服务,让配置文件生效

等待日志文件生成,cat查看,就有了

日志切割

也叫日志滚动

日志切割解决两个问题:

可以按时间保存日志,方便查找

不让某个文件过大

1.1 配置日志切割

cd 到 rsyslog服务存放按天执行脚本的目录

目录下有 logrotate脚本,该文件是系统中由 cron 系统服务定期执行的脚本

作用是调用 logrotate 程序来自动轮转系统中的日志文件

进入logrotate日志切割工具的配置文件

加入配置命令

配置规则

说明

/opt/sshd.log

日志分割的目标,要对谁做切割

missingok

如果要切割的文件(/opt/sshd.log)丢失了,不报错继续下一个文件的轮转。

monthly

轮换周期,每月轮换一次,也就是每月切割一次

create 0664 root utmp

如果要执行切割操作,就要生成一个单独文件,权限指定为664,属主是root,属组是utmp

  • create:在轮转时创建新的日志文件。
  • 0664:新创建的日志文件的权限设置。这里,文件所有者(root)有读/写权限,而组(utmp)和其他用户只有读权限。
  • root:新创建的日志文件的所有者是 root。
  • utmp:新创建的日志文件的组是 utmp。

minsize 10M

最小大小,如果文件超过10M就被分割

如果日志文件小于 10MB,即使达到了 monthly 的时间限制,它也不会被轮转。

确保只有当日志文件达到一定大小时才会被轮转。

rotate 2

定义在日志文件轮转时要保留多少个日志文件备份

重启服务确保配置文件生效

1.2 使用轮换

手动触发 日志分割功能

配置规则

说明

logrotate -vf /etc/logrotate.conf

logrotate 根据 /etc/logrotate.conf 配置文件中的规则来轮转指定的日志文件

-v:输出详细信息

-f:指定 logrotate 配置文件为 /etc/logrotate.conf

查看配置文件内指定位置生成的日志文件

如果删除了日志文件,再次运行轮换命令,日志就不会生成,因为日志文件不存在

重启sshd服务,会再次生成sshd.log日志,此时使用logrotate -vf /etc/logrotate.conf就能看到新的日志轮换文件

相关文章:

Linux文件系统与日志分析

目录 inode block 链接 文件修复 实验步骤 针对ext文件系统恢复删除文件 针对xfs文件系统恢复删除文件 日志 日志级别 rsyslogd服务 日志目录 messages日志文件(系统日志) 集中管理日志 - 实验 1.环境配置 1.1 1.2 1.3 1.4 1.5 2.远…...

【SkyWalking】使用PostgreSQL做存储K8s部署

拉取镜像 docker pull apache/skywalking-ui:10.0.1 docker tag apache/skywalking-ui:10.0.1 xxx/xxx/skywalking-ui:10.0.1 docker push xxx/xxx/skywalking-ui:10.0.1docker pull apache/skywalking-oap-server:10.0.1 docker tag apache/skywalking-oap-server:10.0.1 xxx…...

详解大模型微调数据集构建方法(持续更新)

大家好,我是herosunly。985院校硕士毕业,现担任算法t研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算…...

自制植物大战僵尸:HTML5与JavaScript实现的简单游戏

引言 在本文中,我们将一起探索如何使用HTML5和JavaScript来创建一个简单的植物大战僵尸游戏。这不仅是一项有趣的编程挑战,也是学习游戏开发基础的绝佳机会。 什么是植物大战僵尸? 植物大战僵尸是一款流行的策略塔防游戏,玩家需…...

Istio_1.17.8安装

项目背景 按照istio官网的命令一路安装下来,安装好的istio版本为目前的最新版本,1.22.0。而我的k8s集群的版本并不支持istio_1.22的版本,导致ingress-gate网关安装不上,再仔细查看istio的发布文档,如果用istio_1.22版本…...

[数据集][目标检测]室内积水检测数据集VOC+YOLO格式761张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):761 标注数量(xml文件个数):761 标注数量(txt文件个数):761 标注类别…...

17_Vue高级监听器生命周期Vue组件组件通信

文章目录 1. 数据监听器watch2. Vue生命周期3. Vue组件4. Vue组件通信Appendix 1. 数据监听器watch 首先watch需要单独引 import {watch} from vuewatch函数监听ref响应式数据 watch(监听的内容,监听行为)监听行为默认为(newValue,oldValue) let firstname ref…...

【ROS使用记录】—— ros使用过程中的rosbag录制播放和ros话题信息相关的指令与操作记录

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、rosbag的介绍二、rosbag的在线和离线录制三、rosbag的播放相关的指令四、其他rosbag和ros话题相关的指令总结 前言 rosbag是ROS(机器人操作系统…...

Laravel 富文本内容

Laravel 获取富文本的纯文本内容-CSDN博客 Laravel 富文本内容里面的图片添加前缀URL-CSDN博客 Laravel 富文本图片的style样式删除-CSDN博客. Laravel 获取富文本中的所有图片-CSDN博客 富文本字体font-famly删除 $data preg_replace(/(<[^>])style["\][^"…...

Spark Python环境搭建与优化:深入剖析四个方面、五个方面、六个方面及七个关键要点

Spark Python环境搭建与优化&#xff1a;深入剖析四个方面、五个方面、六个方面及七个关键要点 在大数据处理领域&#xff0c;Apache Spark凭借其出色的性能和灵活性备受瞩目。而要在Python中利用Spark的强大功能&#xff0c;首先需要搭建一个稳定且高效的Spark Python环境。本…...

【微信小程序开发】小程序中的上滑加载更多,下拉刷新是如何实现的?

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…...

从 Android 恢复已删除的备份录

本文介绍了几种在 Android 上恢复丢失和删除的短信的方法。这些方法都不能保证一定成功&#xff0c;但您可能能够恢复一些短信或其中存储的文件。 首先要尝试什么 首先&#xff0c;尝试保留数据。如果你刚刚删除了信息&#xff0c;请立即将手机置于飞行模式&#xff0c;方法是…...

如何使用Python中的random模块生成随机数

在Python中&#xff0c;random模块提供了多种用于生成随机数的函数。以下是一些基本示例&#xff1a; 生成随机整数&#xff1a; 使用random.randint(a, b)函数生成一个介于a和b之间的随机整数&#xff08;包括a和b&#xff09;。 python复制代码 import random random_int …...

AI大数据处理与分析实战--体育问卷分析

AI大数据处理与分析实战–体育问卷分析 前言&#xff1a;前一段时间接了一个需求&#xff0c;使用AI进行数据分析与处理&#xff0c;遂整理了一下大致过程和大致简要结果&#xff08;更详细就不方便放了&#xff09;。 文章目录 AI大数据处理与分析实战--体育问卷分析一、数据…...

C++第二十五弹---从零开始模拟STL中的list(下)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 目录 1、函数补充 2、迭代器完善 3、const迭代器 总结 1、函数补充 拷贝构造 思路&#xff1a; 先构造一个头结点&#xff0c;然后将 lt 类中的元…...

STM32/keil把多个c文件编译为静态库lib

把常用的、不经常修改的代码库编译成lib以后&#xff0c;可以加快整个工程的编译速度。 一个常见的应用场景就是&#xff0c;把ST的标准库或HAL库等编译成lib&#xff0c;这样以后再编译整个工程时&#xff0c;就无需再次编译他们了&#xff0c;可以节省编译时间。当然&#x…...

L45---506.相对名次(java)--排序

1.题目描述 2.知识点 &#xff08;1&#xff09;String.join(" ", words) 是 Java 中的一个语法&#xff0c;用于将数组或集合中的元素连接成一个单独的字符串&#xff0c;连接时使用指定的分隔符。这里的 " " 是作为分隔符使用的一个空格字符串。 Strin…...

跨网段路由

跨网段路由通常是指在网络中配置路由&#xff0c;以允许不同子网之间的通信。要设置跨网段的永久路由&#xff0c;取决于你是在操作路由器、交换机这样的网络设备&#xff0c;还是在配置个人计算机&#xff08;如Windows或Linux系统&#xff09;。下面是两种常见情况下的简要指…...

HO-3D 数据集

// 由于非刚体的追踪比较困难&#xff0c;所以看看刚体数据集 HOnnotate: A method for 3D Annotation of Hand and Object Poses // cvpr20https://arxiv.org/abs/1907.01481 https://github.com/shreyashampali/ho3d https://paperswithcode.com/paper/ho-3d-a-mult…...

Elasticsearch 认证模拟题 - 8

一、题目 在集群中输入以下指令&#xff1a; PUT phones/_doc/1 {"brand":"Samsumg","model":"Galaxy S9","features":[{"type":"os", "value":"Android"},{"type":&q…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...