目录
一 文件系统inode
理解inode,要从文件储存说起。
文件储存在硬盘上,硬盘的最小存储单位叫做”扇区”(Sector)。每个扇区储存512字节(相当于0.5KB)。
操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个”块”(block)。这种由多个扇区组成的”块”,是文件存取的最小单位。”块”的大小,最常见的是4KB,即连续八个 sector组成一个 block。
文件数据都储存在”块”中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为”索引节点”。
每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。
二 inode 内容
- inode number 节点号
- 文件类型
- 权限
- UID
- GID
- 链接数(指向这个文件名路径名称个数)
- 该文件的大小和不同的时间戳(atime mtime ctime)
- 指向磁盘上文件的数据块指针
- 有关文件的其他数据
stat 命令 查看文件具体信息(包含inode号)
目录
目录是个特殊文件,目录文件的内容保存了此目录中文件的列表及inode number对应关系
文件引用一个是 inode号
是通过文件名来引用一个文件
一个目录是目录下的文件名和文件inode号之间的映射
linux中文件打开的过程:
1.系统找这个文件名对应的inode号
2.通过inode号,获取inode信息
3.根据inode信息,找到指向文件数据的block,最终读取数据。
cp和inode
cp 命令:
-
分配一个空闲的inode号,在inode表中生成新条目
-
在目录中创建一个目录项,将名称与inode编号关联
-
拷贝数据生成新的文件
rm 命令:
-
硬链接数递减,从而释放的inode号可以被重用
-
把数据块放在空闲列表中