文件系统和日志

文件系统和日志

一、文件系统

1、inode和block概述

  • 元信息:每个文件的属性信息,比如:文件的大小,时间,类型,权限等,也称为文件的元数据(meta data)
  • 元数据是存放在inode(index node)表中。inode 表中有很多条记录组成,第一条记录对应的存放了一个文件的元数据信息。
    文件数据包括元信息与实际数据。
  • 文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节。

block(块):

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

inode(索引节点):

  • 中文译名为“索引节点”,也叫 i 节点
    用于存储文件元信息
  • 一个文件必须占用一个inode ,至少占用一个block

image-20240422145542631

2、inode表结构

2.1 inode表中的信息

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

2.2 查看inode号

ls -i 和stat

实例:

image-20240422150546610

2.3 Linux系统文件三个主要的时间属性

时间 作用
atime(最近访问) 访问文件时间,需要打开文件时间才会变化
mtime(最近更改) 最近更改时间,文件内容发生改变,时间才会变化
ctime(最近改动) 最近改动时间,文件的元信息发生改变,时间才会变化,属主,属组大小

2.4 用户访问文件的过程

当用户在Linux系统中试图访问一个文件时,系统会先根据文件名去查找它对应的inode号码;通过

inode号码,获取inode信息;根据inode信息,看该用户是否具有访问这个文件的权限;如果有,就

指向相对应的数据block,并读取数据。

image-20240422152412774

3、inode的大小

  • inode也会消耗硬盘空间,每个inode的大小一般是128字节或256字节
  • inode的总数,在格式化时就确定
  • 如果磁盘还有空间,但inode号被全部占用,无法创建新文件。
  • inode号在同一个文件系统内唯一,在不同的文件系统中可以重复。
  • 查看每个硬盘分区的inode总数和已经使用的数量,可以使用命令: df -i

实例:

image-20240422151700827

二、日志服务管理

1、日志的功能

  • 用于记录系统、程序运行中发生的各种事件
  • 通过阅读日志,有助于诊断和解决系统故障

2、日志文件的分类

  • 内核及系统日志:由系统服务rsyslog统一进行管理,日志格式基本相似,其主配置文件 /etc/rsyslog.conf
  • 用户日志:记录系统用户登录及退出系统的相关信息
  • 程序日志:由各种应用程序独立管理的日志文件,记录格式不统一

3、常见的一些日志文件

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

4、系统日志管理

在现实生活中,记录日志也非常重要,比如银行的转账记录,飞机上的黑盒子,那么将系统和应用发生的事件记录至日志中,以助于排错和分析使用日志记录的内容包括:

  • 历史事件:时间,地点,人物,事件
  • 日志级别:事件的关键性程度,Loglevel

4.1 sysklogd 系统日志服务

CentOS 5 之前版本采用的日志管理系统服务

  • syslogd: system application 记录应用日志
  • klogd: linux kernel 记录内核日志

事件记录格式:

日期时间 主机 进程[pid]: 事件内容

C/S架构:通过TCP或UDP协议的服务完成日志记录传送,将分布在不同主机的日志实现集中管理

4.2 rsyslog 系统日志服务

rsyslog是CentOS 6以后版本的系统管理服务:它提供了高性能,出色的安全性和模块化设计。尽管rsyslog最初是常规的syslogd,但发展成为一种瑞士军刀式的记录工具,能够接受来自各种来源的输入,并将其转换,然后输出到不同的目的地。

当应用有限的处理时,RSYSLOG每秒可以将超过一百万的消息传递到本地目的地。即使在远程的目的地和更精细的处理中,性能通常也被认为是惊人的”。

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

ELK:由Elasticsearch, Logstash, Kibana三个软件组成

  • 非关系型分布式数据库基于apache软件基金会jakarta项目组的项目lucene
  • Elasticsearch是个开源分布式搜索引擎,可以处理大规模日志数据,比如:Nginx、Tomcat、系统日志等功能
  • Logstash对日志进行收集、分析,过滤,并将其存储供以后使用
  • Kibana 可以提供的日志分析友好的 Web 界面
  • kafka消息队列

4.3 rsyslog管理

4.3.1日志等级
等级名称 说 明
0 bug (LOG_DEBUG) 一般的调试信息说明
1 info (LOG_INFO) 基本的通知信息
2 notice (LOG_NOTICE) 普通信息,但是有一定的重要性
3 warning(LOG_WARNING) 警吿信息,但是还不会影响到服务或系统的运行
4 error(LOG_ERR) 错误信息, 一般达到err等级的信息已经可以影响到服务成系统的运行了
5 crit (LOG_CRIT) 临界状况信思,比error等级还要严重
6 alert (LOG_ALERT) 状态信息,比crit等级还要严重,必须立即采取行动
7 emerg (LOG_EMERG) 疼痛等级信息,系统已经无法使用了
* 代表所有日志等级。比如,“authpriv.*”代表amhpriv认证信息服务产生的日志,所有的日志等级都记录
4.3.2 服务器名称
服务名称 说 明
auth(LOG AUTH) 安全和认证相关消息 (不推荐使用authpriv替代)
authpriv(LOG_AUTHPRIV) 安全和认证相关消息(私有的)
cron (LOG_CRON) 系统定时任务cront和at产生的日志
daemon (LOG_DAEMON) 与各个守护进程相关的曰志
ftp (LOG_FTP) ftp守护进程产生的曰志
kern(LOG_KERN) 内核产生的曰志(不是用户进程产生的)
Iocal0-local7 (LOG_LOCAL0-7) 为本地使用预留的服务 某软件 无记录日志的功能,他又支持rsyslog 可以使用 此项来 定义日志
lpr (LOG_LPR) 打印产生的日志
mail (LOG_MAIL) 邮件收发信息
news (LOG_NEWS) 与新闻服务器相关的日志
syslog (LOG_SYSLOG) 存syslogd服务产生的曰志信息(虽然服务名称己经改为reyslogd,但是很多配罝依然沿用了 syslogd服务的,所以这里并没有修改服务名称)
user (LOG_USER) 用户等级类别的日志信息
uucp (LOG_UUCP> uucp子系统的日志信息,uucp是早期Linux系统进行数据传递的协议,后来 也常用在新闻组服务中
4.3.3 rsys相关文件
  • 程序包:rsyslog
  • 主程序:/usr/sbin/rsyslogd
  • CentOS 6:/etc/rc.d/init.d/rsyslog
  • CentOS 7,8:/usr/lib/systemd/system/rsyslog.service
  • 配置文件:/etc/rsyslog.conf,/etc/rsyslog.d/*.conf
  • 库文件: /lib64/rsyslog/*.so
4.3.4 rsyslog配置文件

/etc/rsyslog.conf 配置文件格式:由三部分组成

  • MODULES:相关模块配置
  • GLOBAL DIRECTIVES:全局配置
  • RULES:日志记录相关的规则配置

image-20240422162526808

RULES模块规则配置的格式:

facility.priority        文件路径
#分类		日志的级别
#日志的级别:
*: 所有级别
none:没有级别,即不记录
PRIORITY:指定级别(含)以上的所有级别
=PRIORITY:仅记录指定级别的日志信息

#文件路径:通常在/var/log/,文件路径前的   -表示异步写入
#同步写入:写一句传一句  异步写入:写到一定数量或大小再一同传入

image-20240422163405877

4.4实际操作,将ssh服务的日志单独设置

image-20240422164431956

image-20240422170742568

image-20240422165245395

image-20240422165628405

image-20240422170503462

image-20240422170816235

4.5 实际操作搭建日志服务器

image-20240422183632431

image-20240422181100136

image-20240422181147715

image-20240422181358905

image-20240422181957339

image-20240422183818773

image-20240422181754743

image-20240422181605140

image-20240422184034932

image-20240422184112000

image-20240422184133619

posted @   傲世九天  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示