目录
- 一、inode和block概述
- block(块)
- inode(索引节点)
- 二、inode内容
- 三、inode的号码
- 3.1、查看inode号码的方法
- 四、inode的大小
- 磁盘分区后的结构
- 访问文件的简单流程
- 五、删除乱码文件
- 六、inode节点耗尽故障处理
- 6.1、模拟inode节点耗尽故障
- 七、恢复误删的文件
- 7.1、xfs 类型文件备份和恢复
- 模拟删除
- xfsdump的常用选项
- xfsrestore 命令格式
- 7.2、ext类型文件恢复
- 使用fdisk创建分区/dev/sdc1,格式化ext3文件系统
- 下载安装包
- 安装依赖包
- 编译安装 extundelete
- 模拟删除
- 恢复文件
- 八、分析日志文件
- 8.1、日志文件的分类
- 1、内核及系统日志:
- 2、计划任务日志
- 3、系统引导日志
- 4、邮件系统日志
- 5、用户登录日志
- 8.2、日志的级别
- 8.3、设备字段解释
- 8.4、用户日志分析
- 8.5、程序日志分析
- 8.6、查询用户登录的历史记录 last,lastb 命令
- 8.7、日志管理策略
一、inode和block概述
文件数据包括元信息与实际数据
文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节
block(块)
·连续的八个扇区组成一个 block(4K)
·是文件存取的最小单位
inode(索引节点)
·中文译名为“索引节点”,也叫 i 节点
·用于存储文件元信息
block 的作用:用来存真正的数据内容
每个扇区的大小规定是512B,系统在读取硬盘数据时,并不会一个个扇区去读,而是一次性连续性读取多个扇区,即一次性读取一个快,这种多个扇区
组成的块,是文件存取的最小单位,块的大小,最常见的是4kb,即连续8个sector组成一个block
inode 的作用:用来存数据的元信息的,所谓元信息指的就是该数据的一些属性,特性。
那我们的inode可以记录的信息有哪些?
可以是文件权限(rwx)的记录,文件的属主,属组,文件大小,时间戳等,这种存储文件元信息的区域就叫做 inode,中文译名"索引节点”,
也叫i节点,因此,一个文件必须占用一个inode,但至少占用一个block
注:inode中并不包括文件名,其实文件名是存放在目录当中的,linux系统中一切皆文件,因此目录也是一种文件即查看目录中的文件,
cd转目录后通过ls列目录里可以查看文件名,而我们每个inode都有一个号码,系统用inode号码识别不同的文件,系统内部不使用文件名,
而使用inode号码来识别文件。
二、inode内容
inode包含文件的元信息
文件的字节数
文件拥有着的USER ID(不包含文件名)
文件的GROUP ID
文件的读,写,执行权限
文件的时间戳
用stat 命令可以查看某个文件的inode信息
示例: stat aa.txt
Linux系统文件的三个主要的时间属性
ctime(change time ) 改变
最后一次改变文件或目录 (属性)的时间
atime (access time)访问
最后一次访问文件或目录的时间
mtime(modify time) 修改
最后一次修改文件或者目录(内容)的时间)
目录文件的结构
目录文件也是一种文件
目录文件的结构
每个inode都有一个号码,操作系统用inode号码来识别不同文件
linux系统内部不使用文件名,而使用inode号码来标识文件
对于用户,文件名只是inode号码便于识别的别称
三、inode的号码
用户通过文件名打开文件时,系统内部的过程(重要)
1、系统找到这个文件名对应的inode号码
2、通过inode号码,获取inode获取信息
3、根据inode信息,找到文件数据所在的block,读出数据
3.1、查看inode号码的方法
ls-i命令: 查看文件名对应的inode号码
ls -i aa.txt
stat命令: 查看文件inode信息中的inode号码
stat aa.txt
四、inode的大小
inode 也会消耗硬盘空间
1、每个inode的大小
2、一般是128字节或256字节
格式化文件系统时确定inode的总数
使用df -i命令可以查看每个硬盘分区的inode总数和已经使用的数量
磁盘分区后的结构
访问文件的简单流程
五、删除乱码文件
由于 inode 号码与文件名分离,导致Linux 系统具备以下几种特有的现象:
1.文件名包含特殊字符,可能无法正常删除。这时直接删除 inode,能够起到删除文件的作用;
2.移动文件或重命名文件,只是改变文件名,不影响 inode 号码;
3.打开一个文件以后,系统就以 inode 号码来识别这个文件,不再考虑文件名。
4.使用 vi 编辑器修改文件数据保存后,会生成一个新的 inode 号码。
方法一:
touch a.txt
ls -i a.txt
67433578 a.txt
find ./ -inum 67433578 -exec rm -i {} \;
解释:意思就是find找到内容作为后面rm删除对象
方法二:
touch aa.txt
ls -i aa.txt
67164213 aa.txt
find ./ -inum 67164213 | xargs rm -f
xargs这个参数就是强力的意思, 如果前面的输出结果包含空格或制表符也会被强力执行)
方法三:
touch aaa.txt
ls -i aaa.txt
67433580 aaa.txt
find ./ -inum 67433580 -delete
六、inode节点耗尽故障处理
过程:
正常对一块磁盘分区,格式化,挂载(此处是实验所以尽量将分区设置的小一点)
使用fdisk创建分区、dev/sdb1 ,分区大小设置为40M即可
fdisk /dev/sdb 创建分区
mkfs.ext4 /dev/sdb1 格式化
mount /dev/sdb1 /mnt 挂载
df -i
6.1、模拟inode节点耗尽故障
cd /mnt
for ((i=1; i<=10240; i++));do touch /mnt/file$i;done
分行显示:
for ((i=1; i<=10240; i++))
do
touch /mnt/file$i
done
写入文件
touch {1..10240}.txt
df -i
df -hT
当inode号占用满后无法继续写入文件
删除文件恢复
七、恢复误删的文件
7.1、xfs 类型文件备份和恢复
·CentOS 7 系统默认采用 xfs类型的文件,xfs 类型的文件可使用 xfsdump 与 xfsrestore 工具进行备份恢复。
·xfsdump 的备份级别有两种:0 表示完全备份;1-9 表示增量备份。
·xfsdump 的备份级别默认为 0。
fdisk /dev/sdb 创建分区
mkfs -t xfs /dev/sdb2 使用xfs格式化
mkdir /data 创建挂载文件
mount /dev/sdb2 /data 挂载文件
模拟删除
cp /etc/passwd /etc/shadow /data
在目录里创建文件
echo a > a
echo b > b
echo c > c
mkdir 123 创建一个目录
cp /etc/yum.repos.d/* 123/ -r
复制一个内容到123目录里,加个r递归复制
使用 rpm -q xfsdump 查看有没有安装xfsdump
没有安装的话,用yum install -y xfsdump
xfsdump -f /opt/dump_sdb2 /dev/sdb2
opt:备份的位置
dump_sdb2:指定名称
dev/sdb2 : 设备名称
设置好后就可以看见在opt目录里有这个dump_sdb2的文件把data目录里的文件删除
cd /opt/ 进入opt目录
xfsrestore -f /opt/dump_sdb2 /data/ 将之前备份的文件,放入data目录里
使用xfsrestore命令后,删除的文件又回来了
xfsdump的常用选项
选项 | 作用 |
---|---|
-f | 指定备份文件目录 |
-L | 指定标签 session label |
-M | 指定设备标签media label |
-s | 备份单个文件,-s后面不能直接跟路径 |
xfsrestore 命令格式
xfsrestore -f 恢复文件的位置 存放恢复后文件的位置
xfsdump使用限制:
1.只能备份已挂载的文件系统
2.必须使用root的权限才能操作
3.只能备份XFS文件系统
4.备份后的数据只能让xfsrestore解析
5.xfsdump是透过文件系统的uuid来分辨各个备份档的,所以不能备份两个具有相同UUID的文件系统(可用 blkid命令查看)
7.2、ext类型文件恢复
·extundelete 是一个开源的 Linux 数据恢复工具,支持 ext3、ext4文件系统。(ext4只能在centos6版本恢复)
使用fdisk创建分区/dev/sdc1,格式化ext3文件系统
fdisk /dev/sdc
mkfs.ext3 /dev/sdc1 格式化分区为ext3
mkdir /data 创建挂载文件
mount /dev/sdc1 /data 挂载
df -hT
下载安装包
tar xf extundelete-0.2.4.tar.bz2 解压
安装依赖包
yum install -y e2fsprogs-devel e2fsprogs-libs
编译安装 extundelete
cd /test
#下载包
wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
#解压包
tar jxvf extundelete-0.2.4.tar.bz2
#编译 安装
cd extundelete-0.2.4/
./configure --prefix=/usr/local/extundelete && make && make install
#优化执行路径(软链接到系统path路径中,以便cmd中直接使用)
ln -s /usr/local/extundelete/bin/* /usr/bin/
模拟删除
cd /test
echo a>a
echo a>b ##创建文件
echo a>c
ls
extundelete /dev/sdc1 --inode 2
#查看文件系统/dev/sdc1下存在哪些文件,i 节点是从 2 开始的,2 代表该文件系统最开始的目录。
rm -rf a b #删除文件
extundelete /dev/sdc1 --inode 2
cd ~ #立刻解挂 避免进一步损失
umount /test
恢复文件
extundelete /dev/sdc1 --restore-all
恢复/dev/sdc1 文件系统下的所有内容
在当前目录下会出现一个RECOVERED_FILES/目录,里面保存了已经恢复的文件
ls RECOVERED_FILES/
八、分析日志文件
日志的功能
用于记录系统,程序运行中发生的各种事件
通过阅读日志,有助于诊断和解决系统故障
日志保存位置
默认位于:/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 |
8.1、日志文件的分类
1、内核及系统日志:
由系统服务rsyslog统一管理进行,日志格式基本相似
日志记录的一般格式:
时间标签,主机名,子系统进程名,进程的消息字段
2、计划任务日志
/var/log/cron:记录crond计划任务产生的事件信息
3、系统引导日志
/var/log/dmesg:记录Linux系统在引导过程中的各种事件信息。
4、邮件系统日志
/var/log/maillog:记录进入或发出系统的电子邮件活动。
5、用户登录日志
/var/log/secure:记录用户认证相关的安全事件信息。
/var/log/lastlog:记录每个用户最近的登录事件。二进制格式
/var/log/wtmp:记录每个用户登录、注销及系统启动和停机事件。二进制格式
/var/run/btmp:记录失败的、错误的登录尝试及验证事件。二进制格式
8.2、日志的级别
Linux系统内核日志消息的优先级别(数字等级越小,优先级越高,消息越重要):
级号 | 消息 | 级别 | 说明 |
---|---|---|---|
0 | EMERG | 紧急 | 会导致主机系统不可用的情况,如系统崩溃 |
1 | ALERT | 警告 | 必须马上采取措施解决问题,如数据库被破坏 |
2 | CRIT | 严重 | 比较严重的情况。如硬盘错误,可能会阻碍程序的部分功能 |
3 | ERR | 错误 | 运行出现错误。不是非常紧急,尽快修复的 |
4 | WARNING | 提醒 | 可能影响系统功能,需要提醒用户的重要事件。不是错误,如磁盘用了85%等 |
5 | NOTICE | 注意 | 不会影响系统但值得注意 |
6 | INFO | 信息 | 一般信息,正常的系统信息 |
7 | DEBUG | 调试 | 程序或系统调试信息等。包含详细开发的信息,调试程序时使用 |
8.3、设备字段解释
选项 | 作用 |
---|---|
auth | 用户认证时产生的日志 |
authpriv | ssh、ftp等登录信息的验证信息 |
daemon | 一些守护进程产生的日志 |
ftp | FTP产生的日志 |
lpr | 打印相关活动 |
mark | rsyslog服务内部的信息,时间标识 |
news | 网络新闻传输协议(nntp)产生的消息。 |
syslog | 系统日志 |
uucp | Unix-to-Unix Copy 两个unix之间的相关通信 |
console | 针对系统控制台的消息。 |
cron | 系统执行定时任务产生的日志。 |
kern | 系统内核日志 |
local0~local7 | 自定义程序使用 |
邮件日志 | |
user | 用户进程 |
8.4、用户日志分析
分析工具
users, who, w, last, lastab
8.5、程序日志分析
由相应的应用程序梳理进行管理
web服务:/var/log/httpd/
access_log 记录客户访问事件
error_log 记录错误事件
代理服务:/var/log/squid/
access.log, cache.log,
FTP服务 : /var/log/xferlog
分析工具
文本查看,grep过滤检索,webmin管理套件中查看
awk,sed等文本过滤,格式化编辑工具
Webalizer, Awststs等专用日志分析工具
8.6、查询用户登录的历史记录 last,lastb 命令
查询用户登录的历史记录
last 查看成功登录到系统的用户记录
lastb查看登录失败的用户记录
8.7、日志管理策略
及时做好备份和归档
延长日志保存期限
控制日志访问权限
日志中可能会包含各类敏感信息,如账户,口令等
集中管理日志
将服务器的日志文件发到统一的日志文件服务器
便于日志信息的统一收集,整理和分析
杜绝日志信息的意外丢失,恶意篡改或删除