Linux文件系统与日志

一、inode和block

文件数据包括元信息与实际数据,文件存储在硬盘上,硬盘最小存储单位是扇区,每个扇区存储512字节

1.block(块):文件系统中用于存储文件实际数据的最小单位,由文件系统进行分配和管理,并通过inode号中的指针关联到对应的文件,连续的八个扇区组成一个block,是文件存取的最小单位

2.inode(索引节点):用于标识和管理文件的唯一索引节点的标识符,用于存储文件的元信息

1.inode

Inode(索引节点)用于表示文件或目录的数据结构,每个inode有唯一的编号标识,文件系统使用这些编号来查找和访问文件,文件名和inode之间建立了映射关系,通过文件系统的目录结构可以将文件名与相应的inode关联起来,从而可以通过文件名来访问文件,当文件被删除时,只删除了与文件名相关联的inode,而文件的实际数据并没有立即被清除,只有当文件没有任何指向它的inode时,系统才会释放文件的存储空间。

2.inode表

元信息是每个文件的属性信息,比如:文件的大小、时间、类型、权限等,称为文件的元数据(meta data 元信息)。元数据是存放在inode(index node)表中,inode表由很多条记录组成,第一条记录对应的存放了一个文件的元数据信息。

inode表结构:

1.inode number文件的字节数

2.文件类型

3.文件的读、写、执行权限

4.文件拥有者的UID

5.文件的GID

6.链接数(指向这个文件名路径的名称个数)

7.该文件的大小和不同的时间戳

8.指向磁盘上文件的数据块指针

9.有关文件的其他数据

3.inode号

每个inode都有一个号,文件名和inode号是一一对应关系,操作系统用inode号码来识别不同的文件,inode号是是有限资源,如果消耗完毕,无法继续新建文件,解决方法就是删除空文件或无用文件。inode号是唯一的,在同一设备中是唯一的,在不同设备中inode号是可以相同的

用stst命令可以查看某个文件的inode信息(详细信息)

命令格式:inode  文件名

查看文件系统的inode号

命令格式:df  -i

查看某文件的inode号

命令格式:ls  -i  文件名

3.Linux系统文件三个主要文件的时间属性(三个时间戳)

atime:访问文件时间,需要打开文件时间才会发生变化

mtime:最近更改时间,文件内容发生改变,时间才会变化

ctime:最近改动时间,文件的元信息发生改变,时间才会改动,时间权限包括属主属组大小

注:只有用vim打开此文件才会更新此文件的最近访问时间

注:在使用find找文件时间时建议使用mtime

4.目录文件结构

inode号不包含文件名,文件名是存放在目录当中的,Linux系统中一切皆文件,因此目录也是一种文件,目录文件的结构就是目录项的列表,每个目录项由两部分组成:所包含文件的文件名,以及该文件名对应的inode号码

查看目录下所有文件的inode号

命令格式:ls -i  目录(绝对路径)

二、日志*

内核及系统日志由系统服务rsyslog统一管理,根据其主配置文件/etc/rsyslog.conf,linux操作系统本身和大部分服务器程序的日志文件都默认放在目录/var/log下。

1.日志的功能

1.用于记录系统、程序运行中发生的各种事件 

2.通过阅读日志,有助于诊断和解决系统故障

2.日志分类

1.内核系统日志:

由系统服务rsyslog统一进行管理,日志格式基本相似,记录了操作系统做了什么事,发生了什么故障

2.用户日志:

记录系统用户登录及退出系统的相关信息

3.程序日志:

由各种应用程序独立管理的日志文件,记录格式不统一,记录了某一程序做了什么事,发生了什么故障

3.日志默认保存的位置

默认位于:/var/log目录下,如果想改变日志位置,需要用到rsyslog软件

1.日常的日志记录(内核和公共日志)

核心系统日志文件,其中包含了系统启动时的引导信息,以及系统运行时的其他状态信息,I/O错误、网络错误和其他系统错误都会记录到此文件中。其他信息,比如某个人的身份切换为 root,已及用户自定义安装软件的日志,也会在这里列出

日志命令作用
btmplastb查看登录失败的用户
lastloglastlog查看用户最后一次登录的情况
wtmplast用户成功登录的日志

文件位置:/var/log/message

文件格式:文本文件

作用:系统中大部分的信息

2.系统安全的日志

文件位置:/var/log/secure

文件格式:文本文件

作用:系统安全日志,比如登陆失败等信息会记录下来

3.登录失败的日志

文件位置:/var/log/btmp

文件格式:二进制无法直接查看

作用:登录失败日志

lastb:查看登陆失败的用户

4.记录用户最后一次登录日志

文件位置:/var/log/lastlog

文件格式:非文本

lastlog:查看用户最后一次登录的情况

5.目前用户成功登录日志

文件位置:/var/log/wtmp

文件格式:非文本

last:查看用户成功登录的日志(wtmp)

last |tail:查询成功登录到系统的用户记录,只显示最后十行

6.记录硬件信息日志

文件位置:/var/log/dmesg

文件格式:文本

作用:记录硬件信息日志

7.记录系统启动服务

文件位置:/var/log/boot.log

文件格式:文本

作用:系统服务启动的相关信息

用vim打开查看相关信息

8.记录安装系统的相关信息

文件位置:/var/log/anaconda:anaconda

文件格式:文本

作用:安装系统时的相关信息

9.计划任务的日志

文件位置:/var/log/cron

作用:记录与系统定时任务相关的日志

10.查询当前登录用户

users:仅显示登录的用户名

w:显示当前系统上登录的用户以及活动情况

USER:登录的用户名

TTY:用户当前所使用的终端

FROM:登录用户的IP地址或主机名

LOGIN@:登陆时间

IDIE:用户在终端处于空闲状态的时间

JCPU:用户所有进程的累计CPU时间

PCPU:当前正在运行的进程的CPU时间

WHAT:用户正在做的事情(命令或程序的简短描述)

who:当前登陆用户的信息(包括用户名、登录终端和登陆时间等)

4.系统日志管理rsyslog

1.日志优先级/级别:描述了事件的严重程度

根据日志消息的重要程度不同,将其分为不同的优先级别(数字等级越小,优先级越高,消息越重要)

级号消息级别说明
0EMERG紧急会导致主机不可用的情况
1ALERT警告必须马上采取措施解决的问题
2CRIT严重比较严重的情况
3ERR错误运行出现错误
4WARNING提醒可能会影响系统功能的事件
5NOTICE注意不会影响系统但值得注意
6INFO信息一般信息
7DEBUG调试程序或系统调试信息等

2.rsyslog特性

1.多线程

2.UDP,TCP,SSL,TLS,RELP

3.MySQL,PGSQL,Oracle实现日志存储

4.强大的过滤器,可实现过滤记录日志信息中任意部分

5.自定义输出格式,可以日志

6.适用于企业级

3.rsyslog配置文件

配置文件/etc/rsyslog.conf由3个模块组成

1.MODULES相关配置模块

只有安装了功能模块,才会有相关的模块配置

2.GLOBAL  DIRECTIVES全局配置模块

全局配置没有局部配置的优先级高,只有在没有局部配置时,才会使用全局配置

3.RULES局部配置

3.sysklogd系统日志服务

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

1.syslogd(system application):记录应用日志

2.klogd(Linux kernel):记录内核日志

5.ELK日志

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

1.Elasticsearch:开源分布式搜索引擎,可以处理大规模日志数据,比如:Nginx、Tomcat、系统日志等功能

2.Logstash:对日志进行收集、分析、过滤,并将其存储供以后使用

3.kibana:可以提供的日志分析友好的Web界面

4.kafka:消息队列

6.logrorate分割日志文件

日志是需要进行分割的

1.写脚本,制定crontab计划任务每天执行

2.logrorate centos7

三、实操实验

1.实验的两个目的

1.有些软件程序是没有单独的日志服务,我们可以利用rsyslog软件给一些重要的程序生成独立的日志文件,把ssh远程登录程序的日志独立出来,ssh软件默认的日志在/var/log/secure,是很多程序一起使用的,并不是独立的。

2.搭建日志服务器

配置文件中的rules

通式:服务程序.记录的日志级别(sshd.error)日志文件的位置应该使用绝对路径

2.rsyslog实例1(设置ssh的单独日志)

目的:单独显示某一服务器的日志,以ssh服务为例

1.编辑rsyslog配置文件

vim /etc/rsyslog.conf

2.添加的内容

local6:日志源              *:表示任意级别             /var/log/nssh.log:新的日志路径

3.编辑ssh服务的配置文件/etc/ssh/sshd_config,改变日志路径

vim /etc/ssh/sshd_config

4.在32行添加自定义切换日志源为local6

SyslogFacility LOCAL6

5.重启服务

systemctl restart rsyslog.service sshd

6.远程连接其他主机

这里看到生成了一个登录信息的日志,显示最后一次登录的基础信息

7.查看ssh服务的日志是否独立列出

cat /var/log/nssh.log

2.rsyslog实例2(创建一个专门的日志服务器)

目的:将远程主机的日志备份到本机,现有esdeath、eva和es三台主机,现将es作为日志服务器用于记录esdeath和eva的日志存储

1.关闭防火墙

2.打开es的rsyslog的配置文件并加载es的rsyslog的ICMP和TCP模块

3.这里可以看到在提供TCP syslog接收功能中的两个模块开头有#号,说明是注释状态,并没有被开启,我们把#号去掉以开启此模块

$ModLoad imtcp:加载rsyslog的imtcp模块,imtcp模块用于接收通过TCP协议发送的日志消息

$InputTCPServerRun 514:用于启动rsyslog的TCP服务器模式,监听TCP端口514以接收日志消息

4.去掉注释状态,wq保存

5.重启使模块生效

systemctl restart rsyslog.service

6.查看514端口是否被开启

ss -ntap |grep 514

7.修改主机esdeath和eva的rsyslog配置文件,两个主机配置一样,这里只拿一个主机做演示

打开/etc/rsyslog.conf编辑配置

8.将TCP下的两个模块退出注释状态并wq保存退出

9.添加日志服务器的IP地址

*.info;mail.none;authpriv.none;cron.none      @@192.168.7.132(这里的IP地址选择日志服务器的IP地址)

10.重启使之生效

systemctl restart rsyslog.service

11.关闭防火墙

systemctl stop filewalld.service

12.观察主机es能否收到主机esdeath和eva的消息,主机esdeath和主机eva使用logger命令模拟日志

13.用tail -f  -n2  /var/log/messages:实时追踪消息日志的最后两行,收到了主机esdeath和主机eva的测试日志

四、日志管理工具journalctl

1.journalctl日志的配置文件

/etc/systemd/journald.conf

2.journalctl命令格式与选项

命令格式:journalctl   选项

选项

功能

journalctl查看所有日志(默认情况下,只保存本次启动的日志)
journalctl  -x提示信息
journalctl  -e显示到末尾
journalctl  --no-pager分页,显示全自动换行
journalctl  -k查看内核日志(不显示应用日志)
journalctl  -b  -0查看系统本次启动的日志
journacltl  -b  -1查看上一次启动的日志(需更改设置)
journacltl  -n显示尾部的最新10行日志
journacltl  -n  数字显示尾部指定行数的日志
journalctl  -f实时滚动显示最新日志
journalctl  绝对路径查看指定服务的日志
journalctl  _PID=1查看某个路径的脚本的日志
journalctl  --disk-usage显示日志占据的硬盘空间
journalctl  --vacuum-size=1G指定日志文件占据的最大空间
journalctl  --vacuum-time=1years指定日志文件保存多久
  • 8
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值