- 为什么要有文件系统
- 如果没有文件系统
- 什么是文件系统
- 文件系统的三大作用:
- 引出
- 1.便于磁盘空间管理
- 2. 方便数据组织和查找
- 3. 提高磁盘利用率
- linux文件系统
http://www.360doc.com/content/18/1117/00/99071_795394734.shtml
https://zhuanlan.zhihu.com/p/68904315
如果我们不在硬盘本身建立文件系统,我们要直接面对硬盘的扇区。
先看看对于操作普通文件来说,意味着什么。
比如我们要写一个文件1.txt,里面写abc存入硬盘,如果没有文件系统我们要怎么做呢?
我们要拿着一个小本本,上面记着:
- 文件名1.txt
- 文件所在硬盘的扇区
- 文件大小。
每次要读写文件,我们要人工查询这个账本,知道我们要的文件在哪个扇区。如果文件A所在的扇区M已经写满了,随后的一个扇区M+1被文件B占用了,我们还想接着写文件A,怎么办呢?只能从其他地方找一个空闲扇区N,然后在账本上把扇区N记录到文件1.txt上
还有:我们如何知道硬盘上还有哪些空间可以用呢?难道每次都从前往后把扇区使用情况计算一遍吗吗?可能还需要另起一个账本记录扇区使用情况,删除文件,我们把对应的扇区标记为空闲,如果创建文件,把对应的扇区标记为不能使用。等等一系列操作。
什么是文件系统文件系统定义:一个对磁盘空间进行管理,实现数据存取的系统。
文件系统存在的意义,就是能更有效的组织、管理和使用磁盘上的数据。实质上,它简化了用户对磁盘空间的使用方法。
所以简而言之:文件系统就是为了用户更方便的使用硬盘。有了文件系统,我们直接将abc写入1.txt。然后扔给一个目录,这个目录下的文件就存到了硬盘中。下次我们读就再次从这个目录下取这个文件就ok了。所有的需要记录的信息,寻址等操作,都由文件系统来帮我们完成。非常类似于我们生活中的快递公司,我们只需要把要寄的物品交给快递员,他会给你打包,然后装箱,然后找地址,路线选择,你都不用管了,全部由快递公司完成。
通过文件名就可以找到具体的数据,而不用关心数据到底是怎么存储的。
文件系统的三大作用:https://zhuanlan.zhihu.com/p/55037128
引出磁盘的控制器已经替我们做了很多事情,它对这些内部的结构进行了统一管理,呈现给我们的只是一个线性的地址。比如一个1T的硬盘,其呈现给我们的就是从0字节开始,以1字节递增,直到1TB的地址空间。当然,机械磁盘可进行读写的最小粒度为1个扇区(512字节或者4K就这两种)
既然可以这么方便的访问磁盘空间了,那为什么还要文件系统呢?
引出文件系统三大作用:
- 便于磁盘空间的管理
- 方便数据的组织和查找
- 提高磁盘空间的使用率
一个文件如果大小1G,比如存储到0-1G位置,第二个文件大小2G,你存到1-3G位置。但是这时你要删除第一个文件再存第二个,你找到第一个删除了,然后想把第二个放进去,发现不够大,只能放到最后面。也就是每次你都要评估你的硬盘空间大小,然后添加删除文件数据。这非常麻烦,有了文件系统,你只需要把文件扔进某个文件夹,或者直接删除掉文件。
2. 方便数据组织和查找
文件系统帮我们用树的形式进行了规划,非常方便用户记忆和查找。如果没有他,用户只能自己去记录位置然后查找所需文件。
使用文件系统之后,文件系统会将磁盘空间切割为比较小的存储单元(例如4K或者8K等)一般划分成对应4Ksecotor,进行管理。如果出现释放空间产生空洞的情况,文件系统内部会进行空洞和数据的交换,从而生成比较大块的可用磁盘空间。这样从整体来说就极大地提升了磁盘的整理使用率。减少空间浪费。
目前在Linux操作系统中支持很多种文件系统,包括Ext2、Ext4、Btrfs和XFS等,多达几十个文件系统。虽然支持的文件系统种类很多,但从用户层面使用方式无任何差别,用户并不感知其中的差异。对于普通用来说,数据都是组织成上文所述的树状结构。那么这种方式是如何实现的呢?
Linux操作系统对各种文件系统的支持是通过名为VFS的组件实现的,也就是虚拟文件系统(Virtual File System)。如图5所示,VFS作为一个抽象层,为用户提供统一的接口,屏蔽了其它具体文件系统(例如Ext4和Btrfs等)的实现。VFS为用户提供了open、close、read和write等接口。



