Linux 文件系统以及日志管理

一、inode 与block

1. inode 与block详解

在文件存储硬盘上,硬盘的最小存储单位叫做"扇区",每个为512字节。 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块" ( block )。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小 ,最常见的是4KB ,即连续八个扇区组成一个块

block(块)

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

inode (索引节点)

文件数据存储在"块"中,那么还必须找到一个地方存储文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种存储文件元信息的区域就叫inode(索引节点),也叫i节点。 文件数据存储在block块中,文件属性存储在inode

中文译名为:索引节点 ,也叫i节点 用于存储文件元信息

每一个inode大小一般是128字节或256字节

2.inode 作用

1.文件名包含特殊字符,可能无法正常删除。这时直接删除inode,能够起到删除文件的作用;

2.移动文件或重命名文件,只是改变文件名,不影响inode 号码;

3.打开一个文件以后,系统就以inode 号码来识别这个文件,不再考虑文件名。

4.文件数据被修改保存后,会生成一个新的inode 号码。

直接查看、修改文件内容或者改变文件名都不会影响 inode号,使用 vi 编辑器修改文件保存退出后会影响 inode号

针对无法正常删除文件名含有特殊符号的文件时,可根据 inode号 来删除文件

二、恢复误删除的文件 ext3

extundelete 是一个开源的Linux 数据恢复工具,支持ext3、 ext4文件系统。 ( ext4只能在centos6版本恢复)

首先创建sdb1 ,格式化为ext3 类型:

进行挂载:

安装依赖包:

编译安装extundelete:

在opt下找到extundelete:

生成几个文件:

extundelete /dev/sdc1 --inode 2 #查看文件系统/dev/sdc1下存在哪些文件:

删除pkm.txt , jqg.txt 文件

extundelete /dev/sdc1 --inode 2 查询这两个文件状态以删除

将挂载解除:

extundelete /dev/sdc1 --restore-all #恢复/dev/sdc1 文件系统下的所有内容:

在当前目录下会出现一个RECOVERED_FILES/目录,里面保存了已经恢复的文件:

三、 恢复误删除的文件 xfs

xfs类型文件备份和恢复

CentOs 7系统默认采用xfs类型的文件,xfs类型的文件可使用xfsdump 与xfsrestore 工具进行备份恢复

xfsdump命令常用的选项:

-f: 指定备份文件目录

-L: 指定标签session label

-M: 指定设备标签media labe........ 。

-s:备份单个文件,-s后面不能直接跟路径

xfsdump使用限制:

1.只能备份已挂载的文件系统

2.必须使用root的权限才能操作

3.只能备份XFS文件系统

4.备份后的数据只能让xfsrestore解析

5.不能备份两个具有相同UUID的文件系统(可用blkid命令查看)

首先建立sdb2 ,建立xfs格式的文件系统:

进行挂载:

检查xfsdump是否安装,若没有可yum安装:

在mnt下创建文件:

xfsdump -f /opt/dump_sdb /dev/sdb2 -L dump_sdb -M sdb2 #备份sdb2文件到/opt/dump_sdb下

将mnt下的文件删除:

使用xfsrestore -f /opt/dump_sdb /opt/mnt 将备份的数据恢复到mnt下:

查看mnt下,删除文件已恢复:

四、 Linux 系统日志文件

1. 日志的功能

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

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

2. 日志文件的分类

内核及系统日志

由系统服务rsyslog统一进行管理,日志格式基本相似

用户日志

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

程序日志

由各种应用程序独立管理的日志文件,记录格式不统一

3. 常见的一些日志文件及位置

内核及公共消息日志:

/var/log/messages: 记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等

对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息
计划任务日志:

/var/1og/cron: 记录crond计划任务产生的事件信息
系统引导日志:

/var/log/dmesg: 记录Linux系统在引导过程中的各种事件信息
邮件系统日志:

/var/log/maillog: 记录进入或发出系统的电子邮件活动

用户登录日志:

/var/log/secure: 记录用户认证相关的安全事件信息

/var/log/lastlog: 记录每个用户最近的登录事件。二进制格式

/var/1og/wtmp: 记录每个用户登录、注销及系统启动和停机事件。二进制格式

/var/run/btmp: 记录失败的、错误的登录尝试及验证事件。二进制格式

vim /etc/rsyslog.conf #查看rsyslog.conf 配置文件

4. 系统内核日志消息的优先级别

Linux系统内核日志消息的优先级别(数字等级越小,优先级越高,消息越重要) :

5. 公共日志/var/log/messages文件的记录格式

时间标签:消息发出的日期和时间。

主机名:生成消息的计算机的名称。

子系统名称:发出消息的应用程序的名称。

消息:消息的具体内容

6.用户日志分析

分析工具:users , w , who , last , lastb

**users:**命令只是简单地输出当前登录的用户名称,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示与其相同的次数


who: 命令用于报告当前登录到系统中的每个用户的信息。使用该命令,系统管理员可以查看当前系统存在哪些不合法用户,从而对其进行审计和处理。who 的默认输出包括用户名、终端类型、登录日期及远程主机

**w:**命令用于显示当前系统中的每个用户及其所运行的进程信息,比 users、who 命令的输出内容要丰富一些

**last:**命令用于查询成功登录到系统的用户记录,最近的登录情况将显示在最前面。通过last 命令可以及时掌握 Linux 主机的登录情况,若发现未经授权的用户登录过,则表示当前主机可能已被入侵

**lastb:**命令用于查询登录失败的用户记录,如登录的用户名错误、密码不正确等情况都将记录在案。登录失败的情况属于安全事件,因为这表示可能有人在尝试猜解你的密码。除了使用 lastb 命令查看以外,也可以直接从安全日志文件/var/log/secure 中获得相关信息

我们在192.168.192.20主机上可以查看到有登录失败的信息:

五、 日志文件管理

1. journalctl 工具

journalctl工具是CentOS-7才有的工具

Systemd 统一管理所有 Unit 的启动日志。带来的好处就是 ,可以只用journalctl一个命令,查看所有日志(内核日志和 应用日志)

journalctl -b #查看本次启动的日志

journalctl -k #查看内核日志

journalctl -e #从结尾开始看

journalctl -x: #提供问题相关的网址

journalctl -u·httpd #指定某个服务报错

journalctl -p #日志级别查看

journalctl -xe #经常用来查看最近报错的日志

在httpd服务文件内写错:

此时启动httpd服务时报错:

我们可以使用journalctl -xe 命令查看报错:

2. rsyslog服务

rsyslog是CentOS 6以后的系统使用的日志系统,rsyslog是用来管理、记录日志的程序

首先查看服务是否开启:

mail.* 代表比*等级高的都记录,*代表任何,也就是说任何日志都记录

.none 代表不记录日志

日志存放位置为*:所有日志高于疼痛这个等级就会对所有在线用户广播

.=代表只记录=后面级别的日志

.!代表除了!后面级别的日志不记录其他的都记录

存放路径之前有"-"代表先放入缓存足够大之后再存放在路径

我们可进入/etc/rsyslog.conf 自定义日志:

重启 rsyslog.service 服务:

在/var/log 下可查看到存在info.conf 文件:

相关推荐
踩着阴暗的自己向上爬1 小时前
Day05-04-持续集成总结
linux·运维·ci/cd
TiDB_PingCAP2 小时前
国产化新标杆:TiDB 助力广发银行新一代总账系统投产上线
运维·数据库·开源·tidb
qyhua2 小时前
Linux内网端口转公网端口映射
linux·运维·服务器
coisini.cn3 小时前
基于CentOS Stream 9平台搭建MinIO以及开机自启
运维·minio·centos stream 9
j.king3 小时前
开源GTKSystem.Windows.Forms框架让C# winform支持跨平台运行
linux·c#·gtk
Python私教4 小时前
docker部署onlyoffice,开启JWT权限校验Token
运维·docker·容器
stackY、4 小时前
【Linux】:程序地址空间
linux·算法
Ramboooooooo5 小时前
Nginx Lua Waf 插件一键部署
运维·nginx·lua·waf·lua waf·nginx waf
starleeisamyth5 小时前
Ubuntu + SSH密钥连接服务器
服务器·ubuntu·ssh
国中之林5 小时前
【qt】如何获取本机的IP地址?
服务器·qt·网络协议·学习·tcp/ip