一、文件目录结构
文件存储在磁盘扇区中,以Block块存储
inode存储了文件的元信息(文件的创建时间、修改时间、用户id等)
磁盘格式化,会把空间自动分成数据块和inode区域,inode(128/256Byte)会被赋予数字标号
linux打开文件的内在逻辑
1. 系统根据文件名找到对应的inode号码
2. 通过inode号码获取inode信息
3. 通过inode信息找到文件数据所在的block并读取
二、inode的结构及查询
1. stat可查询单个文件的inode信息,主要包括:
文件名File,块Blocks,Inode索引编号,硬链接Links,
文件的访问权限、访问时间Access,文件内容修改时间Modify,文件属性修改时间Change
2. df -i 指令可以查询文件系统的inode数量及使用情况,文件系统的存储空间未使用完,若Inodes编号被用光,那么也无法继续存储文件。
3. ls -i 文件/目录 ,可以显示单一文件的inode,也可以显示当前目录下所有文件的inode
三、硬链接、软链接(给文件起别名)
硬链接 ln test.txt hardlink.txt
给test.txt创建一个名为hardlink.txt的硬链接,
通常情况下,文件名和inode是一一对应的关系(邮编和城区的关系),linux允许多个文件名指向同一个inode,意味着可以用不同的文件名访问同一个内容,类似于指针。
对文件内容的修改会影响文件名,删除文件不影响另一个文件通过inode的访问
如下图,test.txt和hardlink.txt的inode都是14,test.txt中的文本内容可以通过访问hardlink.txt直接读取,甚至删除test.txt,也不影响文本内容,除非直接删除inode14。
软链接 ln -s test.txt softlink.txt
两文件的inode号码(12,14)不同,文件softlink.txt的内容是文件test.txt的路径,可以通过文件softlink.txt访问到文件test.txt,softlink.txt依赖于test.txt存在,softlink.txt是文件test.txt的软链接。
参考链接: