一、inode与block
1、inode和block概述
文件数据包括 元信息 与 实际数据
元信息: 文件的属性、文件大小、权限、时间戳
实际数据: 文件的内容
文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节
block(块)
- 连续的八个扇区组成一个block(4K)
- 是文件存取的最小单位
inode(索引节点)
- 中文名“索引节点”,也叫i节点
- 用于存储文件源信息
2、inode的内容
每个inode都有一个号码,操作系统用inode号码识别不同的文件
Linux系统内部不使用文件名,而使用inode号码来识别文件
对于用户,文件名只是inode号码便于识别的别称
2.1 inode包含文件的元信息
- 文件的字节数
- 文件的拥有者的UserID
- 文件的GroupID
- 文件的读、写、执行权限
用 stat 命令可以查看某个文件的inode信息。或者使用 ll -ih 查看大小和inode号
上图stat中硬链接为什么会是1?但是并没有创建硬链接文件。
答:源文件也是代表一个硬链接文件。也是需要指向具体的inode号。
2.2 Linux系统文件三个主要的时间属性
atime (access time) #最后一次访问文件或目录的时间
mtime (modify time) #最后一次修改文件或目录(内容)的时间
ctime (change time) #最后一次改变文件或目录(属性)的时间
查看文件内容,可以看到数据最后一次访问的时间被修改了。
修改文件内容也相当于修改了文件的大小,涉及到了文件的属性,所以也会进行变动。
只修改文件属性,属性时间发生变化
3、 inode的号码
用户通过文件名打开文件时,系统内部的过程
- 1、系统找到这个文件名对应的inode号码
- 2、通过inode号码,获取inode信息
- 3、根据inode信息,找到文件数据所在的block,读出数据
④inode也会消耗硬盘空间,在格式化的时候,操作系统自动将硬盘分成两个区域,一个数据区,存放文件数据,另一个是inode区,存放inode所包含的信息,每个inode的大小,一般是128字节或256字节。
⑤通常情况下不需要关注单个inode的大小,而是重点关注inode总数, inode总数在格式化的时候基于给定了 ,执行 “df -i” 命令可以查看每个硬盘分区对应的inode总数和已经使用的inode数量。
4、indode特殊作用
4.1 inode号与文件名
由于inode号码与文件名分离,导致linux系统具备以下几种特有的现象
- 文件名包含特殊字符,可能无法正常删除,这是直接删除inode,能够起到删除文件的作用
- 移动文件或重命名文件,只是改变文件名,不影响inode号码
- 打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名
- 文件数据被修改保存后,会生成一个新的inode号码
4.2 直接删除inode号码
删除inode节点只能使用fine组合去删除,不能直接使用rm去删除,因为rm是删除以文件名去删除的,就算输入对的一个inode号,rm也会把它们当成一个文件名。
find ./ -inum 52365148 -exec rm -i {} \;
find ./ -inum 52366964 -delete
5、 创建一个文件,提示磁盘满了,然后使用df -hT 命令查看并没有满。这是什么原因?
答:
①有删除的进程占用磁盘空间(僵尸进程)
②inode节点满了。
演示inode节点耗尽的案例
先进行一个分区,将一块磁盘分出100M分给一块区,然后进行格式化,在格式化的时候,inode数量已经定好了,然后进行挂载到一个目录,下面进行查看挂载的磁盘大小和inode数量。
可以看到,容量大小还有92M,可用的inode节点有51197个。
下面再开始在/data目录中进行批量创建文件。达到一个inode节点上限。
然后再进行创建一个文件时,说磁盘没有空间,但是容量在上面看到才用到34%,怎么会没有容量呢。使用df -i 进行查看inode节点时,发现节点已经使用完了,无法再分配新的inode节点。
二、恢复XFS类型的文件
分区时:
fdisk /dev/sdb跟 partprobe /dev/sdb
两者的区别:前者创建2T以下的分区,后者创建2T以上的分区。
1、XFS文件备份-xfsdump
xfsdump命令格式
xfsdump -f 备份存放位置 要备份的路径或设备文件
xfsdump备份级别(默认为0)
-
0:完全备份
-
完全备份的意思将整个需要备份的文件进行备份
-
1-9:增量备份
-
只备份增加的部分(1-9时备份级别)
-
好处:不需要每次都重新备份,消耗的资源小
xfsdump常用选项
-f: 指定备份文件目录
-l:(小写L)增量备份(1、2、3表示次数)
-L: 指定标签session label
-M: 指定设备标签media labe
-s: 备份单个文件,-s后面不能直接跟路径
xfsdump使用限制
1、只能备份已挂载的文件系统
2、必须使用root的权限才能操作
3、只能备份XFS文件系统
4、备份后的数据只能让xfssrestore解析
5、不能备份两个具有相同UUID的文件系统(可用blkid命令查看)
案例:使用xfsdump进行备份一个文件
将一各磁盘进行分区,然后格式化后进行挂载到一个目录下面,在目录下面复制一个新的文件到被挂载的目录下面。
然后进行备份这个设备文件:/dev/sdb1(下面是交互式的,直接按Enter即可)
可在/opt 下面查看到已经备份的文件
2、XFS文件恢复-xfsrestore
xfsrestore -f 恢复文件的位置 存放恢复后文件的位置
使用rm 命令删除/dev/sdb1挂载的目录的文件
使用xfsrestore进行数据恢复
再次进行查看,被删除的数据已被找回
三、日志文件分析
内核及系统日志由系统服务rsyslog统一管理,主要配置文件为:/etc/syslog.conf。配置文件里面定义了什么类型的文件存在什么日志里面。
*.info #表示info等级及以上的所有等级的信息都写到对应的日志文件里。
mail.none #表示某时间的信息不写到日志文件里(这是比如是邮件)
1、日志的功能
①用于 记录 系统、程序运行中发生的各种事件(用来追责)
②通过阅读日志,有助于 诊断 和 解决系统故障
③日志核心功能:用于 数据恢复
2、日志文件的分类
内核及系统日志
- 由系统rsyslog统一进行管理,日志格式基本相似
用户日志
- 记录系统用户登录及退出系统的相关信息
程序日志
- 由各种应用程序独立管理的日志文件,记录格式不统一
3、日志文件的位置介绍
3.1 日志保存位置
默认位于:/var/log 目录下
3.2 主要日志文件功能介绍
内核及公共消息日志:
/var/log/messages
#记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等。
对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息。
计划任务日志:
/var/log/cron
#记录了cron计划任务的时间信息
系统引导日志:
/var/log/demesg
# 记录Linux系统在引导过程中的各种事件信息
邮件系统日志:
/var/log/maillog
#记录进入或发出系统的电子邮件活动。
用户登录日志:
/var/log/lastlog (或直接使用last命令查看登录信息)
#记录用户认证相关的安全事件信息。
/var/log/secure
#记录每个用户最近的登录的安全事件。二进制格式
/var/log/wtmp
#记录每个用户登录、注销及系统启动和停机事件。二进制格式
/var/run/btmp
#记录失败的、错误的登录尝试及验证事件。二进制格式
4、日志消息的级别
数字等级越小,优先级越高、消息越重要。
级号 | 消息 | 级别 | 说明 |
---|---|---|---|
0 | EMERG(emerg) | 紧急 | 会导致主机系统不可用 |
1 | ALERT(alert) | 警告 | 必须马上采取措施解决的问题 |
2 | CRIT(crit) | 严重 | 比较严重的情况 |
3 | ERR(err) | 错误 | 运行出现错误 |
4 | WARNING(warning) | 提醒 | 可能会影响系统功能的事件 |
5 | NOTICE(notice) | 注意 | 不会影响系统但值得注意 |
6 | INFO(info) | 信息 | 一般信息 |
7 | DEBUG(debug) | 调试 | 程序或系统调试信息等 |
5、日志记录的一般格式
6、用户日志分析
保存了用户登录、退出系统等相关信息
- /var/log/lastlog:最近的用户登录时间
- /var/log/wtmp:用户登录、注销及系统开、关机事件
- /var/run/utmp:当前登录的每个用户的详细信息
- /var/log/secure:与用户验证相关的安全性时间
分析工具
-
users:命令只是简单地输出当前登录的用户名称,每个显示的用户名对应一个登录会话,如果一个用户有不止一个登录会话,那他的用户名将显示与其相同的次数
-
who:命令用于报告当前登录到系统中的每个用户的信息。使用该命令,系统管理员可以查看当前系统存在哪些不合法用户,从而对其进行审计和处理,who的默认输出包括用户名、终端类型、登录日期及远程主机
-
w:命令用于显示当前系统中的每个用户及其所运行的进程信息,比users、who输出的内容要丰富一些
-
last:命令用于查看成功登录到系统的用户记录,最近的登录情况将显示在最前面,通过last命令可以掌握linux主机的登录情况,若发现未经授权的用户登录过,则表示当前主机可能已被入侵。
-
lastb:命令用于查询登录失败的用户记录,如登录的用户错误、密码不正确等情况将记录在案。登录失败的情况属于安全事件、表示可能有人在尝试猜解你的密码,除了使用lastb命令查看以外,也可以直接从安全日志文件/var/log/secure中获得相关信息。
7、程序日志分析
由相应的引用程序独立进行管理
-
Web服务:/var/log/httpd
- access.log 、error_log
-
代理服务:/var/log/squid
- access.log 、 cache.log
-
FTP服务:/var/log/xferlog
分析工具
- 文件查看、grep过滤检索、Webmin管理套件中查看
- awk、sed等文本过滤、格式化编辑工具
- Weblizer、Awstats等专用日志分析工具
8、日志管理策略
及时做好备份和归档
延长日志保存期限
控制日志访问权限
- 日志中可能包含各类敏感信息,如账户、口令等
集中管理日志
- 将服务器的日志发到统一的日志文件服务器
- 便于日志信息的统一收集、整理和分析
- 杜绝日志信息的意外丢失、恶意篡改或删除
四、总结
1、block和inode
block存储文件具体数据
inode存储文件属性。inode号在分区的时候就已经创建了一定的个数。inode号也占用磁盘空间,且inode号有一定的数量,如果用完,那么该分区将无法创建新的文件。
2、XFS类型文件
可以使用xfsdump将一个设备块(一块区域)进行备份,可以选择交互和免交互模式,并且在备份的时候可以选择完整备份还是增量备份(-l),然后使用xfsrestore进行备份恢复,恢复一整块分区。
3、日志
日志主要用来记录时间,查看内容进行排错,解决系统故障,或者用来数据恢复。
日志的位置有很多种,包括内核系统、用户、程序日志,他们都统一由系统服务(rsyslog)管理,在配置文件中:/etc/syslog.conf中。
日志存在级别,级别越低,优先级越高、数据越重要。
建新的文件。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/75060.html