Linux的目录
前言
请先看inode()
目录信息在文件系统中的保存
文件系统会给一个目录分配一个inode和至少一个区块。其中inode中记录该目录的权限和属性,并记录分配的区块的区块号,而在区块中则记录了目录下文件名称和该文件名占用的inode.
ll -d 若文件系统中区块大小为4K ,则此命令的结果为 4K的倍数。
inode本身并不记录文件名称,而文件名记录在父目录的区块当做。所以我们才好理解为什么在目录中 新增,删除,修改文件名和 w权限相关。因为文件名是记录在目录当中的,因此当我们读取某个文件时,就务必会经过目录的inode和区块,然后才能找到带读取文件的inode号码,最终才能读取到该文件的区块中的数据。
linux中新增一个文件的过程
1,先确定用户在此文件中是否有 w x权限。
2,根据 inode 对照表查找一个没有被使用的 inode,然后将文件的属性写入。
3,根据区块对照表查找没有使用的区块,然后把实际的数据写入,且更新inode的区块指向数据。
4,将刚写入的inode与区块数据同步更新inode对照表与区块对照表,并更新超级区块中的内容。
linux中文件系统的运行
当读取一个文件到内存后,若此文件没有被修改,则标记为clean,不同同步到硬盘。若此文件被修改,则记录为dirty,系统会不定时同步的硬盘上,可以使用 sync 命令手动同步。