- dentry的subdirs指向一个链表,里面都是自己的子目录和文件。
- 文件的目录项dentry放在上级的目录项中的链表中,所以删除文件=删除文件dentry=修改上级目录的链表。(所以目录w权限,才可以删除目录中的文件)
- 文件的dentry连接该文件的inode
- inode链表中有被引用的dentry
- 超级块
- 超级块是存储对应文件系统元数据的结构,存储的元数据包括包括文件系统大小,块大小,以及空闲及已使用的块的数量inode表的大学及位置等
- 目录项:dentry
- 目录项本身就是一个内存缓存内存缓存内存缓存
- 文件名在dentry中
- 索引节点:inode
- 目录项和索引节点的关系:多对一(一个文件有多个别名)
- 目录项本身就是一个内存缓存,而索引节点则是存储在磁盘中的数据
- 硬连接:目录项不同,索引节点相同
- 除了文件名都在inode中
- 数据块(逻辑块)单位是4k,所以文件最小4k。(扇区是512B)
- 文件系统最小4k,磁盘系统最小512B。
什么是Inode和Blcok_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
inode
- 文件的字节数
- 文件拥有者的User ID
- 文件的Group ID
- 文件的读、写、执行权限
- 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
- 链接数,即有多少文件名指向这个inode
- 文件数据block的位置
inode个数
每个文件都只对应一个inode。
“每8KB分配一个inode”不是对于单个文件而言的,是在文件系统初始化的时候,针对硬盘空间而言的。应该表述为“每8KB的硬盘空间分配一个inode”,它的本质是预先设置整个分区inode的数量。因为inode数量会限制这个空间所能存储的文件数。
文件描述符fd和inode的关系
「文件描述符」就是指这个文件指针数组的索引
理解Linux的文件描述符FD与Inode - 知乎
深入理解文件系统inode
- fd是表示进程打开的文件
inode是文件系统保存的
- 文件类型(file type),可以是常规文件、目录、套接字或FIFO
- 访问权限
- 文件锁列表(file locks)
- 文件大小
硬连接&软连接
软连接的内容是fileName,硬连接是指向inode
Linux 目录软链接 - willwuss - 博客园为什么删除文件权限需要目录权限
删除文件=删除文件dentry=修改上级目录的链表。(所以目录w权限,才可以删除目录中的文件)
x:cd进入
- w:修改文件名,删除文件
- r:ls浏览目录
VFS:虚拟文件系统
VFS 定义了一组所有文件系统都支持的数据结构和标准接口
- 磁盘文件系统:xfs、ext4
- 虚拟文件系统:/proc
linux空间df -h和du -sh结果相差好多【df是磁盘,du是目录】
- df -h
- du -h —max-depth=1
- du -s * | sort -nr :排序
df(disk free)与du(disk usage)
df 基于元数据(超级块?),包含删除但文件句柄仍被线程占用的文件。分区超级块中的信息也就不会更改,df仍会统计这个被删除的文件。
du 基于文件计算大小
它们统计的方式有所区别,相差如此之大的一种可能性是因为删除了正在被使用的文件。
可以通过命令lsof|grep delete查看有哪些文件被删除但仍被程序占用。
需要将这些程序重启才能将所占用的空间释放掉。
df和du显示的磁盘空间使用情况不一致的原因及处理_操作系统_smstong的成长轨迹-CSDN博客
我实现过一个最最简单的文件系统,具体步骤就是,先创建一个一百兆大小的文件。然后将其分为三个部分,超级块区,iNode区和数据块区。其中超级块区就存了两张位图,分别记录iNode和数据块的使用情况。iNode区则可以存放一定数目的iNode结构,iNode结构中比较重要的是对应文件的文件类型以及一个数组,数组中包含的是该文件占有的磁盘块编号。最后是磁盘块区,事实上磁盘块区是没有任何数据结构的,你只要能根据编号找到相应的位置就可以了。最后说说文件的创建,当创建一个普通文件时,只要查找超级块区,申请一个空余的iNode即可,当然还要在当前目录添加一个包含新创建的文件名和iNode编号的表项。当创建一个目录时,则需要先申请一个iNode,然后申请一个磁盘块,再往其中写入“.”和“..”两个表项。为了简单期间,一般读取文件或目录时我会将它的所有磁盘块块都读入内存,写回时再重新申请磁盘块写入。剩下的就是对iNode和磁盘块申请释放的操作了。 作者:姚灯灯 链接:https://www.zhihu.com/question/37550565/answer/72577893 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
cp & mv的过程是怎样的?
- cp创建新的inode和数据块
- mv,inode和数据库不变,只是改了目录项。【一个分区内mv,都很快】
rsyslog
命令
创建挂载文件系统
mke2fs:创建文件系统
dumpe2fs:查看文件系统【centos6】
mount:查看文件系统的挂载