前言
- 在处理Linux系统出现的各种故障时,故障的症状是最容易发现的,而导致这一故障的原因才是最终排除故障的关键。
- 熟悉Linux系统中常见的日志文件,了解一般故障的分析与解决办法,将有助于管理员快速定位故障点,“对症下药”,及时解决各种系统问题。
一. inode与block
1.1 inode与block 元信息
■文件数据包括元信息与实际数据
■文件存储在硬盘.上,硬盘最小存储单位是“扇区,每个扇区存储512字节
■元信息
元信息是关于信息的信息,用于描述信息的结构、语义、用途和用法等,比如文件的创建者,文件的创建日期,文件的大小等
■block (块)
●连续的八个扇区组成一个block ,块大小常见的是4k
●是文件存取的最小单位
一个文件必须占用一个inode,但至少占用一个block
■inode (索引节点)
文件数据存储在“块”中,那么还必须找到一个地方存储文件的元信息,比如文件的创建者,文件的创建日期,文件的大小等
这种存储文件元信息的区域就叫做inode,中文译名为(索引节点),也叫 i节点
●中文译名为“索引节点”,也叫节点
●用于存储文件元信息
■元信息存储在inode 数据存储在block
1.2:inode的内容
1.2.1:inode包含文件的元信息
-
inode包含很多的文件元信息,但不包括文件名,例如:
文件的字节数
文件拥有者的UserID
文件的GroupID
文件的读,写,执行权限
文件的时间戳
使用stat命令即可查看某个文件的inode信息
[root@lpf ~]# touch 1
[root@lpf ~]# stat 1
文件:"1"
大小:0 块:0 IO 块:4096 普通空文件
设备:803h/2051d Inode:537173202 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2020-06-23 13:58:48.904372039 +0800
最近更改:2020-06-23 13:58:48.904372039 +0800
最近改动:2020-06-23 13:58:48.904372039 +0800
创建时间:-
1.2.2 Linux系统文件三个主要的时间属性
ctime(change time)
最后一次改变文件或目录(属性)的时间,例如执行chmod,chown等命令
atime(access time)
最后一次访问文件或目录的时间
mtime(modify time)
最后一次修改文件或目录(内容)的时间
[root@lpf ~]# touch 2.txt
[root@lpf ~]# vi 2.txt
[root@lpf ~]# stat 2.txt
文件:"2.txt"
大小:11 块:8 IO 块:4096 普通文件
设备:803h/2051d Inode:537173219 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2020-06-23 14:01:32.051363157 +0800
最近更改:2020-06-23 14:01:32.051363157 +0800
最近改动:2020-06-23 14:01:32.053363157 +0800
创建时间:-
[root@lpf ~]# cat 2.txt
nncsjc
sdd
[root@lpf ~]# chmod 755 2.txt
[root@lpf ~]# stat 2.txt
文件:"2.txt"
大小:11 块:8 IO 块:4096 普通文件
设备:803h/2051d Inode:537173219 硬链接:1
权限:(0755/-rwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2020-06-23 14:02:03.810361428 +0800 #(access time)访问
最近更改:2020-06-23 14:01:32.051363157 +0800 #(modify time)改内容
最近改动:2020-06-23 14:02:27.967360112 +0800 #(change time)改属性
创建时间:-
1.2.3 目录文件的结构
-
inode不包括文件名,文件名是存放在目录当中的
-
Linux系统中一切皆文件,因此目录也是一种文件
-
目录文件的结构,每一行称为一个目录项
文件名1 inode号码1
文件名2 inode号码2
…
每个inode都有一个号码,操作系统用inode号码来识别不同的文件
Linux系统内部不使用文件名,而使用inode号码来识别文件
对于用户来说,文件名指示inode号码便于识别的别称
1.2.4:inode的号码
用户通过文件名打开文件时,系统内部的过程
1.系统找到这个文件名对应的inode号码
2.通过inode号码,获取inode信息
3.根据inode信息,找到文件数据所在的block,读出数据
inode号码指向block存储路径
查看inode号码的方法
ls -i命令,查看文件名对应的inode号码
[root@lpf ~]# ls -i 2.txt
537173219 2.txt
[root@lpf ~]# stat 2.txt
文件:"2.txt"
大小:11 块:8 IO 块:4096 普通文件
设备:803h/2051d Inode:537173219 硬链接:1
权限:(0755/-rwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2020-06-23 14:02:03.810361428 +0800
最近更改:2020-06-23 14:01:32.051363157 +0800
最近改动:2020-06-23 14:02:27.967360112 +0800
创建时间:-
[root@lpf ~]# ls -i
537173202 1 537173187 anaconda-ks.cfg
537173219 2.txt 537173191 initial-setup-ks.cfg
查看文件系统的inode数量信息(总数,已用,可用)
[root@lpf ~]# df -i
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sda3 154729472 157885 154571587 1% /
devtmpfs 478739 379 478360 1% /dev
tmpfs 482689 1 482688 1% /dev/shm
tmpfs 482689 1375 481314 1% /run
tmpfs 482689 16 482673 1% /sys/fs/cgroup
/dev/sda1 524288 341 523947 1% /boot
tmpfs 482689 9 482680 1% /run/user/42
tmpfs 482689 1 482688 1% /run/user/0
当已用百分比大于70~80% ,要查看该分区,看是否有僵尸文件或者日志文件占用inode
1.2.5:文件存储小结
1.2.6:inode的大小
- inode也会消耗硬盘空间,每个inode的大小一般是128字节或256字节
- 格式化文件系统时确定inode的总数
- 使用df -i命令可以查看每个硬盘分区的inode总数和已经使用的数量
df 命令总结
df - 报告文件系统磁盘空间的使用情况
df -a:显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统。
df -h:以容易理解的格式输出文件系统大小,例如124KB、345MB、46GB。
df -i:显示i节点信息,而不是磁盘块。
df -t:显示各指定类型的文件系统的磁盘空间使用情况。
df -x:列出不是某一指定类型文件系统的磁盘空间使用情况。
df -T:显示文件系统类型。
df 以512字节为单位
df –k 以1024字节为单位
1.2.7:inode的特殊作用
由于inode号码与文件名分离,导致一些Unix/Linux系统具有以下的现象
1,当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件
2,移动或者重命名文件时,只改变文件名,不影响inode号码
3,打开一个文件后,系统通过inode号码来识别该文件,不再考虑文件名
这使得软件更新变得简单,可以在不关闭软件的情况下进行更新,不需要重启
因为系统通过inode号码,识别运行中的文件,不通过文件名
更新的时候,新版文件以同样的文件名,生成一个新的inode,不会影响到运行中的文件
等到下一次运行这个软件的时候,文件名就会自动指向新版文件,旧版文件的inode则被回收
二:硬链接与软链接
- 在Linux下面的链接文件有两种:
- 一种类似于Windows的快捷方式功能的文件,可以快速连接到目标文件或目录,这种称为软链接
- 另一种则是通过文件系统的inode链接文件来产生新的文件名,而不是产生新文件,这种称之为硬链接
2.1:硬链接
一般情况下,文件名和inode号码是一一对应关系,每个inode号码对应一个文件名。但是Linux系统允许多个文件名指向同一个inode号码,这意味着,可以不同的文件名访问同样的内容
ln命令可以创建硬链接,命令基本格式
ln 源文件 目标
不能对目录做硬链接
运行此命令后,源文件和目标文件的inode号