inode概述
什么是inode
文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。 这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"
inode和block的区别
inode 号是用于标识和管理文件的唯一索引节点的标识符,inode表包含文件的元数据。
block 块是文件系统中用于存储文件实际数据的最小单位,由文件系统进行分配和管理,并通过 inode 号中的指针关联到对应的文件。
什么是inode号
每个inode都有一个号码,文件名和inode号码是一一对应关系,操作系统用inode号码来识别不同的文件。
同一设备下文件inode号不可以相同
不同设备下文件inode号可以相同
什么是inode表
每个文件的属性信息,比如:文件的大小,时间,类型,权限等,称为文件的元数据 (meta data 元信息 )
元数据是存放在inode(index node)表中。inode 表中有很多条记录组成,第一条记录对应的存放了一个文件的元数据信息。
inode表内容
没个inode表记录对应的保存了以下信息:
- inode number 节点号
- 文件类型
- 权限
- UID
- GID
- 链接数(指向这个文件名路径名称个数)
- 该文件的大小和不同的时间戳
- 指向磁盘上文件的数据块指针
- 有关文件的其他数据
如何查看inode号
ls -i
查看当前文件夹下文件的inode号
stat + 文件名
查看文件的全部信息
df -i
查看文件系统下的inode号
目录
目录是个特殊文件,目录文件的内容保存了此目录中文件的列表及inode number对应关系
文件引用一个是 inode号
是通过文件名来引用一个文件
一个目录是目录下的文件名和文件inode号之间的映射
文件是如何找到实际数据的
linux 通过文件夹中会有一张 文件名和inode一一对应关系的表 (名字) 去找inode号 inode指向对应的实际数据
- 用户访问文件时 先去查找 自己 文件夹中的目录项
- 文件名和inode之间对应的关系
- 通过inode号利用指针去指向实际数据
cp、rm 和 inode:
cp 命令:
- 分配一个空闲的inode号,在inode表中生成新条目
- 在目录中创建一个目录项,将名称与inode编号关联
- 拷贝数据生成新的文件
rm 命令:
- 硬链接数递减,从而释放的inode号可以被重用
- 把数据块放在空闲列表中
- 删除目录项
- 数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖
[root@localhost a]#find -inum 69 -exec rm {} \;
#通过find命令查找indoe号来删除指定的文件
[root@localhost a]#find -inum 69 -delete
三种时间戳
当新创建一个文件时,这个文件的最后访问时间、最后内容修改时间、最后状态更新时间都是一致的。
修改一个文件的权限状态信息,只会更新这个文件的最后状态修改时间
当查看文件时,文件的 Access time 会更新。
当需要了解这个文件有没有被修改过 - Modify Time
当需要了解这个文件最后被查看的时间 - Access Time
当需要了解这个文件权限最后变动的时间 - Change Time
为什么磁盘空间还有很多,但是不能继续创建文件
inode号是有限的,系统发完就没有了
解决方法:删除空文件或者扩容
日志
什么是日志
所谓日志(Log)是指系统所指定对象的某些操作和其操作结果按时间有序的集合
日志的功能
- 用于记录系统、程序运行中发生的各种事件
- 通过阅读日志,有助于判断和解决系统故障
遇事不决看日志
日志保存位置
- 默认保存在/var/log/目录下
日志文件的格式
日志文件的格式包含以下 4 列:
- 事件产生的时间。
- 产生事件的服务器的主机名。
- 产生事件的服务名或程序名。
- 事件的具体信息。
tail -f /var/log/messages/
#实时查看/var/log/messages/文件日志记录后十行
日志的类别
- 用户日志:记录用户登录、退出相关信息
- 内核和系统日志:由系统服务rsyslog统一管理,日志格式基本类似
- 程序日志:由各种应用程序独立管理的日志文件,记录格式不统一
用户日志
在 wtmp、btmp、lastlog 等日志文件中,保存了系统用户登录、退出等相关的事件消息。但是这些文件都是二进制的数据文件,不能直接使用 tail、less 等文本查看工具进行浏览,需要使用 who、w、users、last 和 lastb 等用户查询命令来获取日志信息
| 用户日志 | |
|---|---|
| /var/log/lastlog | 记录系统中所有用户最后一次的登录时间的曰志。这个文件也是二进制文件.不能直接用Vi 查看。而要使用lastlog命令查看 |
| /var/log/secure | 记录验证和授权方面的倍息,只要涉及账户和密码的程序都会记录,比如系统的登录、ssh的登录、su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中 |
| /var/log/wtmp | 永久记录所有用户的登陆、注销信息,同时记录系统的启动、重启、关机事件。同样,这个文件也是二进制文件.不能直接用Vi查看,而要使用last命令查看 |
| /var/tun/ulmp | 记录当前已经登录的用户的信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息。同样,这个文件不能直接用Vi查看,而要使用w、who、users等命令查看 |
信息的优先级别重要程度
在 Linux 内核中,根据日志消息的重要程度不同,将其分为不同 的优先级别(数字等级越小,优先级越高,消息越重要)。
| 数字等级 | 信息类别 | 含义 |
|---|---|---|
| 0 | EMERG(紧急) | 会导致主机系统不可用的情况。 |
| 1 | ALERT(警告) | 必须马上采取措施解决的问题。 |
| 2 | CRIT(严重) | 比较严重的情况。 |
| 3 | ERR(错误) | 运行出现错误。 |
| 4 | WARNING(提醒) | 可能影响系统功能,需要提醒用户的重要事件。 |
| 5 | NOTICE(注意) | 不会影响正常功能,但是需要注意的事件。 |
| 6 | INFO(信息) | 一般信息。 |
| 7 | DEBUG(调试) | 程序或系统调试信息等 |
内核和公共消息日志存储位置
内核及大多数系统消息被记录到公共日志文件/var/log/messages 中,而其他一些程序消息被记录到各自独立的日志文件中,此外日志消息还能够记录到特定的存储设备中,或者直接发送给指定用户。
对于 rsyslog 服务统一管理的大部分日志文件,使用的日志记录格式基本上是相同的。
以公共日志/var/log/messages 文件的记录格式为例,其中每一行表示一条日志消息,每一条消息均包括以下四个字段。
- 时间标签:消息发出的日期和时间。
- 主机名:生成消息的计算机的名称。
- 子系统名称:发出消息的应用程序的名称。
- 消息:消息的具体内容。
查询当前登录的用户情况
users
users 命令只是简单地输出当前登录的用户名称,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示与其相同的次数
who
who 命令用于报告当前登录到系统中的每个用户的信息。使用该命令,系统管理员可以查看当前系统存在哪些不合法用户,从而对其进行审计和处理。
w
w 命令用于显示当前系统中的每个用户及其所运行的进程信息,比 users、who 命令的 输出内容要丰富一些。
查询用户登录的历史记录
last
last 命令用于查询成功登录到系统的用户记录,最近的登录情况将显示在最前面。通过 last 命令可以及时掌握 Linux 主机的登录情况,若发现未经授权的用户登录过,则表示当前 主机可能已被入侵。
lastb
lastb 命令用于查询登录失败的用户记录,如:登录的用户名错误、密码不正确等情况都 将记录在案。登录失败的情况属于安全事件,因为这表示可能有人在尝试猜解你的密码。除了使用 lastb 命令查看以外,也可以直接从安全日志文件/var/log/secure 中获得相关信息。