本章目录
1. inode 与 block
1.1 inode 和 block 概述
1.2 inode 的内容
1.3 inode 的大小
1.4 inode 的特殊作用
2. 硬链接与软链接
2.1 链接文件分类
2.2 硬链接与软链接的命令行格式
3.恢复误删除的文件
3.1 EXT 类型文件恢复
3.2 xfs 类型文件备份和恢复
4. 分析日志文件
4.1 日志的功能
4.2 日志文件的分类
4.3 日志保存位置
4.4 内核及系统日志
4.5 用户日志分析
4.6 程序日志分析
4.7 日志管理策略
1. inode 与 block
1.1 inode 和 block 概述
- 文件数据包括元信息与实际信息;
- 文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储 512 字节。
- 一个文件必须占用一个 inode , 并且至少占用一个 block
(1) block:(块)的概念:
- 连续的八个扇区组成一个block(4k);
- 是文件存取的最小单位;
- 操作系统读取硬盘的时候,是一次性连续读取多个扇区,即一个块一个块的读取
(2)inode:(索引节点)的概念:
- 存储文件元信息( 比如文件的创建者、创建日期、文件大小、文件权限等)的区域就叫做 inode ;
- 中文译名为“索引节点”,也叫 i 节点;
- 用于存储文件元信息
- inode 不包含文件名。文件名是存放在目录当中的
- inode包含文件的元信息:
- 文件的字节数
- 文件拥有者的User ID
- 文件的Group ID
- 文件的读、写、执行权限
- 文件的时间戳等
- 目录也是一种文件
- 每个 inode 都有一个号码,操作系统用 inode 号码来识别不同的文件
- linux 系统内部不适用文件名,而使用 inode 号码来识别文件
- 对于用户,文件名只是 inode 号码便于识别的别称
- inode也会消耗硬盘空间,所以格式化的时候,操作系统自动将硬盘分成两个区域。
- 一个是数据区,存放文件数据;另一个是inode区,存放inode所包含的信息。
- 每个inode的大小,一般是128字节或256字节。
- 通常情况下不需要关注单个inode的大小,而是需要重点关注inode总数。
- inode的总数在格式化时就给定了,执行"df -i"命令即可查看每个硬盘分区对应的的inode总数和已经使用的inode数量。
由于inode号码与文件名分离,导致Linux系统具备以下几种特有的现象:
- 文件名包含特殊字符,可能无法正常删除。这时直接删除inode,能够起到删除文件的作用;
- 移动文件或重命名文件,只是改变文件名,不影响inode号码。
- 打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名。
- vim 修改文件数据被修改保存后,会生成一个新的 inode 号码。
- 重定向方式修改文件数据,不会改变 inode 号
软链接 | 硬链接 | |
删除原始文件后 | 失效 | 仍旧可用 |
使用范围 | 适用于文件或目录 | 只可用于文件 |
保存位置 | 与原始文件可以位于不同的文件系统中 | 必须与原始文件在同一个文件系统(如一个 linux 分区)内 |
(1)硬链接的命令行格式:
- ln 源文件 目标位置
(2)软链接的命令行格式:
- ln [-s] 源文件或目录... 链接文件或目标位置
extundelete是一个开源的Linux数据恢复工具,支持ext3、ext4文件系统。 (ext4只能在centos6版本恢复)
(1)编译安装extundelete软件包
- 安装依赖包:
- e2fsprogs-libs-1. 41.12-18.el6.x86_ 64.rpm
- e2fsprogs-devel-1 .41.12-18.el6.x86_ _64.rpm
(2)配置、编译及安装:
- extundelete-0.2.4.tar.bz2
1 使用fdisk创建分区/dev/sdc1,格式化ext3文件系统 2 fdisk /dev/sdb 3 partprobe /dev/sdb 4 mkfs.ext3 /dev/ sdb1 5 mkdir /data 6 mount /dev/sdb1 /data 7 df -hT 8 9 #安装依赖包 10 yum -y install e2fsprogs-devel e2 fsprogs-libs 11 12 #编译安装extundelete 13 cd /opt 14 wget http: //nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2 15 16 tar jxvf extundelete-0.2.4.tar.bz2 17 cd extundelete-0.2.4/ 18 ./configure --prefix=/usr/ local/jz/ && make && make install 19 20 ln -s /usr/ local/jz/bin/* /usr/bin/
(3)模拟删除并执行恢复操作
1 cd /data 2 echo 111 > 123.txt 3 echo 222 > 234.txt 4 echo 333 > 456.txt 5 ls 6 extundelete /dev/sdb1 --inode 2 7 #查看文件系统/dev/sdc1下存在哪些文件,i节点是从2开始的,2代表该文件系统最开始的目录 8 9 rm-rf 123.txt 234.txt 456.txt 10 extundelete /dev/sdd1 -- inode 2 11 cd ~ 12 umount /data/ 13 extundelete /dev/sdb1 --restore-all 14 #恢复/dev/sdc1文件系统下的所有内容 15 16 #在当前目录下会出现一-个RECOVERED_ FILES/目录,里面保存了已经恢复的文件 17 ls RECOVERED_FILES
- 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使用限制:
只能备份已挂载的文件系统
必须使用root的权限才能操作
只能备份XFS文件系统
备份后的数据只能让xfsrestore解析
不能备份两个具有相同UUID的文件系统(可用blkid命令查看)
- 操作步骤命令:
1 #使用fdisk创建分区/dev/sdb1,格式化xfs文件系统 2 fdisk /dev/ sdb 3 partprobe /dev/ sdb 4 mkfs.xfs [-f] /dev/ sdb1 5 mkdir /data 6 mount /dev/ sdb1 /data/ 7 cd /data 8 cp /etc/passwd ./ 9 mkdir test 10 touch test/a 11 12 #使用xfsdump 命令备份整个分区 13 rpm -qa| grep xfsdump 14 yum install -y xfsdump 15 xfsdump -f /opt/dump_sdb1 /dev/sdb1 [-L dump sdb1 -M sdb1 ] 16 17 #模拟数据丢失并使用 x fsrestore 命令恢复文件 18 cd /data/ 19 rm -rf ./* 20 ls 21 22 xfsrestore -f /opt/dump_ sdb1 /data/
- 用于记录系统、程序运行中发生的各种事件
- 通过阅读日志,有助于诊断和解决系统故障
(1)内核及系统日志
- 由系统服务rsyslog统一进行管理 ,日志格式基本相似
- 主配置文件/etc/rsyslog.conf
(2)用户日志
- 记录系统用户登录及退出系统的相关信息
(3)程序日志
- 由各种应用程序独立管理的日志文件,记录格式不统一(由开发人员定义)
- 默认位于: /var/log 目录下
(1)由系统服务 rsyslog 统一管理
- 软件包:rsyslog-7.4.7-16.el7.x86_64
- 主要程序:/sbin/rsyslogd
- 配置文件:/etc/rsyslog.conf
(2)日志消息的级别
级别 | 消息 | 级别 | 具体描述 |
0 | EMERG | 紧急 | 会导致主机系统不可用的情况 |
1 | ALERT | 警告 | 必须马上采取措施解决的问题 |
2 | CRIT | 严重 | 比较严重的情况 |
3 | ERR | 错误 | 运行出现错误 |
4 | WARNING | 提醒 | 可能影响系统功能,需要提醒用户的重要事件 |
5 | NOTICE | 注意 | 不会影响正常功能,但是需要注意的事件 |
6 | INFO | 信息 | 一般信息 |
7 | DEBUG | 调试 | 程序或系统调试信息等 |
(1)保存了用户登录、退出系统等相关信息:
- /var/log/lastlog:最近的用户登录事件
- /var/log/wtmp:用户登录、注销及系统开、关机事件
- /var/run/utmp:当前登录的每个用户的详细信息
- /var/log/secure:与用户验证相关的安全性事件
(2)分析工具:
- users、who、w、last、lastb
- last 命令用于查询成功登录到系统的用户记录
- lastb 命令用于查询登录失败的用户记录
(1)Web服务:/var/log/httpd/
- access_log ——记录客户访问事件
- error_log ——记录错误事件
(2)代理服务:/var/log/squid/
- access.log、cache.log
(3)分析工具
- 文本查看、grep过来检索、Webmin管理套件中查看
- awk、sed等文本过滤、格式化编辑工具
- Webalizer、Awstats等专用日志分析工具
(1)及时做好备份和归档
(2)延长日志保存期限
(3)控制日志访问权限
- 日志中可能会包含各类敏感信息,如账户和口令等
(4)集中管理日志
- 将服务器的日志文件发到统一的日志文件服务器
- 便于日志信息的统一收集、 整理和分析
- 杜绝日志信息的意外丢失、恶意篡改或删除
-