
image.png
创建文件:
Linux文件系统中,每个文件至少有一个inode和一个block。
创建文件时,先查询inode bitmap,选择可用的inode,
将权限(w)等属性写入inode table,
然后查询block bitmap,选择可用的block并写入文件内容;
再将inode指向block(记录在inode table);
最后更新inode bitmap和block bitmap,以及superblock。
删除文件:
1、从文件系统角度:
文件的文件名是存放在父目录的block里的。
文件名指向文件的inode,inode标记文件的block。(这里的指向和标记记录在inode table中)
当删除文件的时候,实际上是删除了父目录里的文件名,这时候对应的inode和block就没有了指向;
文件系统会将其释放,同时更新inode Map和block Map,以便重新创建文件的时候使用。
2、从文件引用角度:
Linux文件系统是通过Link的数量来控制文件是否被删除的,
只有当一个人文件不存在任何Link的时候,文件才会被删除:
主要包括i_nlink和i_count;
前者是硬链接的数量(磁盘),后者是调用文件的进程数量(内存)。
一个文件的删除不仅要删除所有硬链接,也要杀死响应进程。
即 i_nlink=0 并且 i_count=0