一、inode 与block
1. inode 与block详解
在文件存储硬盘上,硬盘的最小存储单位叫做"扇区",每个为512字节。 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块" ( block )。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小 ,最常见的是4KB ,即连续八个扇区组成一个块
block(块)
连续的八个扇区组成一个block 是文件存取的最小单位
inode (索引节点)
文件数据存储在"块"中,那么还必须找到一个地方存储文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种存储文件元信息的区域就叫inode(索引节点),也叫i节点。 文件数据存储在block块中,文件属性存储在inode
中文译名为:索引节点 ,也叫i节点 用于存储文件元信息
每一个inode大小一般是128字节或256字节
2.inode 作用
1.文件名包含特殊字符,可能无法正常删除。这时直接删除inode,能够起到删除文件的作用;
2.移动文件或重命名文件,只是改变文件名,不影响inode 号码;
3.打开一个文件以后,系统就以inode 号码来识别这个文件,不再考虑文件名。
4.文件数据被修改保存后,会生成一个新的inode 号码。
直接查看、修改文件内容或者改变文件名都不会影响 inode号,使用 vi 编辑器修改文件保存退出后会影响 inode号
针对无法正常删除文件名含有特殊符号的文件时,可根据 inode号 来删除文件
二、恢复误删除的文件 ext3
extundelete 是一个开源的Linux 数据恢复工具,支持ext3、 ext4文件系统。 ( ext4只能在centos6版本恢复)
首先创建sdb1 ,格式化为ext3 类型:
进行挂载:
安装依赖包:
编译安装extundelete:
在opt下找到extundelete:
生成几个文件:
extundelete /dev/sdc1 --inode 2 #查看文件系统/dev/sdc1下存在哪些文件:
删除pkm.txt , jqg.txt 文件
extundelete /dev/sdc1 --inode 2 查询这两个文件状态以删除
将挂载解除:
extundelete /dev/sdc1 --restore-all #恢复/dev/sdc1 文件系统下的所有内容:
在当前目录下会出现一个RECOVERED_FILES/目录,里面保存了已经恢复的文件:
三、 恢复误删除的文件 xfs
xfs类型文件备份和恢复
CentOs 7系统默认采用xfs类型的文件,xfs类型的文件可使用xfsdump 与xfsrestore 工具进行备份恢复
xfsdump命令常用的选项:
-f: 指定备份文件目录
-L: 指定标签session label
-M: 指定设备标签media labe........ 。
-s:备份单个文件,-s后面不能直接跟路径
xfsdump使用限制:
1.只能备份已挂载的文件系统
2.必须使用root的权限才能操作
3.只能备份XFS文件系统
4.备份后的数据只能让xfsrestore解析
5.不能备份两个具有相同UUID的文件系统(可用blkid命令查看)
首先建立sdb2 ,建立xfs格式的文件系统:
进行挂载:
检查xfsdump是否安装,若没有可yum安装:
在mnt下创建文件:
xfsdump -f /opt/dump_sdb /dev/sdb2 -L dump_sdb -M sdb2 #备份sdb2文件到/opt/dump_sdb下
将mnt下的文件删除:
使用xfsrestore -f /opt/dump_sdb /opt/mnt 将备份的数据恢复到mnt下:
查看mnt下,删除文件已恢复:
四、 Linux 系统日志文件
1. 日志的功能
用于记录系统、程序运行中发生的各种事件
通过阅读日志,有助于诊断和解决系统故障
2. 日志文件的分类
内核及系统日志
由系统服务rsyslog统一进行管理,日志格式基本相似
用户日志
记录系统用户登录及退出系统的相关信息
程序日志
由各种应用程序独立管理的日志文件,记录格式不统一
3. 常见的一些日志文件及位置
内核及公共消息日志:
/var/log/messages: 记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等
对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息
计划任务日志:
/var/1og/cron: 记录crond计划任务产生的事件信息
系统引导日志:
/var/log/dmesg: 记录Linux系统在引导过程中的各种事件信息
邮件系统日志:
/var/log/maillog: 记录进入或发出系统的电子邮件活动
用户登录日志:
/var/log/secure: 记录用户认证相关的安全事件信息
/var/log/lastlog: 记录每个用户最近的登录事件。二进制格式
/var/1og/wtmp: 记录每个用户登录、注销及系统启动和停机事件。二进制格式
/var/run/btmp: 记录失败的、错误的登录尝试及验证事件。二进制格式
vim /etc/rsyslog.conf #查看rsyslog.conf 配置文件
4. 系统内核日志消息的优先级别
Linux系统内核日志消息的优先级别(数字等级越小,优先级越高,消息越重要) :
5. 公共日志/var/log/messages文件的记录格式
时间标签:消息发出的日期和时间。
主机名:生成消息的计算机的名称。
子系统名称:发出消息的应用程序的名称。
消息:消息的具体内容
6.用户日志分析
分析工具:users , w , who , last , lastb
**users:**命令只是简单地输出当前登录的用户名称,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示与其相同的次数
who: 命令用于报告当前登录到系统中的每个用户的信息。使用该命令,系统管理员可以查看当前系统存在哪些不合法用户,从而对其进行审计和处理。who 的默认输出包括用户名、终端类型、登录日期及远程主机
**w:**命令用于显示当前系统中的每个用户及其所运行的进程信息,比 users、who 命令的输出内容要丰富一些
**last:**命令用于查询成功登录到系统的用户记录,最近的登录情况将显示在最前面。通过last 命令可以及时掌握 Linux 主机的登录情况,若发现未经授权的用户登录过,则表示当前主机可能已被入侵
**lastb:**命令用于查询登录失败的用户记录,如登录的用户名错误、密码不正确等情况都将记录在案。登录失败的情况属于安全事件,因为这表示可能有人在尝试猜解你的密码。除了使用 lastb 命令查看以外,也可以直接从安全日志文件/var/log/secure 中获得相关信息
我们在192.168.192.20主机上可以查看到有登录失败的信息:
五、 日志文件管理
1. journalctl 工具
journalctl工具是CentOS-7才有的工具
Systemd 统一管理所有 Unit 的启动日志。带来的好处就是 ,可以只用journalctl一个命令,查看所有日志(内核日志和 应用日志)
journalctl -b #查看本次启动的日志
journalctl -k #查看内核日志
journalctl -e #从结尾开始看
journalctl -x: #提供问题相关的网址
journalctl -u·httpd #指定某个服务报错
journalctl -p #日志级别查看
journalctl -xe #经常用来查看最近报错的日志
在httpd服务文件内写错:
此时启动httpd服务时报错:
我们可以使用journalctl -xe 命令查看报错:
2. rsyslog服务
rsyslog是CentOS 6以后的系统使用的日志系统,rsyslog是用来管理、记录日志的程序
首先查看服务是否开启:
mail.* 代表比*等级高的都记录,*代表任何,也就是说任何日志都记录
.none 代表不记录日志
日志存放位置为*:所有日志高于疼痛这个等级就会对所有在线用户广播
.=代表只记录=后面级别的日志
.!代表除了!后面级别的日志不记录其他的都记录
存放路径之前有"-"代表先放入缓存足够大之后再存放在路径
我们可进入/etc/rsyslog.conf 自定义日志:
重启 rsyslog.service 服务:
在/var/log 下可查看到存在info.conf 文件: