Linux-文件系统与日志分析

系列文章目录

` 提示:仅用于个人学习,进行查漏补缺使用。
1.Linux介绍、目录结构、文件基本属性、Shell
2.Linux常用命令
3.Linux文件管理
4.Linux 命令安装(rpm、install)
5.Linux账号管理
6.Linux文件/目录权限管理
7.Linux磁盘管理/文件系统
8.Linux逻辑卷管理LVM
9.Linux磁盘配额
10.Linux服务器硬件及RAID配置实验
11.Linuxu引导过程与服务控制
12.Linux-进程和计划任务管理
13.Linux-系统安全及应用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

本章大概内容有:
       inode与block、硬链接与软链接、恢复误删除的文件(xfs类型、EXT类型)、cpio命令、日志分析功能分类工具、补充等等

提示:以下是本篇文章正文内容,下面案例可供参考

一、inode与block

1.概述

  • 文件数据包括元信息与实际数据
  • 文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节
  • block(块)
    • 连续的八个扇区组成一个block(4k)【8*512/1024=4K】
    • 是文件存取的最小单位
  • inode(索引节点)
    • 中文译名为“索引节点”,也叫i节点block
    • 用于存储文件元信息

ps[一个独立文件必须占用一个inode,但至少占用一个block]

2.inode的内容

  • inode包含文件的元信息
    • 文件的字节数
    • 文件拥有者的User ID
    • 文件的Group ID
    • 文件的读、写、执行权限
    • 文件的时间戳
  • 用stat命令可以查看某个文件的inode信息
stat	aa.txt
File: "aa.txt"
Size: 1234          # 文件大小为1234字节
Blocks: 8           # 文件占用的块数(通常用于磁盘存储)
IO Block: 4096      # 文件系统的建议 IO 块大小
Device: 802h/2049d  # 文件系统的设备号(通常是硬盘的分区号)
Inode: 123456       # 文件的 inode 编号(唯一标识一个文件或目录)
Links: 1            # 链接数(系统中硬链接和软链接的总数)
Access: 2023-11-08 14:32:15 # 文件的最后访问时间
Modify: 2023-11-08 14:30:10 # 文件的最后修改时间
Change: 2023-11-08 14:30:10 # 文件的 inode 最后修改时间

image.png

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

  • ctime(change time)
    • 最后一次改变文件或目录(属性)的时间
  • atime(access time)
    • 最后一次访问文件或目录的时间
  • mtime(modify time)
    • 最后一次修改文件或目录(内容)的时间

4.inode的内容

  • 目录文件的结构
    • 目录也是一种文件
    • 目录文件的
  • 每个inode都有一个号码,操作系统用inode号码来识别不同的文件
  • Linux系统内部不适用文件名,而使用inode号码来识别文件
  • 对于用户,文件名只是inode号码便于识别的别称

### 5.inode号码
  • 用户通过文件名打开文件时,系统内部的过程
    • 1.系统找到这个文件名对应的inode号码
    • 2.通过inode号码,获取inode信息
    • 3.根据inode信息,找到文件数据所在的block,读出数据
  • 查看inode号码的方法
ls -i aa.txt   ###查看文件名对应的inode号码
stat	aa.txt 	 ###查看文件inode信息中的inode号码

6.文件存储小结

  • 硬盘分区后的结构

文件名 -> 目录项 目录块
元信息 -> inode inode表区块
数据 -> block block数据区

  • 访问文件的简单流程

用户访问文件–>系统查找文件对应的inode—>判断用户是否具备访问权限---->1.是—>指向对应的数据block,2否,返回Permission

7.inode的大小

  • inode也会消耗硬盘空间
    • 每个inode的大小
    • 一般是128字节或256字节
  • 格式化文件系统时确定inode的总数
  • 使用df -i命令可以查看每个硬盘分区的inode总数和已经使用的数量

8.inode的特殊作用

  • 由于inode号码与文件名分离,导致一些Unix/Linux系统具有以下的现象
    • _ 当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件_
    • 移动或重命名文件时,只改变文件名,不影响inode号码
    • _ 打开一个文件后,系统通过inode号码来识别该文件,不再考虑文件名_
    • 使用 vi 编辑器修改文件数据保存后,会生成一个新的 inode 号码。

PS:便于理解:相当于系统只认身份证号,改名的话身份证号码也不改

二、硬链接与软链接

  • 链接文件
    • 为文件或目录建立连接文件
    • 链接文件分类
软链接(符号链接)硬链接
删除原始文件后失效
使用范围适用于文件或目录
保存位置与原始文件可以位于不同的文件系统中,必须与原始文件在同一个文件系统内(如一个Linux分区)

三、恢复误删除的文件

1.案例:恢复XFS类型的文件

  • xfsdump命令格式
xfsdump -f 备份存放位置	要备份的路径或设备文件
  • xfsdump备份级别(默认为0)
    • 0:完全备份
    • 1-9:增量备份
  • xfsdump常用选项:-f、-L、-M、-s
  • xfsrestore命令格式
xfsrestore -f 恢复文件的位置	存放恢复后文件的位置
  • 模拟删除并执行恢复操作

PS:

  • rsync->备份的对象是文件,实现复制动作
  • xfsdump->是文件系统->自带的有关于数据丢失后恢复的工具

2.EXT类型文件恢复

  • extundelete 是一个开源的 Linux 数据恢复工具,支持 ext3、ext4文件系统。(ext4只能在centos6版本恢复)
  • 步骤1.使用fdisk创建分区/dev/sdc1,格式化ext3文件系统
fdisk /dev/sdc								###打开fdisk分区工具,对/dev/目录下的sdc设备进行分区
partprobe /dev/sdc						###更新分区表
mkfs.ext3 /dev/sdc1						###使用mkfs.ext3在sdc1分区上创建ext3文件系统
mkdir /test										###创建一个测试目录
mount /dev/sdc1 /test					###将sdc1分区挂载到/test目录
df -hT												###显示文件系统类型

image.png
image.png
image.png

  • 步骤2.安装编译依赖包和环境
#安装依赖包
yum install gcc* pcre* -y													# 安装这些基本依赖(最小安装没有这些基础依赖)
yum -y install e2fsprogs-devel e2fsprogs-libs 		# 在CentOS上安装必要的开发库

# 编译安装 extundelete
cd /test                   												# 切换到/test目录
wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2 # 下载extundelete源码包
tar jxvf extundelete-0.2.4.tar.bz2 								# 解压源码包
cd extundelete-0.2.4/       											# 切换到源码目录
./configure --prefix=/usr/local/extundelete && make && make install # 配置并编译安装extundelete
ln -s /usr/local/extundelete/bin/* /usr/bin/ 			# 将编译后的可执行文件链接到/usr/bin

image.png
image.png
image.png
image.png
image.png

  • 步骤3.模拟删除并执行恢复操作
# 模拟删除并执行恢复操作
cd /test                   # 切换到/test目录
echo a>a                   # 创建一个文件a
echo a>b                   # 创建一个文件b
echo a>c                   # 创建一个文件c
echo a>d                   # 创建一个文件d
ls                         # 列出目录内容
extundelete /dev/sdc1 --inode 2 # 查看文件系统/dev/sdc1下存在哪些文件,i节点是从2开始的,2代表该文件系统最开始的目录。

rm -rf a b                 # 删除文件a和b
extundelete /dev/sdc1 --inode 2 # 再次查看文件系统,确认a和b已经被删除
cd ~                       # 切换到用户家目录
umount /test                # 卸载挂载的文件系统
extundelete /dev/sdc1 --restore-all # 恢复/dev/sdc1文件系统下的所有内容
# 在当前目录下会出现一个RECOVERED_FILES/目录,里面保存了已经恢复的文件
ls RECOVERED_FILES/        # 列出恢复的文件

image.png
image.png
image.png
image.png

3.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命令查看)
  • 案例
1.步骤1.使用fdisk创建分区/dev/sdb1,格式化xfs文件系统
# 使用fdisk创建分区/dev/sdb1,格式化xfs文件系统
fdisk /dev/sde            	# 打开fdisk分区工具
partprobe /dev/sde        	# 更新分区表
mkfs.xfs -f /dev/sde1     	# 使用mkfs.xfs在sde1分区上创建xfs文件系统,-f选项强制格式化
mkdir /data               	# 创建一个数据目录
mount /dev/sde1 /data/    	# 将sde1分区挂载到/data目录
cd /data                   	# 切换到/data目录
cp /etc/passwd ./         	# 复制系统密码文件到当前目录作为测试数据
mkdir test                 	# 创建一个测试目录
touch test/a               	# 在测试目录中创建一个测试文件

image.png
image.png

2.步骤2.使用 xfsdump 命令备份整个分区
rpm -qa | grep xfsdump     # 查询已安装的xfsdump包,确保它已经安装
yum install -y xfsdump     # 如果xfsdump没有安装,安装它
xfsdump -f /opt/dump_sde1 /dev/sde1 -L dump_sde1 -M sde1 
                            # 使用xfsdump备份sde1分区,指定备份文件路径和标签

image.png

3.步骤3.模拟数据丢失并使用 xfsrestore 命令恢复文件
# 模拟数据丢失并使用 xfsrestore 命令恢复文件
cd /data/                  # 切换到/data目录
rm -rf ./*                 # 删除当前目录下的所有文件和目录
ls                         # 列出目录内容,确认所有文件已被删除

image.png

4.步骤4.测试
xfsrestore -f /opt/dump_sde1 /data/ # 使用xfsrestore从备份中恢复数据到/data目录
cd /data/                  # 切换到/data目录
ls                         # 列出目录内容,确认所有文件已被删除

image.png

4.cpio命令

  • 概述
    • /cpio 命令可以看做是备份或还原命令,因为它可以将数据(文件)备份到 cpio 归档库,也可以利用 cpio 文档库对数据进行恢复。
    • 使用 cpio 命令备份或恢复数据,需注意以下几点:
      • 使用 cpio 备份数据时如果使用的是绝对路径,那么还原数据时会自动恢复到绝对路径下;同理,如果备份数据使用的是相对路径,那么数据会还原到相对路径下。
      • cpio 命令无法自行指定备份(或还原)的文件,需要目标文件(或目录)的完整路径才能成功读取,因此此命令常与 find 命令配合使用。
      • cpio 命令恢复数据时不会自动覆盖同名文件,也不会创建目录(直接解压到当前文件夹)。
  • cpio 命令主要有以下 3 种基本模式:
    • 1)“-o” 模式:指的是 copy-out 模式,就是把数据备份到文件库中,命令格式如下:
cpio -ovcB > [文件|设备]
-o:copy-out模式,备份;
-v:显示备份过程;
-c:使用较新的portable format存储方式;
-B:设定输入/输出块为 5120Bytes,而不是模式的 512Bytes;

find /etc -print | cpio -ocvB > /root/etc.cpio
  • 2)“-i” 模式:指的是 copy-in 模式,就是把数据从文件库中恢复,命令格式如下:
cpio -ivcdu < [文件|设备]
-i:copy-in 模式,还原;
-d:还原时自动新建目录;
-u:自动使用较新的文件覆盖较旧的文件;

cpio -idvcu < /root/etc.cpio
  • 3)“-p” 模式:指的是复制模式,使用 -p 模式可以从某个目录读取所有文件,但并不将其备份到 cpio 库中,而是直接复制为其他文件。
mkdir /root/test
find /boot/ -print | cpio -p /root/test

四、分析日志文件

1.日志的过功能呢

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

2.日志文件的分类

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

3.日志文件

  • 1.日志保存位置
    • 默认位于: /var/log目录下
  • 2.主要日志文件介绍(系统)
存放路径描述
/var/log/messages内核及公共消息日志
/var/log/cron计划任务日志
/var/log/dmesg系统引导日志
/var/log/maillog邮件系统日志
/var/log/lastlog用户登录日志
/var/log/secure安全相关事件日志,如登录尝试等
/var/log/wtmp用户登录记录日志,包括登录尝试和失败记录
/var/log/btmp系统安全日志,记录失败登录尝试等
  • 3.日志大类

    • 系统相关日志
    • 应用程序日志
      • 例如web类应用程序,httpd nginx -> 访问日志和错误日志
    • 业务日志
  • 4.日志级别

    • Linux系统内核日志消息的优先级别(数字等级越小,优先级越高,消息越重要):
优先级数字优先级名称级别描述
0EMERG紧急紧急:会导致主机系统不可用的情况。如系统崩溃
1ALERT警告警告:必须马上采取措施解决的问题。如数据库被破坏
2CRIT严重严重:比较严重的情况。如硬盘错误,可能会阻碍程序的部分功能
3ERR错误错误:运行出现错误。不是非常紧急,尽快修复的
4WARNING提醒提醒:可能影响系统功能,需要提醒用户的重要事件。不是错误,如磁盘用了85%等
5NOTICE注意注意:不会影响正常功能,但是需要注意的事件。无需处理
6INFO信息信息:一般信息。正常的系统信息
7DEBUG调试调试:程序或系统调试信息等。包含详细开发的信息,调试程序时使用
none没有优先级,不记录任何日志消息。
  • 5.用户日志分析

    • /var/log/lastlog:最近的用户的呢牢固事件
    • /var/log/wtm:用户登录、注销及系统开、关机事件
    • /var/run/utmp:当前登录的每个用户的详细信息
    • /var/log/secure:与用户验证相关的安全性事件
  • 分析工具

    • users、who、w、last、lastb
    • last 命令用于查询成功登录到系统的用户记录
    • lastb命令用户查询登录失败的用户记录
  • 6.程序日志分析

    • Web服务
      • acdess_log //记录客户访问事件
      • error_log //记录错误事件
    • 代理服务:/var/log/squid/
      • access.log、cache.log
    • _分析工具 _
    • 文本查看、grep过滤检索、Webmin管理套件中查看
    • awk、sed等文本过滤、格式化编辑工具
    • Webalizer、Awstats等专用日志分析工具
  • _ps _[针对整个架构的日志分析工具:ELK、ELK+zookeeper+kafka、loki等]

  • 7.日志管理策略

    • 及时作好备份和归档
    • 尽量延长日志保存期限
    • 控制日志访问权限
      • 日志中可能会包含各类敏感信息,如账户、口令等
    • 集中管理日志
      • 将服务器的日志文件发到同意的日志文件服务器
      • 便于日志信息的统一收集、整理和分析
      • 杜绝日志信息的意外丢失、恶意篡改或删除

五、补充

  • 1.常用命令分类
类别命令描述备注







CPU
top实时显示系统的整体情况,包括CPU使用情况-
htop (可选)类似于top,但提供了更丰富的信息和一个更友好的界面需要安装
mpstat报告与CPU相关的统计信息-
ps aux 或 ps -ef查看当前所有进程的详细情况-
pgrep通过进程名查找进程ID 需要安装
lsof列出打开文件的所有进程 需要安装
cpuinfo显示CPU信息
uname显示系统信息





内存
free显示物理和交换内存的使用情况-
vmstat报告虚拟内存、进程、CPU活动和IO性能-
sar -r报告内存利用率需要安装sysstat包
cat /proc/meminfo显示详细的内存统计信息-
top实时显示系统进程及资源使用情况,包括内存使用情况








磁盘
df显示文件系统的磁盘空间使用情况-
du报告目录或文件的磁盘使用情况-
iostat显示系统存储设备的输入和输出状态统计-
iotop监视I/O使用情况,类似于top-
fdisk分区表操作-
lsblk列出所有块设备的信息-
swapoff/on管理交换空间-
diskstat显示磁盘统计信息 需要安装需要安装systat包
mdstat显示磁盘阵列状态 需要安装需要安装madam包






网络
ifconfig 或 ip addr show显示网络接口的状态ifconfig适用于较老系统,ip addr show更现代
netstat显示网络连接、路由表、接口统计信息等-
sar -n DEV报告网络接口的统计信息需要安装sysstat包
ping检测主机之间的网络延迟和丢包-
nmapp显示网络配置 需要安装需要按爪给你nmapp包
tcpdump网络包捕获工具 需要安装需要按爪给你tcpdump包



IO
iostat显示系统存储设备的输入和输出状态统计-
vmstat也包含IO统计信息-
iotop监视进程的磁盘IO使用情况-
  • 2.运维
    • 实际实用性角度:活用、实际、真实
    • 云计算-运维角度来说:

0、运维思想 稳定性、健壮性(安全)、解决故障、节省净利润(合理、更合理)
1、CPU基本职能之一:管控资源
2、实际使用,业务/项目/功能类

  • 3.备份

增量备份、差异备份和完全备份是数据备份的常见策略,它们各有特点和适用场景。下面是这三种备份方式的详细解释,并整理成表格进行对比。

备份类型定义备份内容备份速度恢复速度适用场景
完全备份每次备份所有数据,无论数据是否发生变化。全部数据数据安全性和完整性要求高,或者数据量不大时。
差异备份备份自上次完全备份以来所有发生变化的数据。变化的数据较快一般适用于数据量较大,且数据变化频繁的场景。
增量备份备份自上次备份(无论是完全备份还是增量备份)以来发生变化的数据。变化的数据最快最慢适用于数据量非常大,且变化不是特别频繁的场景。

下面是一个简化的表格对比:

特性完全备份差异备份增量备份
备份内容全部数据变化的数据变化的数据
首次备份时间最长较短
备份文件大小最大较大最小
恢复速度最快一般最慢
依赖性无需依赖之前备份需要上一次完全备份需要上一次备份
适用场景数据量小,安全性要求高数据量适中,变化频繁数据量大,变化不频繁

每种备份策略都有其优势和局限性,应根据实际的数据安全需求和资源情况选择合适的备份策略。通常,一个合理的备份策略会结合完全备份、差异备份和增量备份三者。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值