硬盘是常见的存储设备,最小单位叫做扇区,大小512kb。
文件存储在硬盘中,文件存储最小单位叫做块,大小通常为4k。
iNode用于存放文件的元信息,元信息如下:
所有者
所有组
权限
时间戳,ctime:最近一次改变时间;mtime:内容最近一次改变时间;atime:最近一次访问时间
大小
块位置
链接数
linux下可以使用stat命令查看文件详细信息
了解了iNode的概念之后,硬盘格式化就容易理解了。
我们知道,硬盘格式化之后,所能使用的空间并非100%,有一部分被占用了!这个就是iNode。
iNode节点数*每个节点大小=iNode所占空间,我们实际能够使用的空间就是总量-iNode空间。
可以使用df -i查看系统iNode相关情况。
每个文件都有一个iNode号,可以使用stat查看文件iNode号。
文件名这个概念,一看就是人为发明的,用来方便人类的。对于计算机而言,只有iNode号这个概念。
系统读取文件分为三步,找到iNode号,根据iNode号找到元信息,更具元信息找到block位置并读取。
上面说了stat可以查看iNode号,其实ls -i也可以查看iNode号。
硬链接和软链接
元信息中有一项是链接数。这个链接数其实就是指硬链接数量。
一般来说,创建了某个文件的硬链接,该链接数就会+1。相当于给iNode号多起了一个别名。
当文件的链接数为0时,iNode会被系统回收,文件不存在。
而软链接,相当于指向源文名的指针。软链接的多少不会影响链接数,
如果源文件不存在了,软链接自然也没作用了。
可以通过ln创建硬链接,加-s选项来创建软链接。
移动或者重命名文件,iNode号不会改变。
可以采用软链接的方式来缓冲iNode节点不足的现状。