1.inode与block详解
1.inode和block概述
文件数据包括元信息与实际数据
文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节
block(块)
连续的八个扇区组成一个block
是文件存取的最小单位
inode (索引节点)
中文译名为:索引节点 ,也叫i节点
用于存储文件元信息
12345678
lock 的作用:用来存真正的数据内容
每个扇区的大小规定是512B,系统在读取硬盘数据时,并不会一个个扇区去读,而是一次性连续性读取多个扇区,即一次性读取一个快,这种多个扇区组成的块,是文件存取的最小单位,块的大小,最常见的是4kb,即连续8个sector组成一个block
inode 的作用:用来存数据的元信息的,所谓元信息指的就是该数据的一些属性,特性。
那我们的inode可以记录的信息有哪些?
可以是文件权限(rwx)的记录,文件的属主,属组,文件大小,时间戳等,这种存储文件元信息的区域就叫做 inode,中文译名"索引节点”,也叫i节点,因此,一个文件必须占用一个inode,但至少占用一个block
注:inode中并不包括文件名,其实文件名是存放在目录当中的,linux系统中一切皆文件,因此目录也是一种文件即查看目录中的文件,cd转目录后通过ls列目录里可以查看文件名,而我们每个inode都有一个号码,系统用inode号码识别不同的文件,系统内部不使用文件名,而使用inode号码来识别文件。
1234567
2.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号码便于识别的别称
123456789101112131415161718192021
3.inode的号码
用户通过文件名打开文件时,系统内部的过程(重要)
系统找到这个文件名对应的inode号码
通过inode号码,获取inode获取信息
根据inode信息,找到文件数据所在的block,读出数据
查看inode号码的方法
12345
4.inode的大小
inode 也会消耗硬盘空间
每个inode的大小
一般是128字节或256字节
格式化文件系统时确定inode的总数
使用df -i命令可以查看每个硬盘分区的inode总数和已经使用的数量
12345
5.inode 的特殊作用
由于inode号码与文件名分离,导致一些UNIX/LINUX系统具有以下现象
当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件
移动或重命名文件时,只改变文件名,不影响inode号码
打开一个文件后,系统通过inode号码来识别该文件,不再考虑文件名
1234
6.如何删除乱码文件
方法一:
touch a.txt
ls -i a.txt
145326742727878 a.txt
find . -inum 145326742727878 -exec rm -i {} \;
解释:意思就是find找到内容作为后面rm删除对象
方法二:
ls -i at.txt
10663364 at.txt
find . -inum 100663364 | xargs rm -f //xargs这个参数就是强力的意思,如 果前面的输出结果包含空格或制表符也会被强力执行)
1234567891011
2.inode耗尽故障处理
过程:
正常对一块磁盘分区,格式化,挂载(此处是实验所以尽量将分区设置的小一点)
df -i / 挂载点 查看该挂载点的inode点的可用数量
vi 一个shell文件,具体内容如下:
vi kill.sh
#! /bin/bash
i=l
while [ i
let i++
done
然后df -i 查询下inode可用数量还有没有
确认inode数量没有后,再touch一个新文件,看看是什么结果
123456789101112
3.恢复误删除文件
1.编译安装extundelete(6.5上做)
在安装前需要先安装两个依赖包
2.模拟删除并执行恢复操作
案例1:恢复XFS类型的文件
xfsdump 命令格式
xfsdump -f 备份存放位置 要备份的路径或设备文件
xfsdump备份级别 (默认为0)
0 :完全备份
1-9 : 增量备份
xfsdump 常用选项 : -f , -L -M , -s
1234567
选项 | 功能 |
---|---|
-f | 指定备份文件目录 |
-L | 指定标签 session label |
-M | 指定设备标签media label |
-s | 备份单个文件,-s后面不能直接跟路径 |
xfsrestore命令格式
xfsrestore -f 恢复文件的位置 存放恢复后文件的位置
1
模拟删除并执行恢复操作
注: extundelete 工具可以恢复 EXT 类型文件,无法恢复CentOS 7 系统默认采用xfs类别的文件,针对xfs文件系统目前也没有比较成熟的文件恢复工具,所以建议提前做好数据备份,以避免数据丢失xfs 类型的文件可使用xfsdump 与 xfsrestore 工具进行备份恢复,若系统中未安装xfsdump与xfsrestore工具,可以通过yum install -y xfsdump 命令安装。xfsdump 按照inode顺序备份一个xfs文件系统。xfsdump 的备份级别有两种:0 表示完全备份;1-9表示增量备份,xfsdump 的备份级别默认为0 ,xfsdump的命令格式为 : xfsdump -f 备份存放位置
加注
xfsrestore:Restore Status:SUCCESS
【#】ls /data/
passwd test
使用 xfsdump时,需要注意以下的几个限制:
xfsdump 不支持没有挂载的文件系统备份,所以只能备份已经挂载的;
xfsdump 必须使用root的权限才能操作(涉及文件系统的关系);
xfsdump:只能备份XFS文件系统
xfsdump 备份下来的数据(档案或储存媒体)只能让xfsrestore解析;
xfsdump 是透过文件系统的uuid来分辨各个备份档的,因此不能备份两个具有相同
UUID的文件系统
案例2:恢复EXT类型的文件 (用cp)
拷贝的命令:cp /root/RECOVERED_FILES/{a,b,c} /data
备份德明令:extundelete /dev/sdb1 -o /opt/back
编译安装extundelete软件包
安装依赖包
e2fsprogs-libs-1.41.12-18.el6.x86_64.rpm
e2fsprogs-devel-1.41.12-18.el6.x86_64.rpm
配置,编译及安装
extundelete-0.2.4.tar.bz2
模拟删除并执行恢复操作
extundelete 需要额外的去装,而xfsdump默认系统自带
extundelete 恢复时候需要解挂载,而xfsdump需要挂载点在线时使用
xfsdump 使用时必须时root账户才能使用
extundelete 只能恢复文件系统格式是ext格式的文件(必须是centos6)
xfsdump只能恢复文件系统格式的xfs的文件(centos7默认是xfs文件系统格式)
12345
4.分析日志文件
日志的功能
用于记录系统,程序运行中发生的各种事件
通过阅读日志,有助于诊断和解决系统故障
日志保存位置
默认位于:/var/log目录下
12345
主要日志文件介绍
内核及公共消息日志 | /var/log/messages |
---|---|
计划任务日志 | /var/log/cron |
系统引导日志 | /var/log/dmesg |
邮件系统日志 | /var/log/maillog |
用户登录日志 | /var/log/lastlog,/var/log/secure,/var/log/wtmp,/var/run/btmp |
1.日志文件的分类
内核及系统日志
由系统服务rsyslog统一管理进行,日志格式基本相似
日志记录的一般格式:
时间标签,主机名,子系统名,消息字段
用户日志
记录系统用户登录及退出系统的相关信息
2.日志文件分析
日志消息级别
级号 | 消息 | 级别 | 说明 |
---|---|---|---|
0 | EMERG | 紧急 | 会导致主机系统不可用的情况 |
1 | ALERT | 警告 | 必须马上采取措施解决问题 |
2 | CRIT | 严重 | 比较严重的情况 |
3 | ERR | 错误 | 运行出现错误 |
4 | WARNING | 提醒 | 可能会影响系统功能的事件 |
5 | NOTICE | 注意 | 不会影响系统但值得注意 |
6 | INFO | 信息 | 一般信息 |
7 | DEBUG | 调试 | 程序或系统调试信息 |
3.用户日志分析
保存了用户登录,退出系统等相关信息
功能 | 位置 |
---|---|
记录linux内核消息及各种应用程序的公共日志信息 | /var/log/message |
记录crond计划任务产生的事件信息 | /var/log/cron |
记录linux系统在引导过程中的各种事件信息 | /var/log/dmesg |
记录进入或发出系统的电子邮件活动 | /var/log/maillog |
记录每个用户认证相关的安全事件信息 | /var/log/secure |
记录每个用户登录,注销及系统启动和停机事件 | /var/log/wtmp |
记录失败的,错误的登录尝试及验证事件 | /var/log/btmp |
记录每个用户最近登录的事件 | /var/log/lastlog |
分析工具
users, who, w, last, lastab
查询用户登录的历史记录
last 查看成功登录到系统的用户记录
lastb查看登录失败的用户记录
12345
程序日志分析
由相应的应用程序梳理进行管理
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等专用日志分析工具
12345678910
4.日志管理策略
及时做好备份和归档
延长日志保存期限
控制日志访问权限
日志中可能会包含各类敏感信息,如账户,口令等
集中管理日志
将服务器的日志文件发到统一的日志文件服务器
便于日志信息的统一收集,整理和分析
杜绝日志信息的意外丢失,恶意篡改或删除