linux文件系统简介

        最近在看鸟哥linux私房菜,其中正好看到linux的文件系统,本文就简单对linux的文件系统进行一个简单的介绍。

        首先,在理解文件系统概念之前首先需要知道文件系统是个什么东西,简而言之,文件系统就是在存储设备上组织文件的一种机制,是操作系统用于确定位于存储设备上的文件的一种方法和数据结构。而目前主流的操作系统包括如下几个:NTFS就是Windows2000以后Window的文件系统;FAT是Windows3.x和MS-DOS一直使用的文件系统;EXT2/EXT3为linux常用的文件系统;另外还有JFS,ReiserFS,XFS等这里只简单了解下,其他文件系统就不赘述了。下面我们就详细介绍EXT2/EXT3文件系统。

       一.EXT2文件系统主要概念

       我们都知道linux的文件不仅要存放文件的实际数据还要存放文件的权限,文件属性等其他数据,存放的时候文件系统选择将这两个部分分开存储。实际数据存储到data block中,而权限属性等数据存储到inode中,另外还有super block来存储data block,inode的使用情况;下面我们看下鸟哥对这三个概念的简单说明:

             1.super block:记录文件的整体信息,包括inode block的总量,使用量,剩余量,以及文件系统的格式和相关信息;

             2.inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的block号码;

             3.block:实际记录文件的内容,若文件太大时,会占用多个block;‘

      linux采用的时索引式的文件系统,当你去查找一个文件时其实只需要找到文件对应的inode,inode中记录了实际记录文件数据的block号,也就是说找到了inode号码就相当于找到了文件,数据的读取方式如下图:

      

     二.block group(块组)

        上面我们已经知道super block,inode,和block的概念,那么linux是否只有一套super block,inode,和block呢?显然不是的,我们先假设只有一套,当要使用存储设备时首先对其进行格式化,如果只有一套的话,在格式化的时候,super block,inode和block的数量就已经决定了,那么如果你再想增加这三个的数量的时候怎么办?另外如果文件超大时例如超过几百GB时,只使用一套inode,block,首先你就需要查找数量庞大的inode,再根据inode的数据去查找block的数据,这么做明显不利于管理,所以EXT2在格式化的时候是将磁盘区分为多个块组的,每个块组有自己super block/inode/block,这就相当于你买了个柜子,上面有很多抽屉一样,每个抽屉都有自己独立的空间,有自己的把手,块组主要分为以下6个内容:      

 

1.data block

data block就是盛放文件实际内容的地方,有1KB,2KB和4KB三种大小,data block格式化后就是固定的,不能再次增加了,而且最多只能盛放一个文件的数据,一个大文件可以使用多个data block来盛放,而如果文件小于一个data block的大小,那么data block剩余的容量就只能浪费了,不能再被其他文件使用;

2.inodetable

主要记录了文件的权限与属性,其中包括访问模式(rwx)所有者,ctime/atime/mtime,文件指向的block号码,文件大小;inode大小为固定的128byte,并且每个文件只会使用一个inode,当一个用户读取文件时在查找inode时就会对用户的权限进行校验;

因为inode大小为固定的128byte而且每个文件只会使用一个inode,那么如果一个文件使用大量的block的时候怎么办?inode固定大小的话能存储的block号码就是固定的,也就是说相应的文件使用的block就只能小于inode固定大小存储的block号码的容量,然而事实并不是这样的,inode是有12个直接,一个间接与一个三间接如下图:

3.Superblock

Superblock是记录整个文件系统信息的地方,相当于军队的总部的感觉,它主要记录了block/inode总量,使用量,剩余量,大小,文件系统挂载时间等文件系统的相关信息。

4.File system Description

记录block group的开始与结束的block号码,以及说明每个区段介于那个block号码之间。

5.block bitmap

记录哪些block被使用,哪些未被使用

6.inode bitmap

记录哪些inode被使用,哪些未被使用

        三.目录的存放与日志

1.我们知道文件是存放在目录下的,目录用来记录文件名,实际数据是由文件的inode记录的block存储的,那么目录又是怎样被存储的呢?其实,EXT2文件系统在新建目录时就会分配给目录一个inode和一个block,inode用于记录目录的相关权限和属性,而block用于记录目录下的文件名和文件占用的inode号码数据。

2.为了解决数据不一致问题引入了日志文件系统,步骤如下:

   a.预备:当系统要写入一个文件时,会先在日至记录块中记录某个文件准备要写入的信息;

   b.实际写入:开始写入文件的权限与数据,开始更新meta data的数据;

   c.完成数据与meta data的更新后,在日至记录中完成该文件的记录;


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值