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
- 安装依赖 yum -y install e2fsprogs-devel e2fsprogs-libs gcc*
- 使用解压命令 tar xvf extundelete-0.2.4.tar.bz2
- 使用./configure --prefix=/usr/local/extundelete命令校验安装依赖
- make 编译源代码 生成二进制代码文件
- make install 安装
- 创建软链接让该软件包的命令能够像系统命令一样调用 ln -s /usr/local/extundelete/bin/* /usr/bin/
- 由于该软件包较为古老只支持ext3的文件系统,所以格式化做实验的分区的文件系统为ext3,然后挂载
- 此时cd到挂载的目录,可以看到该软件包对于ext3文件系统分区所生成的 lost+found 目录,当系统崩溃时,转储文件进行备份
- 创建几个文件,再删除,cd回上一级
- 取消挂载/dev/sdb1这个分区
- 使用 extundelete /dev/sdb1 --restore-all 命令可以恢复该分区所有删除的文件,在当前目录下生成一个恢复文件的目录
- 进入该目录就能查看恢复的数据
生成的恢复文件目录
针对xfs文件系统恢复删除文件
- 安装针对xfs恢复文件的软件包 yum -y install xfsdump
- cd进已挂载的xfs系统的目录,创建几个文件
- 备份该xfs系统目录到/opt/mydata_sdb1;xfsdump -f /opt/mydata_sdb1 /aaa
- 删除几个文件,然后用 xfsrestore -f /opt/mydata_sdb1 /aaa 恢复数据
删除数据,恢复数据
恢复后的数据
日志
当主机在运行特定的程序时,会产生一些消息来记录系统的变化或动作。通过日志将这些信息保存并记录系统曾经运行过的状态,日志就可以查看过去某一时刻,某个设备、服务器、主机的状态
- 系统日志
- /var/log/messages
- 用户日志
- /var/log/lastlog
- 不能直接查看,要用相关命令查看 - last命令
- /var/log/lastlog
- 程序日志
- 软件或服务的日志
日志级别
级别 | 说明 |
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 | 这是一个日志处理规则,它表示:
|
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 |
@@:代表本机生成的日志,要发送给指定的主机(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
|
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环境搭建与优化:深入剖析四个方面、五个方面、六个方面及七个关键要点 在大数据处理领域,Apache Spark凭借其出色的性能和灵活性备受瞩目。而要在Python中利用Spark的强大功能,首先需要搭建一个稳定且高效的Spark Python环境。本…...
【微信小程序开发】小程序中的上滑加载更多,下拉刷新是如何实现的?
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
从 Android 恢复已删除的备份录
本文介绍了几种在 Android 上恢复丢失和删除的短信的方法。这些方法都不能保证一定成功,但您可能能够恢复一些短信或其中存储的文件。 首先要尝试什么 首先,尝试保留数据。如果你刚刚删除了信息,请立即将手机置于飞行模式,方法是…...
如何使用Python中的random模块生成随机数
在Python中,random模块提供了多种用于生成随机数的函数。以下是一些基本示例: 生成随机整数: 使用random.randint(a, b)函数生成一个介于a和b之间的随机整数(包括a和b)。 python复制代码 import random random_int …...
AI大数据处理与分析实战--体育问卷分析
AI大数据处理与分析实战–体育问卷分析 前言:前一段时间接了一个需求,使用AI进行数据分析与处理,遂整理了一下大致过程和大致简要结果(更详细就不方便放了)。 文章目录 AI大数据处理与分析实战--体育问卷分析一、数据…...
C++第二十五弹---从零开始模拟STL中的list(下)
✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1、函数补充 2、迭代器完善 3、const迭代器 总结 1、函数补充 拷贝构造 思路: 先构造一个头结点,然后将 lt 类中的元…...
STM32/keil把多个c文件编译为静态库lib
把常用的、不经常修改的代码库编译成lib以后,可以加快整个工程的编译速度。 一个常见的应用场景就是,把ST的标准库或HAL库等编译成lib,这样以后再编译整个工程时,就无需再次编译他们了,可以节省编译时间。当然&#x…...
L45---506.相对名次(java)--排序
1.题目描述 2.知识点 (1)String.join(" ", words) 是 Java 中的一个语法,用于将数组或集合中的元素连接成一个单独的字符串,连接时使用指定的分隔符。这里的 " " 是作为分隔符使用的一个空格字符串。 Strin…...
跨网段路由
跨网段路由通常是指在网络中配置路由,以允许不同子网之间的通信。要设置跨网段的永久路由,取决于你是在操作路由器、交换机这样的网络设备,还是在配置个人计算机(如Windows或Linux系统)。下面是两种常见情况下的简要指…...
HO-3D 数据集
// 由于非刚体的追踪比较困难,所以看看刚体数据集 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
一、题目 在集群中输入以下指令: PUT phones/_doc/1 {"brand":"Samsumg","model":"Galaxy S9","features":[{"type":"os", "value":"Android"},{"type":&q…...
【Postman接口测试】第四节.Postman接口测试项目实战(中)
文章目录 前言五、Postman断言 5.1 Postman断言介绍 5.2 响应状态码断言 5.3 包含指定字符串断言 5.4 JSON数据断言六、参数化 5.1 Postman参数化介绍 5.2 Postman参数化实现 5.3 针对项目登录接口参数化实现 总结 前言 五、Postman断言 5.1 Postman断言介…...
Hadoop的Windows环境准备
一、将Hadoop传输到Windows中 1、备份副本 cp -r /opt/softs/hadoop3.1.3/ /opt/softs/hadoop3.1.3_temp 2、删除备份的share目录 cd /opt/softs/hadoop3.1.3_temp rm -rf share/ 3、下载到Windows中 重命名去掉_temp 4、删除备份文件 rm -rf /opt/softs/hadoop3.1.3_t…...
使用亮数据代理IP爬取PubMed文章链接和邮箱地址
💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】🤟 一站式轻松构建小程序、Web网站、移动应用:👉注册地址🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交…...
electron调用dll时应用程序闪退
electron调用dll时,直接闪退,且用如下方式监听无任何输出: window-all-closed 或 will-quit 此时需要检查传给dll的参数及参数类型是否正确,特别是使用ffi-napi时调用dll,使用 ref-napi定义类型,经常容易…...
单片机原理及技术(三)—— AT89S51单片机(二)(C51编程)
一、AT89S51单片机的并行I/O端口 1.1 P0口 AT89S51的P0口是一个通用的I/O口,可以用于输入和输出。每个引脚都可以通过软件控制为输入或输出模式。 1.1.1 P0口的工作原理 P0口的工作原理是通过对P0寄存器的读写操作来控制P0口的引脚。 输出模式:当P0口…...
摄影店展示服务预约小程序的作用是什么
摄影店包含婚照、毕业照、写真、儿童照、工作照等多个服务项目,虽然如今人们手机打开便可随时拍照摄影,但在专业程度和场景应用方面,却是需要前往专业门店服务获取。 除了进店,也有外部预约及活动、同行合作等场景,重…...
【数据分析基础】实验一 Python运算符、内置函数、序列基本用法
一、实验目的 熟练运用Python运算符。熟练运用Python内置函数。掌握Python的基本输入输出方法。了解lambda表达式作为函数参数的用法。掌握列表、元组、字典、集合的概念和基本用法。了解Python函数式编程模式。 二、实验内容: 1. 在命令模式测试如下命令&#x…...
【Redis】构建强韧的远程Redis连接与端口保障机制完美指南
【Redis】构建强韧的远程Redis连接与端口保障机制完美指南 大家好 我是寸铁👊 总结了【Redis】构建强韧的远程Redis连接与端口保障机制完美指南✨ 喜欢的小伙伴可以点点关注 💝 前言 在当今的软件开发领域中,远程访问和操作数据存储是极为常见…...
Flowable项目启动报错#java.time.LocalDateTime cannot be cast to java.lang.String
Flowable 项目启动后报错 flow项目第一次启动创建表成功,但是第二次启动时报错信息如下: 1、Error creating bean with name ‘appRepositoryServiceBean’ defined in class 2、Error creating bean with name ‘flowableAppEngine’: FactoryBean t…...
《数字电路》
问答题4*5 在数字电路中,三极管经常工作在哪两种开关状态? 在数字电路中,三极管经常工作在饱和导通状态和截止状态。 时序电路根据输出信号分为哪两类? 时序电路根据输出信号分为莫尔型和米里型两类。 写出三种以上常用的二-十…...
自己制作网站的方法是/口碑seo推广公司
echarts关系图表,此图是坐标关系图,此图用的随机坐标,此图可以拖拽,更方便整理关系, 引入echarts.js就可以实现 代码: var graph{ //这是数据项目中一般都是获取到的 nodes:[ {"id":&…...
小企业网站建设哪里做得好/100个成功营销案例
http简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片…...
大网站有用香港空间的吗/百度seo查询
欢迎关注头条号:老顾聊技术精品原创技术分享,知识的组装工前言Kubernetes(简称K8S)是开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。它既是一款容器编排工具,也是全新的基于容器技术的分布式架构…...
如何开发小程序微信/优化教程网下载
iaas paas SaaS区别差异:白及:以前接触也不懂什么是iaas、saas、paas后来到云厂商去打工之后,才慢慢懂了!云计算的供求链条可以简化为:(大量)终端用户 —— SaaS(软件/服务ÿ…...
网站制作文件/河北seo网络推广
Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。 任何一个容器都可以指定为Flex布局。 .box{display: flex; }行内元素也可以使用Flex布局。 .box{display: inline-flex; }Webkit内核的浏览器,必须加上-webk…...
做的网站不能放视频/b站推广网站2022
560. 和为 K 的子数组 给你一个整数数组 nums 和一个整数 k ,请你统计并返回该数组中和为 k 的连续子数组的个数。 示例 1: 输入:nums [1,1,1], k 2 输出:2 示例 2: 输入:nums [1,2,3], k 3 输出&am…...