linux文件系统的原理讲解,浅谈Linux文件系统原理

学习linux有一段时间了,在学习过程中发现linux支持很多的文件系统,如JFS、ReiserFS、ext、ext2、ext3、ISO9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS

学习linux有一段时间了,在学习过程中发现linux支持很多的文件系统,如JFS、 ReiserFS、ext、ext2、ext3、ISO9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC。那么文件系统到底是什么?怎么来的?我们先简单看一下

1、我们使用的文件系统是怎么来的?

通过高级格式化进行创建文件系统

2、文件系统用来做什么的?

文件系统是用来管理文件,实现按名存取的。

3、文件系统的位置在哪里?

文件系统通常位于内核当中。

4、文件系统所提供什么样的功能?以及这些功能是通过什么来实现的?

文件系统提供文件的创建,打开,删除,修改,读取等功能是通过操作系统的系统调用提供的。

通过这些简单的阐述我们不难看出,文件系统和磁盘的分区格式化是密不可分的,我们简单的说,通常磁盘分区是按照柱面来进行分区,通常磁盘的第0个扇区是不能被使用的,这个扇区被称为MBR(主引导记录 Master boot record),MBR分为三个部分

1、前446个字节是bootloader;

2、之后64个字节称为磁盘分区表,每16个字节来引导一个分区,总共可以创建4个主分区;

3、最后2个字节表示当前磁盘上是否是可引导的,用十六进制数5A来表示是可引导的,否则就表示是不可引导的磁盘分区;

MBR如下图所示

2f10c32bbcd2665fb872391159ea4df2.png

一,文件系统结构的阐述

分区后磁盘有了文件系统,那么文件系统到底是怎么来管理我们的文件的?

1、每个分区的头两个扇区512×2 = 1024字节=1k这个称之为引导块boot block,通常用来引导当前分区上的操作系统。

boot block与MBR的区别:

MBR用来引导整个磁盘上的操作系统,MBR中的程序是用来指明启动哪个分区上的操作系统,

boot block是一旦分区指定以后,这个分区本身还能够必须让这个分区上的操作系统完成加载。

boot block这个空间不一定是每个分区都使用,如果这个硬盘上只安装了一个操作系统,那么其他分区首部的boot block就没有什么实际作用,可能不被使用。

2、索引,紧挨着磁盘块,索引一般存放在磁盘的头部最开始处的空间里面

为了能够完成随机访问和存取功能,需要把物理的空间划分为固定大小的磁盘块,而磁盘块是一个逻辑结构,是把扇区重新进行整合。

每个文件都有一个索引条目,,这个索引条目中标明了当前文件存储在哪些编号的磁盘块上面

索引存放文件的大小,权限,属主,属组,访问(access)、 修改(modify)、改变(change)这三个访问的时间戳以及数据对应的磁盘块编号;但是文件名并不在索引中存放,而真正的数据在磁盘块中存储。

所以说文件的改变有两类改变,一个是文件内容的改变,即改变了磁盘块中的信息,一个是文件属性的改变,即改变了索引中的信息

每个文件的索引条目通常被称之为一个索引节点,index node即inode节点

inode信息本身与文件的内容没有关系,这些称为元数据(MetaData),元数据用来描述文件属性的,与对应文件内容没关系。

每个文件的索引条目inode都有一个编号,称之为inode号,查找文件就要去找对应inode编号的信息。

d9d9f1ae608388bcd5d8fbbf1d3bfe96.png

二、目录与文件系统的关系

目录是什么?目录就是文件的路径映射。为什么这么说?因为目录把文件组织成层次化的结构,下面我们来看下目录到底是什么?

首先目录本身也是个文件,也需要在索引中存放目录的inode号;

其次目录也需要一定的存储空间(一个或多个磁盘块)来存储目录的数据;

既然目录也是文件,那么目录中存储的数据是什么?

通过这个目录可以直接找到的文件的文件名和对应inode的关系以及文件的类型,即目录文件记录的存放当前目录下文件的文件名,inode号,文件类型。

目录文件记录的范围?·        只对其下直接目录文件以及普通文件负责,比如/var下

[root@CentOS6 init.d]# ls -l /var

total 76

drwxr-xr-x.  2 root root 4096 Jan  2 22:42 account

drwxr-xr-x. 12 root root 4096 Jan  2 22:45 cache

drwxr-xr-x.  2 root root 4096 Jan  2 22:45 crash

drwxr-xr-x.  2 root root 4096 Nov 22 20:29 cvs

drwxr-xr-x.  3 root root 4096 Jan  2 22:42 db

drwxr-xr-x.  3 root root 4096 Jan  2 22:42 empty

drwxr-xr-x.  2 root root 4096 Sep 23  2011 games

drwxrwx--T.  2 root gdm  4096 Nov 22 23:54 gdm

drwxr-xr-x. 30 root root 4096 Jan  2 22:42 lib

drwxr-xr-x.  2 root root 4096 Sep 23  2011 local

drwxrwxr-x.  5 root lock 4096 Jan  3 10:27 lock

drwxr-xr-x. 11 root root 4096 Jan  3 09:07 log

lrwxrwxrwx.  1 root root   10 Jan  2 22:38 mail -> spool/mail

drwxr-xr-x.  2 root root 4096 Sep 23  2011 nis

drwxr-xr-x.  2 root root 4096 Sep 23  2011 opt

drwxr-xr-x.  2 root root 4096 Sep 23  2011 preserve

drwxr-xr-x. 26 root root 4096 Jan  3 09:12 run

drwxr-xr-x. 13 root root 4096 Jan  2 22:41 spool

drwxrwxrwt.  2 root root 4096 Jan  2 22:44 tmp

drwxr-xr-x.  2 root root 4096 Sep 23  2011 yp

/var目录的目录文件仅仅只存储这些文件或者目录的文件名,inode号,和文件类型的信息,对于其下面account这个目录中的信息,var目录并不关心

即account下的文件仅仅和account目录有关系,和var目录没有关系

这里特别要说明的是 / (根目录)是一种特殊的文件,是实现自引用的,能够自我找到。

三、系统是如何查找文件的?

上面讲了文件系统和目录之间的关系,那么是文件系统是如何实现对通过文件名来对文件实现查找的,如/var/log/xxxxx.log

1、先找到/ (/是一种特殊的文件,是实现自引用的)在索引中的条目

2、根据/所在索引中的inode号,找到/目录文件存储所对应的磁盘块

3、在/目录文件中找到其下的var目录的目录文件名称,inode号,文件类型

4、根据var目录的inode号去索引中查找var目录文件所存储的磁盘块

5、找到var目录文件存储所对应的磁盘块以后,在找到其下面log目录的目录文件名称,inode号,文件类型

6、根据log目录的inode号去索引中查找log目录文件所存储的磁盘块

7、找到log目录文件存储所对应的磁盘块以后,在找到其下面xxxxx.log的目录文件名称,inode号,文件类型

8、根据xxxxx.log的inode号去索引中查找其文件所存储的磁盘块,这样文件就找到了

所以,我们得到两个结果:

1、我们通过ls -l 查看的时候目录文件通常比较小,这显示的是目录文件所占磁盘块的大小

2、目录删除以后,其下的文件就找不到了

因为查找文件会影响速度,所以第一次按照步骤查找,找到以后缓存在内存中,下次查找时可以提高效率。

6d75b200a25059cc968cd4b4e80de3d2.png

四、linux常见ext文件系统的组织结构

根据上面的内容,我们可以了解到ext文件系统存储组织方式

ext文件系统大致划分为两个部分

1、引导块

2、剩余空间都被划为块组(block group)每个组内块个数相等,每个组内部是自我管理的

a)、bolock group0 这个比较特殊,第1024个字节以后的1024个字节称为超级(superblock)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值