概念
索引节点
inode表中包含了文件系统所有文件列表
一个节点是在一个表项里,包含文件数据(元数据)。
1.文件类型,权限,UID,GID
2.链接数(指向这个文件名路径名称个数)
3.文件的大小和时间戳
4.指向磁盘上文件的指针
5.有关文件的其他数据
6.inode 索引节点编号
inode表结构
- 直接块指针:有12个块直接指向对应的数据单元,每个数据单元可以容纳4K大小文件,所有直接块指针只能存储48k大小的文件。
- 间接块指针:指向一个指针块,里面不放数据,大小为4k,每个块占4个字节,所有有1024个指针,然后每个指针指向真正的数据块。这样计算下来4*1024=4M。
- 双重间接块指针:在间接块的基础上再增加一个指针块,这样计算下来有410241024=4G。
inode号
系统中将目录下的文件名和文件inode号之间的映射作为目录的数据存放;人们通过文件名进行操作时,系统会通过对应路径目录的inode号找到目录的inode表数据,进而通过数据指针指向目录的数据,匹配文件名,得到文件的inode号;再到inode表中找到此文件的表项,再由文件数据指针指向真正的文件数据。
1.系统中同一分区节点编号是唯一的。
2.不同分区的节点编号相同但不是同一个文件。
3.每个分区的节点编号都是有限的,如果节点编号用完会导致在此分区里不能创建新的文件,但系统中可能还有大量的磁盘空间,所有一定要注意是否是节点编号用尽。
文件操作与inode的关系
1.cp命令
系统分配一个空闲的节点编号,在节点表中生成一条新的信息,在目录中创建一个目录项,将名称与inode编号关联;拷贝数据生成新的文件。
2.rm命令
首先文件有没有链接数,当链接数减到零后,系统释放节点编号,并删除目录表信息和对应的指针,但数据块的数据不会被删除,只有系统重新启用此数据块时数据才会被覆盖。
mv命令
如果目标和源文件都存在相同一个分区里,则删除旧的目录信息,创建新的信息,其他的没有改变,如果目标和源文件在不同的分区,mv相当于cp和rm。
硬链接和软链接
1.硬链接
语法:ln filename [linkname ]
a. 硬链接的新建是为同一inode号添加文件名 (本质是在目录条目里为inode号增添一个文件名映射,指向同一个inode表数据,因此数据相同)
b. 新建硬链接,链接数增加(链接数实质就是 inode号 对应文件名的个数;当 inode 号映射的文件名不存在时,此 inode号就会被系统回收重用)
c. 硬链接文件和原文件之间数据共享,但又互相独立;(修改其中任意一个文件的数据,其他的文件数据都会改变,删除硬链接文件则对应的链接数会减少,如果是最后一个链接数则直接删除文件。)
d. 不能跨分区和跨设备创建硬链接
e. 不能对目录创建硬链接 (目录最多有三个硬链接,目录本身,目录下的 . ,子目录下的 ..)
2.软链接
语法:ln -s filename [linkname ]
a. 软链接实质是新建一个文件快捷方式,存放的数据是原文件的文件名,文件数据大小是原文件名字的字节数;访问时通过文件名指向到原文件数据
b. 软链接支持跨分区
c. 可以创建目录软连接
d. 软链接文件依赖于原始文件 ;删除原始文件,软链接文件会失效
原文地址:https://blog.51cto.com/13449039/2395301