文件系统与日志分析
inode 与 block 介绍
- 文件是存储在硬盘上的,硬盘的最小存储单位叫做“扇区”(sector),每个扇区存储512字节
- 操作系统读取硬盘的时候,不会一个个扇区的服务,这样效率太低,它则是直接读取“块”。由多个扇区组成的“块”是文件存取的最小单位。“块”的大小,最常见的是4K,及连续八个sector 组成一个 block。
- 文件数据存储在“块”中,文件的元信息(如:文件的创建者、文件的创建日期、文件的大小等)存储在 inode 上,即索引节点,也叫 “i” 节点。
- 一个文件必须占用一个 inode ,但至少占用2个以上的 block
inode的内容
-
inode包含很多的文件元信息,但不包括文件名,例如:
文件的字节数
文件拥有者的UserID
文件的GroupID
文件的读,写,执行权限
文件的时间戳
-
Linux系统文件三个主要的时间属性,可以使用命令 stat 查看某个文件的 inode 信息
-
ctime(change time):最后一次改变文件或目录(属性)的时间,例如执行chmod,chown等命令
-
atime(access time):最后一次访问文件或目录的时间
-
mtime(modify time):最后一次修改文件或目录(内容)的时间
-
-
文件名是存放在目录中的,Linux系统中一切皆文件,因此目录也是一种文件
- 每个 inode都有同一个号码,操作系统用 inode号码来标识不同的文件,对于系统来说文件名只是 inode 号码便于识别的别称
inode 的号码
- 用户是通过文件名来打开文件,这个过程分为了三步:
-
1.系统找到这个文件名对应的inode号码
-
2.通过inode号码,获取inode信息
-
3.根据inode信息,找到文件数据所在的block,读出数据
-
- 常见查看 inode 号码的命令
ll -i :直接查看当前目录文件名的所对应的 indeo 信息
ls -ai :直接查看当前目录的文件及隐藏文件的所对应的 indeo 信息
stat :用过查看文件 inode 信息而查看到 inode 号码
- 当一个用户在Linux系统中试图访问一个文件时,系统会先根据文件名去查找它的 inode,看该用户是否具有访问这个文件的权限,如果有,就指向相对应的数据 block,如果没有,就返回 Permission denied。而一块硬盘分区后的结构如下图所示:
inode 的大小
-
inode也会消耗硬盘空间,每个inode的大小一般是128字节或256字节
-
格式化文件系统时确定inode的总数
-
使用df -i命令可以查看每个硬盘分区的inode总数和已经使用的数量
[root@localhost ~]# df -i
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/mapper/centos-root 18092032 145016 17947016 1% /
devtmpfs 479185 389 478796 1% /dev
tmpfs 483163 1 483162 1% /dev/shm
tmpfs 483163 539 482624 1% /run
tmpfs 483163 16 483147 1% /sys/fs/cgroup
/dev/sda1 256000 328 255672 1% /boot
tmpfs 483163 21 483142 1% /run/user/0
其他关于 df 命令:
df -a:显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统。
df -h:以容易理解的格式输出文件系统大小,例如124KB、345MB、46GB。
df -i:显示i节点信息,而不是磁盘块。
df -t:显示各指定类型的文件系统的磁盘空间使用情况。
df -x:列出不是某一指定类型文件系统的磁盘空间使用情况。
df -T:显示文件系统类型。
df 以512字节为单位
df –k 以1024字节为单位
inode的特殊作用
-
由于inode号码与文件名分离,导致一些Unix/Linux系统具有以下的现象
1,当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件
2,移动或者重命名文件时,只改变文件名,不影响inode号码
3,打开一个文件后,系统通过inode号码来识别该文件,不再考虑文件名
-
这使得软件更新变得简单,可以在不关闭软件的情况下进行更新,不需要重启
因为系统通过inode号码,识别运行中的文件,不通过文件名
更新的时候,新版文件以同样的文件名,生成一个新的inode,不会影响到运行中的文件
等到下一次运行这个软件的时候,文件名就会自动指向新版文件,旧版文件的inode则被回收
硬链接与软链接
- 在Linux下面的链接文件有两种:
- 一种类似于Windows的快捷方式功能的文件,可以快速连接到目标文件或目录,这种称为软链接
- 另一种则是通过文件系统的inode链接文件来产生新的文件名,而不是产生新文件,这种称之为硬链接
软链接
- 软链接相当于 windows 系统桌面图标的那种快捷方式,目录文件在磁盘下很深的地方,通过快捷方式能快速定位和启用那个目录文件。
- 创建的软链接又称为符号链接,它是通过文件名称对应名称来创建的,它能够创建和源文件相对应的目录文件,但源文件被删除后,所创建的文件就不能读取了。
- 创建格式:
ln -s 源文件或目录 目标文件或目录
硬链接
- 一般情况下,文件名和inode号码是一一对应关系,每个inode号码对应一个文件名。
- 但是Linux系统允许,多个文件名指向同一个inode号码。这表示可以用不同的文件名来访问同样的内容
- 硬链接是通过创建的名称对应索引号来创的,源文件被删除后,创建的文件依然能够读取原本的内容。
- 不能对目录做硬链接
- 创建格式:
ln 源文件 目标文件
日志分析
日志的功能
- 用于记录系统、程序运行中发生的各种事件
- 通过阅读日志,有助于诊断和解决系统故障
日志文件的分类
- 内核及系统日志:由系统服务 rsyslog 统一进行管理,日志格式基本相似
- 用户日志:记录系统用户登录及退出系统相关信息
- 程序日志:由各种应用程序独立管理的日志文件,记录格式不统一;程序安装后不会生成日志文件,只有在启动的时候才会生成日志文件。
主要日志文件
- Linux 操作系统