一、索引节点:
1、indoe表中包含文件系统所有文件列表
一个节点(索引节点)是在一个表项,包含有关文件的信息(元数据),包含:
文件类型,权限,UID,GID;链接数(指向这个文件名路径名称个数);该文件的大小和不同的时间 戳;指向磁盘上文件的数据块指针;有关文件的其他数据。
2、查看节点编号:#ls -i
3、indoe表结构:
原理图如下:
4、节点编号在不同的分区下可以有相同的编号;同一分区下不能够出现同样的节点编号。(如:/boot和/testdir是两个分区,但都有同样的131和132节点编号,见下图:)
但在同一分区下如果出现同样的节点编号,只能是同一个文件(硬链接产生指向同一个文件)。如下图,同一分区内有相同的节点编号,只能是同一个文件,使用硬链接指向:
5、链接数:
二、目录:
文件引用一个是inode号
人是通过文件名来引用一个文件
一个目录是目录下的文件名和文件inode号之间的映射
Inode table:
三、cp、rm、mv和inode:
在CP的命令:分配一个空闲的inode号,在inode表中生成新条目;在目录中创建一个目录项,将名称与inode编号关联;拷贝数据生成新的文件
rm命令:链接数递减,从而释放的inode号可以被重用;把数据块放在空闲列表中;
删除目录项,数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖。
如果mv命令的目标和源在相同的文件系统,作为mv命令:
用新的文件名创建对应新的目录项;删除旧目录条目对应的旧的文件名;
不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动;如果目标和源在一个不同的文件系统,mv相当于cp和rm
四、硬链接和软链接:
硬链接: 创建硬链接会增加额外的记录项以引用文件,对应于同一文件系统上一个物理文件,每个 目录引用相同的inode号,创建时链接数递增。
删除文件时:rm命令递减计数的链接,文件要存在,至少有一个链接数;
当链接数为零时,该文件被删除;
不能跨越驱动器或分区
使用格式:# ln file [linkname]
软链接:一个符号链接指向另一个文件,ls -l的显示链接的名称和引用的文件,一个符号链接的 内容是它引用文件的名称
可以对目录进行,可以跨分区,指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数;
使用格式:# ln –s file[linkname]
五、查看文件的内容:
文件可以包含多种类型的数据;检查文文件类型,然后确定适当的开放命令或应用程序使用。
格式:file[options] ...Option:
选项使用:-b列出文件辨识结果时,不显示文件名称。
-c详细显示指令执行过程,便于排错或分析程序执行
-f列出文件中文件名的文件类型
-F使用指定分隔符号替换输出文件名后默认的”:”分隔符
-i输出mime类型的字符串
-L查看对应软链接对应文件的文件类型
-z尝试去解读压缩文件的内容
--help显示命令在线帮助
eg:file -b 的使用如下图:
查看一个系统分区下每个分区最多能支持的inode节点号(在Linux文件系统,inode节点编号是不支持拓展的):
命令:# df -i
### 查看用户:getent passwd
更改用户:sed –I ‘s/chesfer/che/g’/etc/passwd
sed –I ‘s/chesfer/che/g’ /etc/shadow
sed –I ‘s/chesfer/che/g’ /etc/gshadow
sed –I ‘s/chesfer/che/g’ /etc/group
watch –n 1 ‘df –I /boot’ 一秒扫描一次
for id in {1..19456} do touch/boot/f$id;echo f$id is created;done 指定生成一定数量的空文件(测试消耗inode节点号)
###