Linux文件系统与日志分析

devtools/2024/9/23 6:32:13/

文章目录

  • 一、inode表结构
  • 二、日志
    • 日志介绍
    • 日志保存位置
    • 日志管理策略


一、inode表结构

每个文件的属性信息,如文件的大小,时间,类型,权限等,称为文件的元数据。元数据是存放在inode表中。inode 表中有很多条记录组成,第一条记录对应的存放了一个文件的元数据信息。
每一个inode表包含了以下信息:

  • inode number 节点号
  • 文件类型
  • 权限
  • UID
  • GID
  • 链接数(指向这个文件名路径名称个数)
  • 该文件的大小和不同的时间戳
  • 指向磁盘上文件的数据块指针
  • 有关文件的其他数据

注意:
1.inode号是有限资源,如果消耗完毕,无法新建文件,解决方法是删除空文件。
2.inode号在同一设备中是唯一的,在不同存储设备上,inode号可以是重复的。
3.时间戳

时间戳含义
atime访问文件时间,需要打开文件时间才会发生变化
mtime最近更改时间,文件内容发生改变,时间才会变化
ctime最近改动时间,文件的元信息发生变化,时间才会变化

mtime改变ctime一定改变,但反之不一定。

其他基本概念:

  1. 文件是存储在硬盘上的,硬盘的最小存储单位叫做“扇区”(sector),每个扇区存储512字节。
  2. 一般连续八个扇区组成一个"块”(block),一个块是4K大小,是文件存取的最小单位。操作系统读取硬盘的时候,是一次性连续读取多个扇区,即一个块一个块的读取的。4k一读,即8个扇区一读。
  3. 文件数据包括实际数据与元信息(类似文件属性)。文件数据存储在“块"中,存储文件元信息(比如文件的创建者、创建日期、文件大小、文件权限等)的区域就叫做inode表。 因此,一个文件必须占用一个inode,并且至少占用一个block。
  4. inode不包含文件名。文件名是存放在目录文件夹当中的。Linux 系统中一切皆文件,因此目录也是一种文件。
  5. 每个inode都有一个号码,操作系统用inode号码来识别不同的文件。Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称,文件名和inode号码是一 一对应关系,每个inode号码对应一个或多个文件名。
    6.当用户在Linux系统中试图访问一个文件时,系统会先根据文件名去查找它对应的inode号码:通过inode号码,获取inode信息;根据inode信息,看该用户是否具有访问这个文件的权限;如果有,就指向相对应的数据block,并读取数据。

目录
目录是个特殊文件,目录文件的内容保存了此目录中文件的列表和inode号之间对应关系。
Linux中是如何找到文件的呢?
1.用户访问文件时,先去查找自己文件夹中的目录项;2.找到文件名和inode之间对应的关系;3.通过inode号利用指针去指向实际数据。
在这里插入图片描述
指针是指向实际数据,分为直接指针和间接指针。直接指针默认12个,直接指向实际数据的地址,最大文件为4k*12。由于文件过大,出现了间接指针,间接指针指向指针,而不是实际数据。

部分命令和indoe的关系
cp 命令:

  • 分配一个空闲的inode号,在inode表中生成新条目
  • 在目录中创建一个目录项,将名称与inode编号关联
  • 拷贝数据生成新的文件

rm 命令:

  • 硬链接数递减,从而释放的inode号可以被重用
  • 把数据块放在空闲列表中
  • 删除目录项
  • 数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖

mv命令

  • 如果mv命令的目标和源在同一设备,不影响inode表(除时间戳)或磁盘上的数据位置,没有数据被移动! 删除旧的目录对应关系新建目录对应关系。

二、日志

日志介绍

1.日志功能

  • 用于记录系统、程序运行中发生的各种事件
  • 通过阅读日志,有助于诊断和解决系统故障
    2.日志文件的分类
  • 内核及系统日志:由系统服务rsyslog统一进行管理,日志格式基本相似。
  • 用户日志:记录系统用户登录及退出系统的相关信息
  • 程序日志:由各种应用程序独立管理的日志文件,记录格式不统一。
    3.日志级别(描述事件的严重程度)
等级名称说 明
debug (LOG_DEBUG)一般的调试信息说明
info (LOG_INFO)基本的通知信息
notice (LOG_NOTICE)普通信息,但是有一定的重要性
warning(LOG_WARNING)警告信息,但是还不会影响到服务或系统的运行
error(LOG_ERR)错误信息, 一般达到err等级的信息已经可以影响到服务成系统的运行了
crit (LOG_CRIT)临界状况信思,比err等级还要严重
alert (LOG_ALERT)状态信息,比crit等级还要严重,必须立即采取行动
emerg (LOG_EMERG)疼痛等级信息,系统已经无法使用了
*代表所有日志等级。比如,“authpriv.*”代表amhpriv认证信息服务产生的日志,所有的日志等级都记录

4.rsyslog系统日志服务
rsyslog 是一个开源的系统日志服务程序,,提供了更强大的日志处理功能。
rsyslog 特性

  • 多线程
  • UDP, TCP, SSL, TLS, RELP
  • MySQL, PGSQL, Oracle实现日志存储
  • 强大的过滤器,可实现过滤记录日志信息中任意部分
  • 自定义输出格式 可以日志
  • 适用于企业级
  • 适用于Windows、Linux

日志保存位置

默认保存在/var/log目录下
在这里插入图片描述

日志文件位置日志文件说明
/var/log/messages内核和公共日志它是核心系统日志文件,其中包含了系统启动时的引导信息,以及系统运行时的其他状态消息。I/O 错误、网络错误和其他系统错误都会记录到此文件中。其他信息,比如某个人的身份切换为 root,已及用户自定义安装软件的日志,也会在这里列出。
/var/log/cron 计划任务日志记录与系统定时任务相关的日志
/var/log/dmesg 系统引导日志记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息
/var/log/maillog 邮件日志记录邮件信息的日志
用户日志文件日志文件说明
/var/log/lastlog记录系统中所有用户最后一次的登录时间的曰志。这个文件也是二进制文件,不能直接用Vi 查看。而要使用lastlog命令查看
/var/log/secure记录验证和授权方面的倍息,只要涉及账户和密码的程序都会记录,比如系统的登录、ssh的登录、su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中
/var/log/wtmp永久记录所有用户的登陆、注销信息,同时记录系统的启动、重启、关机事件。同样,这个文件也是二进制文件.不能直接用Vi查看,而要使用last命令查看
/var/tun/ulmp记录当前已经登录的用户的信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息。同样,这个文件不能直接用Vi查看,而要使用w、who、users等命令查看
/var/log/btmp记录登录失败的日志,二进制文件无法直接查看,使用lastb命令查看

日志管理策略

方法:
1.及时作好备份和归档
2.延长日志保存日期
3.控制日志的访问权限:日志中可能会有包含各类敏感信息,如账户、口令等
4.集中管理日志:

  • 将服务器的日志文件发到统一的日志文件服务器
  • 便于日志信息的统一收集、整理和分析
  • 杜绝日志信息的意外丢失、恶意篡改或删除

实验
1.利用tsyslog软件给一些重要程序生成独立的日志文件。
将ssh远程登录程序的日志独立出来
ssh软件默认的日志在 /var/log/secure下 是很多程序一起使用,并不是独立的。
/etc/rsyslog.conf 配置文件的位置
在这里插入图片描述
/etc/rsyslog.conf 配置文件格式
由三部分组成

  • MODULES:相关模块配置
  • GLOBAL DIRECTIVES:全局配置
  • RULES:日志记录相关的规则配置即你想怎么生成日志。

RULES配置格式:
facility.priority;
程序类型.日志级别
例子:shhd.info
记录shhd,info级别及以上的情况。

*: 所有级别
none:没有级别,即不记录
PRIORITY:指定级别(含)以上的所有级别
=PRIORITY:仅记录指定级别的日志信息
通式:服务程序.记录日志的级别(其余可以看官方文档)

文件路径:通常在/var/log/,文件路径前的 -表示异步写入
异步:记录一段日志后统一存入磁盘
同步:内存中磁盘上有一条写一条

local0-local7 给我们自定义使用
一个程序想利用rsyslog软件生成日志,首先得和rsyslog兼容
ssh程序的配置文件
/etc/ssh/sshd_config下
在这里插入图片描述
修改两个文件相对应的配置文件使得新建一个日志文件。
在这里插入图片描述
在这里插入图片描述
然后重启服务!systemctl restart sshd rsyslog.service 配置完毕!

2.搭建日志服务器
开启日志的远程传输功能
首先关闭防火墙,两端都需要关
#systemctl stop firewalld
#setenforce 0
vim /etc/rsyslog.conf
#打开19 20 行 两端都要开
19 #KaTeX parse error: Expected 'EOF', got '#' at position 18: …dLoad imtcp 20 #̲InputTCPServerRun 514
vim /etc/rsyslog.conf
#修改配置文件
54 *.info;mail.none;authpriv.none;cron.none /var/log/messages
#复制54行 改成ip地址
55 *.info;mail.none;authpriv.none;cron.none @@192.168.232.10
#两个@ 代表使用 tcp 一个代表udp
如果修改 的是udp @192.168.232.10
如果要想指定端口 @1192.168.232.10:端口号


http://www.ppmy.cn/devtools/9089.html

相关文章

去除打印时的页眉与页脚

<style type"text/css">page {size: auto;margin: 0mm;} </style>

【春季发布】LinkSLA智能运维V6.0发布 聚焦架构升级 新增带外管理

LinkSLA智能运维为企业IT部门提供覆盖资源管理、监控告警、IT服务台、日志管理、MOC值守服务等多项功能为一体的运维平台&#xff0c;通过打通各业务单元、贯穿各技术栈&#xff0c;以故障定位和全生命周期管理为核心&#xff0c;持续保障业务连续性。 本次V6.0版本全面升级&a…

Vue 常用修饰符

目录 定义 事件修饰符 v-on&#xff08;缩写&#xff09; 鼠标按键修饰符 v-bind 修饰符&#xff08;缩写:&#xff09; 键值修饰符 表单修饰符 定义 修饰符是用于限定类型以及类型成员的声明的一种符号&#xff0c;vue 中修饰符分为以下五种&#xff1a;事件修饰符、鼠…

Scala详解(4)

Scala 面向对象 案例 定义类表示矩形(Rectangle)&#xff0c;提供对外获取周长(girth)和面积(area)的函数&#xff0c;并且为这个矩形类提供一个子类表示正方形(Square) package com.fesco.exer ​ object ObjectDemo1 { ​def main(args: Array[String]): Unit { ​val r …

【倾诉】我与IT

是的&#xff01; 今天不想发知识博客了&#xff0c;想谈谈这些年这几年的我和IT 懵懂 2018年&#xff0c;参加了高考&#xff0c;出成绩那天格外闷热。报考志愿的那天脑袋空空的我填了生物、化学、数学这一类志愿&#xff0c;然后勾选了 调剂√ 这样&#xff0c;一个脑袋空…

每日OJ题_完全背包②_力扣322. 零钱兑换

目录 力扣322. 零钱兑换 问题解析 解析代码 优化代码&#xff08;滚动数组&#xff09; 力扣322. 零钱兑换 322. 零钱兑换 难度 中等 给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。 计算并返回可以…

LeetCode-94-二叉树的中序遍历

题目&#xff1a; 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 解法一&#xff1a; 递归写法 思路: 先处理左子树 inOrder(root.left)&#xff0c;在打印root的值&#xff0c;之后处理右子树。 public static void inOrder(TreeNode root){if (root …

《Spring》系列文章目录

Spring Framework是一个为基于Java的现代企业应用程序提供全面编程和配置模型的开源框架。它集成了控制反转&#xff08;IOC&#xff09;、依赖注入&#xff08;DI&#xff09;和面向切面编程&#xff08;AOP&#xff09;等容器技术。Spring框架的设计理念是面向Bean编程&#…