Linux文件系统与日志分析

文件是存储在硬盘上的,硬盘的最小存储单位叫做“扇区”(sector),每个扇区存储512字节。

一般连续八个扇区组成一个"块"(block),一个块是4K大小,是文件存取的最小单位。操作系统读取硬盘的时候,是一次性连续读取多个扇区,即一个块一个块的读取的。

文件数据包括实际数据与元信息(类似文件属性)。文件数据存储在“块”中,存储文件元信息(比如文件的创建者、创建日期、文件大小、文件权限等)的区域就叫做inode。因此,一个文件必须占用一个 inode,并且至少占用一个 block。

inode不包含文件名。文件名是存放在目录当中的。Linux 系统中一切皆文件,因此目录也是一种文件。

每个inode都有一个号码,操作系统用inode号码来识别不同的文件。Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称,文件名和inode号码是一一对应关系,每个inode号码对应一个文件名。

所以,当用户在Linux系统中试图访问一个文件时,系统会先根据文件名去查找它对应的inode号码;通过inode号码,获取inode信息;根据inode信息,看该用户是否具有访问这个文件的权限;如果有,就指向相对应的数据block,并读取数据。

查看文件名对应的 inode 号码有两种方式:

ls -i 文件名

stat 文件名

atime(accesstime):

当使用这个文件的时候就会更新这个时间。

mtime(modification time):

当修改文件的内容数据的时候,就会更新这个时间,而更改权限或者属性,mtime不会改变,这就是和ctime的区别。

ctime(status time):

当修改文件的权限或者属性的时候,就会更新这个时间,ctime并不是create time,更像是change time,

只有当更新文件的属性或者权限的时候才会更新这个时间,但是更改内容的话是不会更新这个时间。

inode也会消耗硬盘空间,所以格式化的时候,操作系统自动将硬盘分成两个区域。

一个是数据区,存放文件数据;

另一个是 inode 区,存放 inode 所包含的信息。

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

通常情况下不需要关注单个 inode 的大小,而是需要重点关注 inode 总数。

inode 的总数在格式化时就给定了,

执行 “df -i” 命令即可查看每个硬盘分区对应的的 inode 总数和已经使用的inode 数量。

由于 inode 号码与文件名分离,导致Linux 系统具备以下几种特有的现象:

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

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

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

4.使用 vi 编辑器修改文件数据保存后,会生成一个新的 inode 号码。

find ./ -inum 52305140 -exec rm -i {} \; ---查找inode删除

find /opt -inum 34376268 -exec rm -rf {} \;

find ./ -inum 50464299 -delete ---同上

inode节点耗尽故障处理

#使用fdisk创建分区/dev/sdb1,分区大小4M即可 创建一个ext4的

fdisk /dev/sdb

mkfs.ext4 /dev/sdb1

mkdir /test

mount /dev/sdb1 /mnt

df -i

#模拟inode节点耗尽故障

for ((i=1; i<=7680; i++));do touch /test/file$i;done touch {1..7680}.txt

df -i

df -hT

#删除文件恢复

rm -rf /test/*

df -i

df -hT

ext4类型inode号满了之后无法再添加文件,但xfs类型有容错机制,在inode号满了情况下还可以再添加大约300个inode号文件。

xfs 类型文件备份和恢复

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

xfsdump 的备份级别有两种:0 表示完全备份;1-9 表示增量备份。xfsdump 的备份级别默认为 0。

xfsdump 的命令格式为:

xfsdump -f 备份存放位置 要备份的路径或设备文件

xfsdump 命令常用的选项:

-f:指定备份文件目录

-L:指定标签 session label

-M:指定设备标签 media label

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

xfsdump使用限制:

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

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

3.只能备份XFS文件系统

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

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

中间回车键是确认你是否需要全部备份

内核及系统日志由系统服务 rsyslog 统一管理,主配置文件为/etc/rsyslog.conf

Linux 操作系统本身和大部分服务器程序的日志文件都默认放在目录/var/log/下。

常见的一些日志文件:

#内核及公共消息日志:

/var/log/messages:记录Linux内核消息及各种应用程序的公共日志信息,

包括启动、IO错误、网络错误、程序故障等。

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

#计划任务日志:

/var/log/cron:记录crond计划任务产生的事件信息。

#系统引导日志:

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

#邮件系统日志:

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

#用户登录日志:

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

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

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

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

#MODULES //相关模块配置

# Provides UDP syslog reception

#$ModLoad imudp //使用UDP协议传输日志数据

#$UDPServerRun 514 //端口为514端口

# Provides TCP syslog reception

#$ModLoad imtcp //使用TDP协议传输日志数据

#$InputTCPServerRun 514 //端口为514端口

#### GLOBAL DIRECTIVES #### //全局配置不常用省略

#### RULES #### //日志记录相关的规则配置

*.info;mail.none;authpriv.none;cron.none /var/log/messages

//*表示所有 *.info表示所有级别,分号隔开none表示没有级别,即不记录

//本行中表示不记录mail、authpriv、cron其他所有记录到/var/log/messages文件中

authpriv.* /var/log/secure

//authpriv:所有等级日志记录到/var/log/secure文件中,文件可以自定义路径和文件名

//可以使用1个@或者2@加ip的形式将日志传到其他相通的服务器上

mail.* -/var/log/maillog

//mail所有等级日志记录到-/var/log/maillog文件中,文件可以自定义路径和文件名

//可以使用1个@或者2@加ip的形式将日志传到其他相通的服务器上

cron.* /var/log/cron

//cron所有等级日志记录到/var/log/cron文件中,文件可以自定义路径和文件名

//可以使用1个@或者2@加ip的形式将日志传到其他相通的服务器上

local7.* /var/log/boot.log

//local7表示自定义服务,范围为0-7都可以使用,在支持的服务配置文件中也要写对应的local等级

// /var/log/boot.log表示存到此目录下的文件中,文件可以自定义路径和文件名

//可以使用1个@或者2@加ip的形式将日志传到其他相通的服务器上

设备字段说明:

auth用户认证时产生的日志

authprivssh、ftp等登录信息的验证信息

daemon一些守护进程产生的日志

ftpFTP产生的日志

lpr打印相关活动

markrsyslog服务内部的信息,时间标识

news网络新闻传输协议(nntp)产生的消息。

syslog系统日志

uucpUnix-to-Unix Copy 两个unix之间的相关通信

console针对系统控制台的消息。

cron系统执行定时任务产生的日志。

kern系统内核日志

local0~local7自定义程序使用

mail邮件日志

user用户进程

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

0EMERG(紧急):会导致主机系统不可用的情况。如系统崩溃

1ALERT(警告):必须马上采取措施解决的问题。如数据库被破坏

2CRIT(严重):比较严重的情况。如硬盘错误,可能会阻碍程序的部分功能

3ERR(错误):运行出现错误。不是非常紧急,尽快修复的

4WARNING(提醒):可能影响系统功能,需要提醒用户的重要事件。不是错误,如磁盘用了85%等

5NOTICE(注意):不会影响正常功能,但是需要注意的事件。无需处理

6INFO(信息):一般信息。正常的系统信息

7DEBUG(调试):程序或系统调试信息等。包含详细开发的信息,调试程序时使用

none:没有优先级,不记录任何日志消息。

分析工具

users、 who、w 、last、lastb

last命令用于查询成功登录到系统的用户记录

lastb命令用于查询登录失败的用户记录

users #显示当前登录系统的所有用户的用户列表。

[root@localhost opt]# users

root root

w #显示目前登入系统的用户信息

last #列出截止目前登录过系统的用户信息

lastb #查询登录失败的用户记录

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

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

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

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

消息:消息的具体内容。

-------------实验一:将ssh服务日志单独存放------------

添加local6

#SyslogFacility AUTHPRIV #注释掉

SyslogFacility LOCAL6 #添加这一行,可以复制粘贴,必须要大写

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值