文章目录
前言:
-
在处理Linux系统出现的各种故障时,故障的症状是最容易发现的,而导致这一故障的原因才是最终排除故障的关键。
-
熟悉Linux系统中常见的日志文件,了解一般故障的分析与解决办法,将有助于管理员快速定位故障点,“对症下药”,及时解决各种系统问题。
一、inode与block
1.1 inode与block概述
- 文件数据包括元信息与实际数据
文件存储在硬盘上,硬盘最小存储单位是“扇区”(物理)单元格,簇(逻辑上)。每个扇区存储512字节
block(块)
操作系统读取硬盘的时候,不会一个个扇区的读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个“块”(block)
连续的八个扇区组成一个block
是文件存取的最小单位
inode(索引节点)
中文名译名为“索引节点”,也叫i节点
用于存储文件元信息
一个文件必须占用一个inode,但至少占用一个block
1.2 inode的内容
1.2.1 inode包含文件的元信息,但是不包含文件名
例如:
文件的字节数
文件拥有者的User ID
文件的Group ID
文件的读、写、执行权限
文件的时间戳
1.2.2 Linux系统文件三个主要的时间属性
ctime(change time)
最后一次改变文件或目录(属性)的时间
atime(access time)
最后一次访问文件或目录的时间
mtime(modify time)
最后一次修改文件或目录(内容)的时间
1.2.3 目录文件的结构
- 目录是一种文件,每一行称为一个目录项
目录的文件结构:
每一个inode都有一个号码,操作系统用inode号码来识别不同的文件
Linux系统内部不适用文件名,而使用indoe号码来识别文件
对于用户来说,文件名只是inode号码便于识别的别称
1.2.4 ⭐inode的号码
- 用户通过文件名打开文件时,系统内部的过程:
1、系统找到这个文件名对应inode号码
2、通过inode号码,获取inode信息
3、根据inode信息,找到文件数据所在的block,读出数据
- 查看inode号码的方法:
stat 可以指定查看某个文件的inode信息
ls -i 查看文件名对应的inode号码
df -i 查看文件系统的inode数量信息(总数、已用、可用)
示例:
[root@localhost opt]# touch 123.txt
[root@localhost opt]# ls
123.txt rh
[root@localhost opt]# stat 123.txt
文件:"123.txt"
大小:0 块:0 IO 块:4096 普通空文件
设备:802h/2050d Inode:34952126 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:usr_t:s0
最近访问:2019-11-23 15:40:34.983126324 +0800
最近更改:2019-11-23 15:40:34.983126324 +0800
最近改动:2019-11-23 15:40:34.983126324 +0800
创建时间:-
[root@localhost opt]# ls -i
34952126 123.txt 1477390 rh
[root@localhost opt]# df -i
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sda2 10485760 121060 10364700 2% /
devtmpfs 229705 372 229333 1% /dev
tmpfs 233378 1 233377 1% /dev/shm
tmpfs 233378 560 232818 1% /run
tmpfs 233378 16 233362 1% /sys/fs/cgroup
/dev/sda5 5242880 142 5242738 1% /home
/dev/sda1 2097152 328 2096824 1% /boot
tmpfs 233378 6 233372 1% /run/user/42
tmpfs 233378 15 233363 1% /run/user/0
1.2.5 文件存储小结
硬盘分区后的结构:
文件访问的简单流程:
1.2.6 inode的大小
inode也会消耗硬盘空间,每个inode的大小一般是128字节或256字节
格式化文件系统时确定inode的总数
使用df -i 命令可以查看每个硬盘分区的inode总数和已经使用的数量
df常用参数与功能:
1.2.7 inode的特殊作用
由于inode号码与文件名分离,导致一些Unix/Linux系统具有以下的现象
当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件。
移动或重命名文件时,只改变文件名,不影响inode号码
打开一个文件后,系统通过inode号码来识别该文件,不考虑文件名
这使得软件更新变得简单,可以在不关闭软件的情况下进行更新,不需要重启
因为系统通过inode号码,识别运行中的文件,不通过文件名
更新的时候,新版文件以同样的文件名,生成一个新的inode,不会影响到运行中的文件
等到下一次运行这个软件的时候,文件名就会自动指向新版文件,旧版文件的inode则被回收
二、硬连接与软连接
在Linux系统下的链接文件有两种:
1、软连接:又称为符号链接,我们可以理解为Windows中的快捷方式,功能为快速连接到文件或目录。
2、硬连接:通过文件系统的inode链接文件来产生新的文件名(并不是产生新文件)。
两种链接文件对比:
2.1 硬链接
一般情况下,文件名和inode号码一一对应关系,每个inode号码对应一个文件名。
但Linux系统允许多个文件名指向同一个inode号码,这表示可以用不同的文件名来访问同样的内容
创建硬连接,示例:
命令格式:ln 源文件 目标
[root@localhost opt]# ln 123.txt 234.txt
[root@localhost opt]# ls
123.txt 234.txt rh
[root@localhost opt]#
123.txt与234.txt的inode号码相同,都指向同一个inode。
indoe信息中的链接数此时会加1。示例:
当一个文件拥有多个硬连接时,对文件内容修改,会影响到所有文件名
但删除一个文件名,不会影响其他文件名的访问
同时,删除一个文件名,会使inode信息中的链接数减1
2.2 软链接
软链接就是再创建一个独立的文件,而中国文件会让数据的读取指向它链接的那个文件的文件名。
创建软链接的命令格式:
ln -s 源文件或目录 目标文件或目录
示例: