目录
1.linux文件系统

文件系统:
文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构.
也就是说在存储设备上组织文件的一种方法.
操作系统中负责管理或者存储文件信息的软件机构称为文件管理系统,简称文件系统.
2.linux常见的文件系统




man 5 fs 查看文件系统的介绍
cat /proc/filesystems 查看当前系统已经安装的文件系统类型
不同的文件系统采用不同的方法来管理磁盘空间,各有优缺点.
文件系统是具体到分区的,所以格式化针对的是分区.
分区格式化是指采用指定的文件系统类型对分区空间进行登记,
索引并建立相应的表格的一个过程.
比如:
ext2具有极快的速度及极小的CPU占用率,可用于硬盘或移动存储设备;
ext3增加了日志功能,可以回溯追踪;
ext4支持EB,也就是1024*1024TB的大小,最大单文件达到16TB,支持连续写入,可减少文件的碎片;
xfs 可以管理50T硬盘;
btrfs针对固态盘做优化等.
3.文件结构


linux采用标准的目录结构,也就是树形结构,无论操作系统管理几个分区,
这样的目录树只有一个,这样的目录组织有助于对文件系统或不同用户
文件进行统一的管理,如上图.
4.一切皆文件

它们虽然类型不同,但是对它们提供的却是同一套操作界面.
5.索引节点

系统给每个索引节点分配了一个号码(我们将其称为索引节点号,即inode),
文件系统就是靠索引节点号来识别一个文件的.
6.文件系统的安装

将一个文件系统的顶层目录挂到另一个文件系统的子目录上,使他们称为一个
整体,称作安装.把该子目录称为安装点,比如图中的/home和/usr就分别是
文件系统A和文件系统B的安装点.
ext2,ext3,ext4是linux的标准文件系统,系统把它的磁盘分区作为系统的根文件
系统,ext2,ext3,ext4以外的文件系统是安装在根目录系统下的某个目录中,称为
系统树形结构中的一个分支.
7.VFS框架

VFS中的S指的是Switch--开关的意思,并非System的意思.
虚拟文件系统所提供的的抽象界面主要由一组标准的,抽象的操作构成,如open(),read(),write()
等.这些函数以系统调用的形式供用户程序进行调用,这样用户程序调用系统调用的时候根本不需要关系
所操作的文件属于哪个系统以及这个文件系统是如何设计的,只管调用就好.
8.内核如何组织文件系统




内核使用VFS框架来组织文件系统.
每个文件系统用一个超级块(super_block)数据结构来描述,
如果一个文件系统想要加入VFS大家庭,就必须在VFS中进行注册,就像我们上学需要注册一样,
如何进行注册呢?
就需要填写一个数据结构file_system_type(相当于提交申请注册表),这个结构描述的是文件
系统的名称以及一个指向对应VFS超级块读取例程的地址.内核利用file_system_type类型的
链表组织每个注册的文件系统,上图是文件系统类型的组织(这个之前我写过,哈哈,review一下).
问题:
如果文件系统A有3个超级块,文件系统B有4个超级块,那么超级块中的这个7个超级块会连成一个
链表吗?
图中说linux系统中所有的超级块的组织,这样的意思就是这7个超级块就是会连成一个链表的
意思吗?
9.从读文件理解VFS

当用户要查看/home目录下的一个文件和/proc目录下的一个文件的时候,
都会调用vfs层的read()系统调用,但因为这两个文件所在的文件系统不同,
前者是ext3文件系统,存放在磁盘上;
后者是proc文件系统,存于内核内存中.
因此到了VFS层,它们兵分两路,调用各自文件系统的read函数,由此可以看出
VFS相当于一个总开关,各个文件系统相当于分支,进程通过VFS层的系统调用
到达各个分支对具体的文件系统进行操作.
10.参考书目与思考题


本文深入介绍了Linux文件系统的组织方式和工作原理,包括常见的文件系统类型(如ext2、ext3、ext4、xfs和btrfs)、文件结构、索引节点的概念、文件系统的安装过程以及虚拟文件系统(VFS)框架的作用机制。
362

被折叠的 条评论
为什么被折叠?



