1、inode
每个文件的属性信息,比如:文件的大小,时间,类型,权限等,称为文件的元数据(meta data 元信息 )
元数据是存放在inode(index node)表中。inode 表中有很多条记录组成,第一条记录对应的存放了一个文件的元数据信息。
ls -i [文件名] 或 stat [文件名]
查看文件详细信息
最近访问 | atime | 最后一次查看文件 |
最近更改 | mtime | 最近更改文件内容的时间 |
最近改动 | ctime | 最近更改文件元信息的时间 |
每一个inode表记录对应的保存了以下信息:
-
inode number 节点号
-
文件类型
-
权限
-
UID
-
GID
-
链接数(指向这个文件名路径名称个数)
-
该文件的大小和不同的时间戳
-
指向磁盘上文件的数据块指针
-
有关文件的其他数据
1.1、文件
文件是存储在硬盘上的,硬盘的最小存储单位叫做“扇区”(sector),每个扇区存储512字节。连续八个扇区为一块(block)。操作系统读取时,是一块一块读的,也就是一次读4k
一个文件必须占用一个inode,并且至少占用一个block ,inode不包含文件名。文件名是存放在目录文件夹当中的。Linux 系统中一切皆文件,因此目录也是一种文件。每个inode都有一个号码,操作系统用inode号码来识别不同的文件。Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称,文件名和inode号码是一一对应关系,每个inode号码对应一个或多个文件名
在同一设备中inode号不能相同,不同设备inode号可以相同
物理分区inode号范围是固定的,当inode号分配完了即使硬盘还有空间也无法继续创建文件
lvm分区无限inode
1.2、目录
目录是个特殊文件,目录文件的内容保存了此目录中文件的列表及inode number对应关系
文件引用一个是 inode号
是通过文件名来引用一个文件
一个目录是目录下的文件名和文件inode号之间的映射
1.3、系统是怎么通过inode找到文件
linux 通过文件夹中会有一张 文件名和inode一一对应关系的表 (名字) 去找inode号 inode指向对应的实际数据
1.用户访问文件时 先去查找 自己 文件夹中的目录项
2.文件名和inode之间对应的关系
3.通过 inode号利用指针 去指向 实际数据
直接指针:直接指向的block块存储的是文件的数据(指向数据)
间接指针:指向的block块继续当作指针块使用(指向指针)
1.4、使用命令后,inode号的变化
1.4.1、cp 命令
-
分配一个空闲的inode号,在inode表中生成新条目
-
在目录中创建一个目录项,将名称与inode编号关联
-
拷贝数据生成新的文件
1.4.2、rm 命令
-
硬链接数递减,从而释放的inode号可以被重用
-
把数据块放在空闲列表中
-
删除目录项
-
数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖
1.4.3、mv和inode
-
如果mv命令的目标和源在同一设备
-
不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动
-
删除旧的目录对应关系新建目录对应关系
1.4.4、寻找空文件(清理容量)
find ./ -empty 寻找空文件
2、硬链接和软连接
硬连接:同一个文件取不同的名或者叫多个名字,不支持文件夹,创建一个连接数加一,多路径访问。他们最终都指向硬盘上同一个文件
软连接:类似于windows里快捷方式,软连接,符号连接
ln [选项] 文件名 创建硬链接
选项 -s 创建软连接
3、分析日志文件
什么是日志文件
他就是记录你的操作、系统的事件。在日常工作中可以通过阅读日志,去解决报错
日志文件里面分为三种:
1.内核及系统日志:由rsyslog统一进行管理,日志格式基本相似
2.用户日志:记录用户登录及退出系统的相关信息
3.程序日志:由各种应用程序独立管理的日志文件,记录格式的不统一
默认位于/var/log目录下
主要日志文件 | 日志保存位置 |
内核及公共消息日志 | /var/log/messages |
计划任务 | /var/log/cron |
系统引导日志 | /var/log/dmesg |
邮件系统日志 | /var/log/maillog |
用户登录日志:/var/log/lastlog、/var/log/wtmp、/var/log/btmp、/var/log/secure
3.1、rsyslog系统日志服务
rsyslog是CentOS 6以后版本的系统管理服务:它提供了高性能,出色的安全性和模块化设计。尽管rsyslog最初是常规的syslogd,但发展成为一种瑞士军刀式的记录工具,能够接受来自各种来源的输入,并将其转换,然后输出到不同的目的地。
当应用有限的处理时,RSYSLOG每秒可以将超过一百万的消息传递到本地目的地。即使在远程的目的地和更精细的处理中,性能通常也被认为是惊人的”。
rsyslog的特征:多线程,支撑多协议,支撑多数据库,有强大的过滤器,自定义输出格式,适用于企业级
/etc/rsyslog.conf 配置文件格式:由三部分组成
-
MODULES:相关模块配置
-
GLOBAL DIRECTIVES:全局配置
-
RULES:日志记录相关的规则配置
3.2、自定义日志位置
- 大的程序有自己的日志文件,而小的没有,他们共用一个日志,将所有日志信息全放进去。
- 可以用rsyslog命令自定义日志文件的位置,也就是一个程序单独一个位置放日志
这里拿ssh做模拟
vim /etc/ssh/sshd_config 进入ssh配置文件
将32行 复制并备份
行首加 # 表注释
修改成下图
vim /etc/rsyslog.conf
在76行添加自己的文件位置
local6.* /var/log/ssh.log
输入 systemctl restart rsyslog.service sshd
重启服务