携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第5天,点击查看活动详情
linux文件系统
文件是存储在硬盘上的,硬盘最小存储单位是扇区,每个扇区存储512字节,一“块”有八个扇区,一个块是4K大小,是文件存取的最小单位 系统读取硬盘是通过块读取的
文件数据包括实时数据与元信息(除了文件名以外所有文件属性)
一个文件必须占用一个inode,并且至少占用一个block
inode和文件名都存在目录文件中
元信息储存在inode
实际数据储存在块中
Linux系统文件三个主要的时间属性
- ctime(change time)##最后一次改变文件或目录(属性)的时间
- atime(access time) ##最后一次访问文件或目录的时间
- mtime(modify time)##最后一次修改文件或目录(内容)的时间
- 改变文件内容,文件大小也会跟随改变
- 用vi编辑器和touch修改文件,ctime也会改变,用echo就不会改变
如何查看inode号字节
ls -l
stat 文件名
访问文件的过程
访问文件的过程
- 用户访问文件,系统根据文件名寻找inode号
- 根据inode号寻找inode信息
- 根据inode信息判断用户是否具有访问文件的权限
- 如果有访问权限指向对应的数据块
- 如果摸鱼权限不够就拒绝访问
inode详细介绍
inode也会消耗磁盘空间,所以格式化的时候,操作系统自动将磁盘分成两个区域,一个是数据区,存放文件数据,一个是inode区,存放inode所包含的信息,每个inode大小,一般是125字节或者256字节
通常情况下不需要关注当个inode的大小,而是需要重点关注inode总数,inode总数在格式化的时候就已经给定了,执行“df -i”命令即可查看每个硬盘分区对应的inode总数和已经使用的inode总数
每个文件系统(分区)中的inode数量是有限的,可以通过df i查看
由于inode号码与文件名分离,导致Linux系统具备以下几种特有的现象
- 文件名包含特殊字符,可能无法正常删除,这时候删除inode,能起到删除文件作用
- 移动文件或重命名文件,只是改变文件名,不影响inode号
- 打开一个文件以后,系统就以inode号来识别这个文件,不再考虑文件名
- 使用vi编辑器修改文件数据保存后,会生成一个新的inode号,但是用echo不会
模拟inode节点耗尽故障处理
创建文件占满inode号
删除带特殊符号的文件
- find ./ -inum [inode号] -exec rm -f {} ;
- find ./ -inum [inode号] | xargs rm -f
- find ./ -inum [inode号] delete
链接文件
- 为文件或目录建立链接文件
- 链接文件类型
恢复ext类型的文件
编译安装extundelete软件包
-
安装依赖包
-
e2fsprogs-libs-1.41.12-18.el6.x86_64.rpm
-
e2fsprogs-devel-1.14.12-18.el6.x86_64.rpm
-
-
配置,编译及安装
- extundelete-0.24.tar.bz2
模拟删除并执行恢复操作
挂载
xfsdump使用限制
- 只能备份已经挂载的文件系统
- 必须使用root的权限才能操作
- 只能备份XFS文件系统
- 备份后的数据只能让xfsrestore解析
- 不能备份两个具有相同的UUID的文件系统
xfsdump 类型文件备份和恢复
CentOS 7 系统默认采用xfs类型的文件,xfs类型的文件可使用xfsdump 与 xfsrestore 工具进行备份恢复。
xfsdump的备份级别有两种:0表示完全备份。 1-9表示增量备份。 xfsdump的备份级别默认为0
xfsdump 的命令格式
xfsdump -f 备份存放位置 要备份的路径或者设备文件
xfsdump 命令常用的选项:
-f:指定备份文件目录
-L:指定标签 session label
-M 指定标签 xfsdump备份实验
删除data下所有东西
数据恢复了
日志
-
日志的功能
- 用于记录系统,程序运行中发生的各种事件
- 通过阅读日志,有助于诊断和解决系统故障
-
日志文件的分类
-
内核及系统日志
- 由系统服务rsylog统一管理,日志格式基本相似
- 主配置文件/etc/rsyslog.conf
-
用户日志
- 记录系统用户登录以及退出系统的相关信息
-
程序日志
- 由各种应用程序独立管理的日志文件,记录格式不统一
-
日志保存位置
默认位于/var/log目录下
主要日志介绍
- /var/log/messages ###内核及公共消息日志
- /var/log/cron ###计划任务日志
- /var/log/maillog ### 邮件系统日志
- /var/log/secure ### 记录用户认证相关的安全事件信息(用户登录日志)
- /var/log/lastlog ### 记录每个用户最近的登录时间(以二进制形式)
- /var/log/wtmp ###记录每个用户的登录时间和登录次数
- /var/log/btmp ###记录失败的,错误的登录尝试及实验事件。二进制格式
日志保存位置
- 默认位置:/var/log目录下
内核和系统日志由系统服务rsyslog统一管理
- 软件包:rsyslog-7.4.7-16.e17.x86_64
- 主要程序:/sbin/rsyslogd
- 配置文件:/etc/rsyslog.conf
查看rsyslog.conf配置文件,规则配置格式:【设备.级别 动作】 vim /etc/rsysloh.conf
设备字段说明
| auth | 用户认证时产生的日志 |
|---|---|
| authpriv | Ssh,ftp等登录信息的验证信息 |
| daemon | 一些守护进程产生的日志 |
| ftp | FTP产生的日志 |
| lpr | 打印相关的活动 |
| Mark | Rsyslog服务内部的信息,时间标识 |
| News | 网络新闻传输协议(nntp)产生的消息 |
| syslog | 系统日志 |
| uucp | Unix-to-Unix Copy 两个unix之间的相关通信 |
| console | 针对系统控制台的消息 |
| cron | 系统执行定时任务产生的日志 |
| kern | 系统内核日志 |
| Local0~local7 | 自定义程序使用 |
| 邮件日志 | |
| user | 用户进程 |
Linux系统内核日志消息的优先级别(数字等级越小,优先级越高,消息越重要):
| 0 | EMERG(紧急):会导致主机系统不可用的情况,如系统崩溃 |
|---|---|
| 1 | ALERT(警告):必须马上采取措施解决的问题。如系统崩溃 |
| 2 | CRIT(严重):比较严重的情况。如硬盘错误,可能会阻碍程序的部分功能 |
| 3 | ERR(错误):运行出错误。不是非常紧急,尽快修复的 |
| 4 | WARNING(提醒):可能影响系统功能,需要提醒用户的重要事件。不是错误,如硬盘用了80% |
| 5 | NOTICE(注意):不好影响正常功能,但是需要注意的事件。无需处理 |
| 6 | INFO(信息):一般信息。正常的系统信息 |
| 7 | DEBUG(调试):程序或系统调试信息等。包含详细开发的信息,调试程序时实验 |
| none:没有优先级不记录任何日志信息 |
例子
用户日志分析
- 保存了用户登录,退出系统等相关信息
- /var/log/lastlog:最近的用户登录事件
- /var/log/wtmp:用户登录,注销及系统的详细信息
- /var/run/utmp:当前登录的每个用户的详细信息
- /var/log/secure:与用户验证相关的安全性事件
- 分析工具
- users,who,w,last,lastb
- last命令用于查询成功登录到系统的用户记录
- lastb命令用于查询登录失败的用户记录
ssh:连接到远程主机
日志管理策略
- 及时做好备份核归档 rsyslog shell/python脚本 ELK
- 延长日志保存期限
- 控制日志访问权限
- 日志中可能会包含各类敏感信息,如账户,口令等
- 集中管理日志
- 将服务器的日志文件发到统一的日志文件服务器
- 便于日志信息的统一收集,整理核分析
- 杜绝日志信息的以外丢失,恶意篡改或删除
总结
- block与inode
- 硬链接与软链接
- 恢复误删除文件
- Linux主要包含的日志文件
- linux系统的日志消息级别
- linux系统中用户日志的查询命令
- who , w , users, last, lsatb