首页 > 系统相关 >云计算【第一阶段(24)】Linux文件系统与日志分析

云计算【第一阶段(24)】Linux文件系统与日志分析

时间:2024-07-04 17:32:10浏览次数:22  
标签:24 文件 log 转储 Linux var 日志 inode

一、文件与存储系统的inode与block

1.1、硬盘存储

  • 最小存储单位:扇区(sector)
    • 每个扇区大小:512字节

1.2、文件存取

  • 最小存取单位:块(block)
  • 连续八个扇区组成:块(block)
    • 每个块大小:4K
  • 文件数据:实际数据与元信息
  • 操作系统读取硬盘的时候,是一次性连续读取多个扇区,即一个块一个块的读取的。
  • 文件数据包括实际数据元信息(类似文件属性),文件数据存储在“块"中

1.3、inode

  • 定义:存储文件元信息的区域
  • 包含:创建者、创建日期、文件大小、文件权限等的区域
  • 特点:
    • 一个文件必须占用一个inode
    • 格式化文件系统时确定inode的总数
    • 至少占用一个block
    • 不包含文件名,文件名是存放在目录当中的。

元信息包括

  • 文件的字节数
  • 文件拥有者的userid
  • 文件的groupid
  • 文件的读,写,执行权限
  • 文件的时间戳

1.4、文件名与inode

  • 文件名存放位置:目录
  • 译名为"索引节点",也叫i节点
  • inode号码:操作系统识别文件的唯一标识,一个文件必须占用一个inode,并且至少占用一个block。
  • 每个inode都有一个号码,操作系统用inode号码来识别不同的文件。Linux系统内部不使用文件名,而使用inode号码来识别文件。
  • 访问文件流程:
  1. 根据文件名查找inode号码
  2. 通过inode号码获取inode信息
  3. 检查用户权限
  4. 指向数据block并读取数据

1.4.1、硬盘分区后的结构

文件夹的indoe号中包括当前文件夹中文件名字和文件的indoe号
先确定文件夹后再通过indoe找到block,如果一个block放不下数据,则可以占用多个block.
例如,有一个10kb的文件需要存储,
则会占用3个block(默认一个是4k),虽然最后一个block不能占满,
但也不能再放入其他文件的数据。
这3个block 有可能是连续的,也有可能是分散的,所以会有磁盘碎片。

1.4.2、访问文件的简单流程

1.5、Linux系统特点

  • 一切皆文件
  • 目录也是一种文件

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

  • ls -i  文件名
  • stat  文件名

很显然stat看的更详细一些

1.7、linux系统文件三个主要的时间属性

  • ctime(change time)

最后一次改变文件或目录 (属性)的时间

  • atime(access time)

最后一次访问文件或目录的时间

  • mtime(modify time)

最后一次修改文件或目录(内容)的时间

1.8、inode 占用

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

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

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

每个inode的大小,一般是128字节或256字节。通常情况下不需要关注单个inode的大小,而是需要重点关注inode总数。inode的总数在格式化时就给定了,执行"df   -i"命令即可查看每个硬盘分区对应的的inode总数和已经使用的inode数量。

inode节点的总数,在格式化时就给定了,一般是每1KB或每2KB就设置一个inode。假定在一块1GB的硬盘中,每个inode节点大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘12.8%。

由于inode号码与文件名分离,导致Linux系统具备以下几种特有的现象:
1.文件名包含特殊字符,可能无法正常删除。可直接删除inode,能够起到删除文件的作用;
2.移动文件或重命名文件,只是改变文件名,不影响inode 号码;
3.打开一个文件以后,系统就以inode 号码来识别这个文件,不再考虑文件名。
4.文件数据被修改保存后,会生成一个新的inode 号码。

 1.8.1、实验1

先创建大量空文件

for ((i=1; i<=8680; i++)); do  
    touch /test/file$i  
done

 或者

touch {1..8680}.txt 

i占用满

 但是磁盘空间还有

当再创建其他的的时候

二、硬链接与软链接

为文件或目录建立链接文件
链接文件分类
硬链接

ln  源文件目标位置

 软链接

ln - s  源文件或目录   链接文件或目标位置

 详细内容看精讲第八段内容

云计算【第一阶段(12)】Linux常用命令精讲【二】_云计算怎么把目录改名-CSDN博客

三、恢复误删除的文件

3.1、恢复误删除的文件ext3

EXT类型文件恢复
extundelete 是一一个开源的Linux 数据恢复工具,支持ext3、 ext4文件系统。 ( ext4只能在centos6版本恢复,但是目前企业用centos6版本极少,略过)

3.1.1、实验1

安装位置:切勿将extundelete安装到你误删的文件所在硬盘上,以避免数据被覆盖的风险

需要挂载一个ext3的盘

1.安装依赖包
yum -y install e2fsprogs-devel e2fsprogs-libs gcc gcc-c++ 
2.编译安装extundelete
cd /test
wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2

3.解压
tar jxvf extundelete-0.2.4.tar.bz2

4.切换目录

cd extundelete-0.2.4/

5.指定configure的配置路径 --prefix
./configure --prefix=/usr/local/extundelete && make && make install 或
./configure && make && make install

6.如果配置了指定的上面路径需要软链接
ln -s /usr/local/extundelete/bin/* /usr/bin/

模拟删除并执行恢复操作

cd /opt/yczj

切换到挂载点磁盘

添加数据
echo a>a
echo a>b
echo a>c

extundelete /dev/sdb2 --inode  2  #查看文件系统/dev/sdb2下存在哪些文件,i节点是从2开始的,2代表该文件系统最开始的目录。

rm -rf a b
extundelete /dev/sdb2  --inode 2

可以发现被删除了


cd ~
umount /test

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

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



ls RECOVERED FILES/

3.2、恢复误删除的文件XFS

xfsdump用于创建xfs文件系统的备份,而xfsrestore则用于将这些备份数据恢复到原始状态或指定位置,搭配使用。

xfsdump命令格式

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

xfsdump备份级别 (默认为0)

  • 0:完全备份
  • 1-9:增量备份

xfsdump常用选项:-f,-L,-M,-s

-f: 指定备份文件目录
-L: 指定标签session label
-M: 指定设备标签media labe
-s:备份单个文件,-s后面不能直接跟路径

xfsrestore命令格式

xfsrestore   恢复文件的位置      存放恢复后文件的位置

xfsdump使用限制

  • 只能备份已挂载的文件系统
  • 必须使用root的权限才能操作
  • 只能备份xfs文件系统
  • 备份后的数据只能让xfsrestore解析
  • 不能备份两个具有相同uuid的文件系统

实验

首先创建分区,格式化xfs,挂载

在挂载的地方创建一个文件

先查看rpm -qa | grep xfsdump如果未安装yum install -y xfsdump

备份

xfsdump -f      /opt/dump_sdb    /dev/sdb1       

可以加   -L dump_sdb -M sdb1

模拟删除,在挂载目录删除

恢复

xfsrestore  -f   /opt/dump_sdb1  /opt/ycnh

四、分析日志文件

4.1、日志的功能

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

4.2、日志文件的分类

  • 内核及系统日志

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

  • 用户日志

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

  • 程序日志

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


4.3、日志保存位置

默认位于: /var/log/目录下
主要日志文件介绍

  • 内核及公共消息日志 /var/log/messages
  • 计划任务日志 /var/log/cron
  • 系统引导日志 /var/log/dmesg
  • 邮件系统日志 /var/log/maillog
  • 用户登录日志 /var/log/lastlog  /var/log/secure  /var/log/wtmp  /var/run/btmp

4.3.1、常见的一些日志文件介绍:

/var/log/messages: 记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息。
/var/log/cron: 记录crond计划任务产生的事件信息。
/var/log/dmesg: 记录Linux系统在引导过程中的各种事件信息。
/var/log/maillog: 记录进入或发出系统的电子邮件活动。
/var/log/secure: 记录用户认证相关的安全事件信息。
/var/log/lastlog: 记录每个用户最近的登录事件。二进制格式
/var/1og/wtmp: 记录每个用户登录、注销及系统启动和停机事件。二进制格式
/var/run/btmp: 记录失败的、错误的登录尝试及验证事件。二进制格式

4.4、rsyslog

内核及系统日志由系统服务rsyslog 统一管理,主配置文件为/etc/rsyslog.conf
Linux操作系统本身和大部分服务器程序的日志文件都默认放在目录/var/1og/下。
软件包:rsyslog-7.4.7-16.el7.x86_64
主要程序:/sbin/rsyslogd
配置文件:/etc/rsyslog.conf

4.5、日志消息的级别

日志级别级号消息级别说明
EMERG0紧急会导致主机系统不可用的情况
ALERT1警告必须马上采取措施解决的问题
CRIT2严重比较严重的情况
ERR3错误运行出现错误
WARNING4提醒可能会影响系统功能的事件
NOTICE5注意不会影响系统但值得注意的信息
INFO6信息一般信息,程序或系统调试信息等
DEBUG7调试详细的调试信息,用于开发或故障排除

4.6、日志记录的一般格式

4.7、用户日志分析

保存了用户登录,退出系统等相关信息

  • /var/log/lastlog: 最近的用户登录事件
  • /var/log/wtmp: 用户登录,注销及系统开,关机事件
  • /var/run/utmp: 当前登录的每个用户的详细信息
  • /var/log/secure 与用户验证相关的安全性事件

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

4.7.1、分析工具详细分析命令

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


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

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

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

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

4.8、程序日志分析

由相应的应用程序独立进行管理
web服务:/var/log/httpd/
access_log,error_log
代理服务:/var/log/squid/
access.log,cache.log
FTP服务:/var/log/xferlog


分析工具
文本查看,grep过滤检索, webmin管理套件中查看
awk, sed等文本过滤,格式化编辑工具
webalizer  Awstats等专用日志分析工具

4.9、日志管理策略

  • 及时作好备份和归档
  • 延长日志保存期限
  • 控制日志访问权限

日志中可能会包含各类敏感信息,如账户,口令等

  • 集中管理日志

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

4.10、日志管理工具

4.10.1、Logrotate

(轮转,日志切割)       centos7  自带的一个

概念

Logrotate是一个在Linux系统中广泛使用的日志文件管理工具,主要用于日志文件的切割、压缩、删除和创建新日志文件等操作,以节省磁盘空间并方便日志管理

作用

1.如果没有日志轮转,日文件会越来越大
2.将丢弃系统中最旧的日志文件,以节省空间
3.logrotate本身不是系统守护进程,它是通过计划任务crond每天执行计划任务

Logrotate的常用参数

  • -v, --verbose:显示详细的转储过程信息。
  • -f, --force:强制进行日志转储,忽略配置文件中设置的时间间隔或大小限制。
  • -d, --debug:测试配置文件是否有错误,但不实际执行转储操作。
  • -m, --mail=command:压缩日志后,通过指定的命令发送日志到指定邮箱。
  • -s, --state=statefile:使用指定的状态文件记录转储的日志信息。

Logrotate的定时执行

  • Logrotate通常通过cron服务定时执行。在Linux系统中,/etc/cron.daily/logrotate 脚本负责每天执行一次Logrotate。
  • 用户也可以根据需要手动执行Logrotate,例如使用logrotate -vf /etc/logrotate.conf 命令强制立即执行一次转储操作。


配置

- 计划任务:/etc/cron.daily/logrotate
- 程序文件:/usr/sbin/logrotate
- 配置文件: /etc/logrotate.conf
- 日志文件:/var/lib/logrotate/logrotate.status

也可以在这里配置系统特定日志

以下是一个简单的Logrotate配置示例,用于切割和压缩/var/log/myapp.log日志文件:

/var/log/myapp.log { 
daily # 每天切割一次 
rotate 7 # 保留7个备份 
compress # 压缩备份文件 
missingok # 如果日志文件丢失,不报错继续滚动下一个日志 
notifempty # 如果日志文件为空,不进行轮转 
create 640 myuser mygroup # 切割后创建新文件,并设置权限和所有者 
}

 更多独立配置文件详解

配置参数说明
compress使用gzip压缩转储后的日志文件
nocompress不对转储后的日志文件进行压缩
copytruncate对于还在被打开中的日志文件,先备份当前日志并截断原文件
nocopytruncate备份日志文件但不截断原文件
create mode owner group使用指定的权限、所有者和所属组创建新的日志文件
nocreate不创建新的日志文件(仅保留备份)
delaycompress与compress一起使用时,延迟到下一次转储时才压缩当前转储的日志文件
nodelaycompress覆盖delaycompress选项,转储时立即压缩日志文件
errors address将转储时的错误信息发送到指定的Email地址
ifempty即使是空文件也进行转储(默认行为)
notifempty如果文件为空,则不进行转储
mail address将转储的日志文件发送到指定的E-mail地址
nomail转储时不发送日志文件到任何E-mail地址
olddir directory将转储后的日志文件放入指定的目录(需与当前日志文件在同一文件系统)
noolddir转储后的日志文件和当前日志文件放在同一个目录下
prerotate/endscript在转储之前需要执行的命令(prerotate与endscript需单独成行)
postrotate/endscript在转储之后需要执行的命令(postrotate与endscript需单独成行)
daily指定转储周期为每天
weekly指定转储周期为每周
monthly指定转储周期为每月
rotate count指定日志文件删除之前转储的次数,0指没有备份,5指保留5个备份
tabooext [+] listlogrotate不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig.rpmsavev, 和~
size size当日志文件到达指定的大小时才转储(单位可以是bytes、KB或MB)
sharedscripts对每个匹配的日志文件条目,prerotatepostrotate脚本只运行一次,无论匹配了多少个日志文件
nosharedscripts对每个转储的日志文件,都执行一次prerotatepostrotate脚本(默认行为)
missingok如果日志不存在,不提示错误,继续处理下一个日志文件
nomissingok如果日志不存在,提示错误(默认行为)

4.10.2、webalizer日志分析工具

webalizer是一个高效的、免费的web服务器日志分析程序。其分析结果以HTML文件格式保存,从而可以很方便的通过web服务器进行浏览。Internet上的很多站点都使用webalizer进行web​​​​​​​服务器日志分析。

Webalizer是用C写的程序,所以其具有很高的运行效率。在主频为200Mhz的机器上,webalizer每秒钟可以分析10000条记录,所以分析一个40M大小的日志文件只需要15秒。

webalizer支持标准的一般日志文件格式(Common Logfile Format);除此之外,也支持几种组合日志格式(Combined Logfile Format)的变种,从而可以统计客户情况以及客户操作系统类型。并且现在webalizer已经可以支持wu-ftpd xferlog日志格式以及squid日志文件格式了。webalizer支持命令行配置以及配置文件。可以支持多种语言,也可以自己进行本地化工作。webalizer支持多种平台,比如UNIX、linux、NT, OS/2 和 MacOS等。

软件:httpd 作为webalizer的页面服务器

 

4.10.3、journalctl命令

journalctl工具是CentOS-7才有的工具
Systemd 统一管理所有 Unit 的启动日志。带来的好处就是 ,可以只用journalctl一个命令,查看所有日志(内核日志和 应用日志)。日志的配置文件/etc/systemd/journald.conf 


ps -ef | grep journald


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

journalctl -k     //查看内核日志

journalctl -xe  经常用来查看最近报错的日志
-e:从结尾开始看
-x:提供问题相关的网址

其他

日志工具可研究:Webmin、 Webalizer、Awstats等专用日志分析工具

标签:24,文件,log,转储,Linux,var,日志,inode
From: https://blog.csdn.net/YCyjs/article/details/140100715

相关文章

  • 云计算【第一阶段(26)】Linux网络设置
    一、查看网络配置1.查看网络接口信息ifconfig查看所有活动的网络接口信息2.ifconfig命令查看指定网络接口信息ifconfig  网络接口(1)第一行:以太网卡的名字ens33其中en代表以太网卡,centos6的是eth0,ens33代表PCI接口的物理位置为(0,3),其中横座标代表bus,纵座标代......
  • Linux系统应用与设置(4):Linux抓包工具tcpdump
    1.简述        tcpdump是一款广泛使用的命令行网络分析工具,它能够捕获和分析网络上的数据包。这个强大的工具对于网络故障排查、安全监控和网络流量分析非常有用。        值得注意的是,通过tcpdump抓取的数据还可以通过保存为*.pcap文件,然后使用wireshark......
  • 最新发布!快速掌握2024年度最受欢迎的十个优秀项目管理软件
    在如今市场竞争激烈的环境下,企业要想在有限的时间和预算内高效完成项目,实现目标,项目管理软件就显得尤为重要。这类软件可以帮助企业优化资源配置,提高团队协作效率,降低项目风险,从而确保项目能顺利进行。为了帮企业找到最适合自己的项目管理软件,三横王讲测试进行了研究和比较,评估......
  • 维护合作伙伴关系与直接销售:SaaS渠道商如何解决2024运营难题?
    随着科技的飞速发展和市场竞争的日益激烈,SaaS(Software as a Service)行业正步入一个充满挑战与机遇并存的新时代。对于SaaS渠道商而言,2024年无疑是一个考验其战略眼光与运营能力的关键年份。面对市场环境的快速变化、客户需求的日益多样化以及合作伙伴关系的微妙调整,SaaS渠......
  • Python Linux源码安装
    保留服务器原Python安装版本,安装指定需求版本Python1.查看当前系统版本[root@iZbp1ac4pv22mg092qi2zfZ~]#cat/etc/system-releaseCentOSLinuxrelease7.9.2009(Core)2.查看已安装Python路径及版本[root@iZbp1ac4pv22mg092qi2zfZ~]#whichpython/usr/bin/python[ro......
  • mysql日志
    日志类型查询日志日志类型描述查询文件开启方式一般查询日志记录服务器接收到的每一个查询或是命令,无论这些查询或是命令是否正确甚至是否包含语法错误,generallog都会将其记录下来SHOWVARIABLESLIKE'general_log_file';SETGLOBALgeneral_log='ON';慢......
  • 都2024年了,还在问网络安全怎么入门,气得我当场脑血栓发作
    前言本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。下面就开始进入正题,如何从一个萌新一步一步进入网络安全行业。正题首先,在准备进入这个行业之前,我们要问一下我们的内心,工作千......
  • 都2024年了,还在问网络安全怎么入门,气得我当场脑血栓发作
    前言本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。下面就开始进入正题,如何从一个萌新一步一步进入网络安全行业。正题首先,在准备进入这个行业之前,我们要问一下我们的内心,工作千......
  • 都2024年了,还在问网络安全怎么入门,气得我当场脑血栓发作
    前言本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。下面就开始进入正题,如何从一个萌新一步一步进入网络安全行业。正题首先,在准备进入这个行业之前,我们要问一下我们的内心,工作千......
  • Linux下使用arping检测IP地址是否冲突
    arping简介在Linux中,arping是一个用来发送ARP请求到一个相邻主机的工具,通常用于检测网络上的IP地址冲突。使用arping检测IP地址是否冲突的方法例1:使用如下命令检测10.206.216.95是否冲突(使用-I参数指定网络接口)#arping-Ieth010.206.216.95ARPING10.206.216.95......