inode与block
block由sector(扇区)组成,是最小的文件存取单位,用来存放数据。
inode(索引节点):每个文件至少有一个inode,存放除文件名外的文件元数据,例如:文件拥有者的id,组id,三个时间戳,block位置,文件大小,链接数(有多少个文件名指向这个inode),文件读写权限。
实际上,系统内部这个过程分成三步:首先,系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。
硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。
查看某个文件的inode信息
stat example.txt
查看每个分区的inode使用情况
注意:系统中inode数量是有限的,可能存在inode满了,但磁盘未满的情况,此时不能创建文件
df -i
查看每个inode大小
sudo dumpe2fs -h /dev/hda | grep "Inode size"
查看某个文件的inode号
ls -i example.txt
软连接与硬连接
硬连接:
多个文件名指向同一个inode,每增加一个硬连接,会使inode的连接数+1;每删除一个指向同一个inode的文件,inode的连接数-1,连接数为0时,会删除inode。
ln 源文件 目标文件
#不能连接目录 1.迭代子目录硬连接太复杂。2.每个目录的.和..已经确定了自己的位置,而硬连接的两个目录的父目录可能不同,如果对".."硬连接,是不对的。
注意:任何一个目录的"硬链接"总数,总是等于2加上它的直接子目录总数(含隐藏目录,只包含儿子目录,不包含孙子及更小的目录)。因为创建目录时,默认会生成两个目录项:"."和".."。前者的inode号码就是当前目录的inode号码,等同于当前目录的"硬链接";后者的inode号码就是当前目录的父目录的inode号码,等同于父目录的"硬链接"。
软连接:
软连接文件A和源文件B是不同的inode,但是A的内容是B的路径。当访问A时,系统会自动导向B(所以无论访问哪个文件,最终访问的都是B)。因此,文件A依赖于文件B而存在,如果删除了文件B,打开文件A就会报错:"No such file or directory"。
这是软链接与硬链接最大的不同:
文件A指向文件B的文件名,而不是文件B的inode号码,文件B的inode"链接数"不会因此发生变化。
ln -s 源文文件或目录 目标文件或目录