当前位置: 首页 > 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…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践

在 Kubernetes 集群中&#xff0c;如何在保障应用高可用的同时有效地管理资源&#xff0c;一直是运维人员和开发者关注的重点。随着微服务架构的普及&#xff0c;集群内各个服务的负载波动日趋明显&#xff0c;传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...

前端开发者常用网站

Can I use网站&#xff1a;一个查询网页技术兼容性的网站 一个查询网页技术兼容性的网站Can I use&#xff1a;Can I use... Support tables for HTML5, CSS3, etc (查询浏览器对HTML5的支持情况) 权威网站&#xff1a;MDN JavaScript权威网站&#xff1a;JavaScript | MDN...