一切皆文件(文件系统)
Posted 一口Linux
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一切皆文件(文件系统)相关的知识,希望对你有一定的参考价值。
摘要
- 文件系统的基本组成
- 虚拟文件系统
文件系统的基本组成
文件系统的作用是?
文件系统就是将用户的文件保存到磁盘中。
文件系统的基本数据单位是?
文件,在Linux中一切皆文件,普通的文件和目录、块设备、管道和Socket都是交给文件系统管理。
文件的数据结构是?
- 索引节点(inode):记录文件的原信息,比如inode编号、文件大小、访问权限、创建时间、修改时间以及数据在磁盘中的位置等等。索引节点与文件一一对应,是文件的唯一标识,会被存储在磁盘中,为了加速访问,也会加载到内存中。
- 目录项(dentry):记录文件的名字、索引节点的指针以及和其他目录项的层级关系。目录项是由内核维护的一个数据结构,只存放于内存中。
目录项和目录的区别是?
- 目录是个文件,持久化存储在磁盘
- 目录项是内核的一个数据结构,读过的目录用目录项缓存在内存中,下次读取到相同目录时可以直接从内存中获取
磁盘读写的单位是?
扇区,每个扇区的大小为512B。
逻辑块的作用?
文件系统将多个扇区组成一个逻辑块(读写的最小单位),Linux中每个逻辑块的大小为4KB,也就是一次性读写8个扇区,提高磁盘的读写效率。
磁盘的存储区域划分?
- 超级块:存储文件系统的详细信息,比如块个数、块大小、空闲块等
- 索引节点区:存储索引节点
- 数据块区:用来存储文件或目录数据
为了加速文件的访问,超级块和索引节点区会被加载到内存,但只有在使用的时候才会将其加载到内存中:
- 超级块:当文件系统挂载时进入内存
- 索引节点区:当文件访问时进入内存
虚拟文件系统
为什么需要虚拟文件系统?
文件系统种类繁多,但操作系统希望对用户提供一个统一的接口,因此在用户层和文件系统层之间引入虚拟文件系统这个中间层。
文件系统的分类?
- 磁盘的文件系统:直接把数据存储在磁盘中,比如Ext 2/3/4,XFS等
- 内存的文件系统:这类文件系统的数据占用内存空间,比如/proc和/sys文件系统都属于这一类,读写这类文件,实际上是读写内核中的相关数据
- 网络的文件系统:用来访问其他计算机数据的文件系统,比如NFS、SMB等
文件系统必须挂载到某个目录才可以正常使用,Linux系统在启动时,会把文件系统挂载到根目录下。
以上是关于一切皆文件(文件系统)的主要内容,如果未能解决你的问题,请参考以下文章
Linux系统编程:基础IO 上简单复习C语言文件接口 | 学习系统文件接口 | 认识文件描述符 | Linux下,一切皆文件 | 重定向原理
Linux系统编程:基础IO 上简单复习C语言文件接口 | 学习系统文件接口 | 认识文件描述符 | Linux下,一切皆文件 | 重定向原理
Linux系统编程:基础IO 壹简单复习C语言文件接口 | 学习系统文件接口 | 认识文件描述符 | Linux下,一切皆文件 | 重定向原理
Linux系统编程:基础IO 上简单复习C语言文件接口 | 学习系统文件接口 | 认识文件描述符 | Linux下,一切皆文件 | 重定向原理