- inode与block
- 硬链解与软链接
- 恢复误删除的文件
- 分析日志文件
- 总结
1.inode与block
一个文件必须占用一个inode,但至少占用一个block
inode包含文件的元信息:文件的字节数、文件拥有者的user ID、文件的Group ID、文件的读写执行权限、文件的时间戳等(不包含文件名)
用户通过文件名打开文件时,系统内部的过程
- 系统找到这个文件名对应的inode号码
- 通过inode号码,获得inode信息
- 根据inode信息,找到文件数据所在的block,读出数据
一般inode表会占用文件系统磁盘空间1%
一个目录文件的内容就是一个该目录下所有文件目录项的列表
文件储存小节
inode也会消耗硬盘空间,格式化的时候,操作系统自动将硬盘分成俩个区域,一个是数据区,存放文件数据;另一个是inode区,存放inode的大小,每个inode的大小一般是128字节或256字节
使用df -i命令可以查看每个硬盘分区的inode总数和已经使用的数量
inode节点的总数,在格式化时就确定了,一般是每1KB或每2KB就设置一个inode。假设一块1GB的硬盘中,每个inode结点大小为128字节,每1KB就设置一个inode,那么inode table大小就会达到128M,占整块硬盘的12.8%
inode的特殊作用
文件数据呗修改后,会重新生成一个inode号
使用inode号删除文件时需要使用
find ./ -iunm inode号 -exec rm {} \; 或者
find ./ -iunm inode号 -delete
才能删除
2.硬链解与软链接
3.恢复误删除的文件
extundelete 是一个开源的Linux数据恢复工具,支持ext3、ext4文件系统(ext4只能在centos6版本恢复)
使用fdisk创建分区/dev/sdb2,格式化ext3文件系统
fdisk /dev/sdb
mkfs.ext3 /dev/sdb2
mkdir /test01
mount /dev/sdb2 /test01/
安装依赖包
[root@localhost ~]# yum install -y e2fsprogs-devel e2fsprogs-libs gcc gcc-c++ make
编译安装extundelete
将安装包拉入/test01目录或者
Wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
下载
[root@localhost test01]# tar jxvf extundelete-0.2.4.tar.bz2 -C /opt/
##解压到/opt目录下
[root@localhost extundelete-0.2.4]# cd /opt/extundelete-0.2.4/ ###切换到此目录
[root@localhost extundelete-0.2.4]# ./configure ###安装
[root@localhost extundelete-0.2.4]# make
###如果make报错,重新输入yum install -y e2fsprogs-devel e2fsprogs-libs 运行后,再输入make
[root@localhost extundelete-0.2.4]# make install
Making install in src
/usr/bin/install -c extundelete '/usr/local/bin'
###显示此信息已经启动
[root@localhost extundelete-0.2.4]# ln -s /usr/local/bin/extundelete /usr/bin/
###建立软链接
切换回/test01目录
模拟删除并执行恢复操作
[root@localhost extundelete-0.2.4]# cd /test01
[root@localhost test01]# echo a>a
[root@localhost test01]# echo a>b
[root@localhost test01]# echo a>c
[root@localhost test01]# echo a>d
[root@localhost test01]# extundelete /dev/sdb2 --inode 2
###查看文件系统/dev/sdb2下存在哪些文件,i结点时从2开始的。2待变该文件系统最开始的目录
[root@localhost test01]# rm -rf a b
[root@localhost test01]# cd
[root@localhost /]# umount /test01/ ###解挂载
[root@localhost ~]# extundelete /dev/sdb2 --restore-all ###恢复上一步误删除文件
执行后回多出一个目录,文件恢复在 RECOVERED_FILES 目录中
注:extundelete 命令只能恢复上一步误删除的文件
Centos7系统默认采用xfs类型的文件,xfs类型的文件可使用xfsdump与xfsrestore工具进行备份恢复
-f:指定备份文件目录
-L:指定标签session label
-M:指定设备标签medla label......
-s:备份单个文件,后面不能直接跟路径
xfsdump使用限制:
- 只能备份已挂载的文件系统
- 必须使用root权限才能操作
- 只能备份XFS文件系统
- 备份后的数据只能让xfsrestore解析
- 不能备份俩个具有相同uuid的文件系统(可使用blkid命令查看)
使用fdisk创建分区/dev/sdb1,格式化xfs文件系统
fdisk /dev/sdb
mkfs.xfs /dev/sdb1
[root@localhost ~]# mkdir /test02
[root@localhost ~]# mount /dev/sdb1 /test02
[root@localhost ~]# cd /test02
[root@localhost test02]# cp /etc/passwd ./ ###复制到当前目录
[root@localhost test02]# mkdir test
[root@localhost test02]# touch test/a
使用sfsdump命令备份整个分区
[root@localhost test02]# yum install xfsdump -y
###安装xfsdump命令
[root@localhost test02]# xfsdump -f /opt/dump_sdb /dev/sdb1 -L dump_sdb1 -M sdb1
模拟数据丢失并使用sfsrestore 命令恢复文件
[root@localhost test02]# rm -rf ./*
[root@localhost test02]# xfsrestore -f /opt/dump_sdb /test02
###恢复文件
4.分析日志文件
内核及公共消息日志:记录Linux内核消息及各种应用程序的公共日志消息,包括启动,IO错误、网络错误、程序故障等
对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息
计划任务日志:记录crond计划任务产生的事件信息
系统引导日志:记录Linux系统在引导过程中的各种事件信息
邮件系统日志:记录进入或发出系统的电子邮件活动
用户登陆日志:
lastlog:记录每个用户最近的登录事件。二进制格式
secure:记录用户认真相关的安全事件信息
wtmp:记录每个用户登录,注销及系统启动和停机事件。二进制格式
btmp:记录失败的、错误的登陆尝试及验证事件。二进制格式
vim /etc/rsyslog.conf ###查看日志文件的配置文件
公共日志/var/log /messages文件的记录格式
时间标记:消息发出的日期和时间。
主机名:生成消息的计算机的名称
子系统名称:发出消息的应用程序的名称。
消息:消息的具体内容
程序自己维护日志记录,httpd网站服务程序使用两个日志文件:
access_log : #记录客户访问事件
error_iog #记录错误事件。
[root@localhost log]# tail -f secure
###跟踪查看用户登录信息
日志管理
5.总结
block和inode
硬链接与软链接
恢复误删除的文件
Linux主要包含的日志文件
Linux系统的日志消息级别
Linux系统中用户日志的查询命令