认识EXT2文件系统

认识EXT2文件系统

说明:红色为重要知识点和名词,蓝色为注释,黄色为Linux命令;

 

硬盘组成与分区

1.      圆形的盘片 #主要用来记录数据的部分

2.      机械手臂和机械手臂上的磁头 #用来读写盘片上的数据

3.      主轴上的马达  #可以转动盘片,让机械手臂的磁头在盘片上读写数据

4.      扇区  #最小的物理存储单位,每个扇区为512bytes

5.      柱面 #就是扇区组成的一个圆,柱面是分区的最小单位

6.      第一个扇区最重要,有硬盘主引导记录(MBR,446bytes)及分区表(64bytes)

7.      为什么只可以分4个主分区或扩展分区,因为一个分区需要一个分区表,一个分区表占64bytes,所以最多可以有4个主分区或扩展分区;

8.       扩展分区可以再分逻辑分区,而能被格式化的只有分区与逻辑分区,扩展分区无法格式化;

9.      逻辑分区数量:Linux中,IDE硬盘接口的最多有59逻辑分区(5—63号),SATA硬盘则有11个逻辑分区(5号到15号);###关于IDESATAATASCSI接口,请看注1

文件系统特性

1.      分区格式化 #格式化就是在磁盘中写入文件系统,现在Linux常用的是Ext4格式

2.      文件系统的运行 :文件系统通常会将这两个部分的数据分别存放在不同的块,权限与属性放置到inode中(一个文件占用一个inode),实际的数据放到datablock 中,超级块(superblock)会记录整个文件系统的整体信息:inode、block的数量、使用量、剩余量;

3.      数据访问的方式:通过先访问inode然后再读出block的内容,使用的是索引式文件系统;

4.      磁盘的碎片整理:整理碎片的原因是文件的写入太过于离散了,此时文件的读取性能将会变得很差。

Linux的EXT2文件系统(inode)

1.      文件系统将inodeblock初始是就规划好了,如果想要改变就需要格式化分区;

2.      为什么分区中要有多个块组(block  group):因为文件系统太大的时候,因为inode和block的数量太大不容易管理,每个块组中都有独立的inode、    datablock、superblock系统;

3.      为什么可以一个硬盘上可以安装多个系统(也就是多重引导的环境):文件系统最前面有一个启动扇区,这个启动扇区可以将不同的引导装载程序安装到别 的文件系统最前端,不用覆盖整块硬盘的唯一MBR;

对于每个组块,有6个主要部分

a.  data block 1. 存放数据的地方,EXT2支持block的大小有1kb2kb4kb注2;

    2. 每个block可以放一个文件数据;

b. inode  table: 1. 记录了文件的访问模式、所有组、大小、创建和改变的时间、指向的内容

                  2. 每个inode大小为128bytes,每个文件只会占用一个inode,因此文件系统能够创建的文件数量与inode的数量有关;

               3. 文件系统将inode记录的block号码的区域定义为12个直接、一个间接、一个双间接与一个三间接记录区

               4. 为什么需要将inode记录block号码的区域分开:因为一个inode的大小为128bytes,而inode记录一个blocks需要4bytes,当文件有400M时, 就需要10万*4bytes的空间,远远大于128bytes,所以采用inode不同的记录区;

               5. 为什么文件系统采用1kblock方式最大的单一文件为16GB:12+256+256*256+256*256*256(K) = 16GB;

c. superblock   1. 记录block与inode的总量,未使用与已使用的inode、block数量,文件系统挂载的时间,最近写入数据的时间

                                     2.validbit,如果此文件系统被挂载,valid bit0,否则1

                                     3.superblock的大小为1024bytes;可以使用命令dumpe2fs查看;

        d. 如何使用dumpe2fs查看superblockdf #查看当前挂载的设备

                                                          dumpe2fs /dev/磁盘设备名

目录树

1.   如果在文件系统建立一个目录,Ext2文件系统会分配一个inode与至少一块的block来记录该目录的相关权限和属性,并记录分配到的那个block块的号码;如果文件文件过大inode不够记录这个文件的相关数据,就会再分配一个block块给inode;

查看目录内的文件所占用的inode的号码命令:

    ls –li

查看指定目录文件所占用的block块命令  

  ll –d /  /bin   /boot

2.   我们在新建一个文件时文件系统会给我们分配一个inode与相对应文件大小的block数量,如果文件大于12个block块的话,文件系统就会多给一个block来作为块号码的记录;

3.   文件系统最上层的inode号码是由2开始的,所以一般根目录的inode为2;

4.   文件的读取过程

例如我想要读取/etc/passwd这个文件

         先使用命令:

ls –di /  /etc  /etc/passwd  #查看各目录的inode

根据挂载点的信息找到/dev/hdc2的inode号码为2,然后找到/的inode读取里面的权限和/的inode号码,然后再根据inode号码在向下找,直到读取这个文件;

文件的日志文件系统

1.      新建一个文件,先确定用户对于添加文件的目录是否具wx的权限

 再根据inodebitmap找到没有使用的inode号码,并将新文件的权限/属性写入;

 根据blockbitmap找到没有使用中的block号码,将实际的数据写如进去更新inode的block指向;

 同步更新inodebitmap 与 block bitmap,并且更新superblock的内容。

2.      inode table称为据存放区域,superblock、block bitmap、 inode bitmap等区称为中间数据

3.      日志文件系统:他的用处就是为了操作系统、硬件造成的文件写入错误,减少数据检查的时间

 预备:当系统写入一个文件是,会先在日志记录块中记录某个文件准备写入的信息。

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

 结束:完成数据与metadata的更新后,在日志记录块当中完成盖文建的记录。

处理文件在内存中的活动

1.      为了解决文件在磁盘的写入速度比内存慢的多的问题,经常需要耗时在等待读取与写入;Linux采取了异步处理的方式;

 一个文件加载到内存中,如果该文件没有被改变,将会设置为(clean);如果有改动,内存的数据会被设置为Dirty,此时的操作都在内存中,并没有写入到磁盘中,系统会不定时的加载到内存中;

2.      系统会将常用的文件数据放到主存储器的缓冲区,加快文件系统的读写速度;

3.      若正常关机时,关机命令会主动调用sync将内存的数据写入磁盘中。

4.      为什么强制关机会造成系统的崩溃:因为不正常的关机,如断电、死机、等其他原因造成内存中的数据没有回写到磁盘中,造成重新启动系统后会花很长时间去 检验磁盘,若一些重要文件没有写入到磁盘中,比如操作系统的引导文件等丢失,造成系统崩溃;

挂载点的意义

1.      文件系统与目录树结合的操作称为挂载,就是为了让文件系统链接到目录树才能被我们使用。

2.      挂载点一定是目录,该目录是该文件系统的入口;

3.      查看目录的的inode号

命令:ls –lid /  /boot  /home

 文件系统最顶层的,目录inode一般为2号;

4.      为什么一个文件需要占用一个inode:因为我们可以通过判断inode号码来确认不同的文件;

Linux支持的文件系统与VFS

传统的文件系统:ext2/minix/MS-DOS/FAT/ios9660

日志文件系统:ext3/ReiserFS/Windows’NTFS/IBM’Sjfs/SGL’Sxfs

网络文件系统:NFS/SMBFS

如何查看Linux支持的文件系统   

命令:ls –l /lib/modules/$(uname -r)/kernel/fs

如何查看系统中加载的文件系统:       

  命令:cat /proc/filesystems

VFS(虚拟文件系统):他在内核中,是内核的一个功能,为了管理文件系统;

管理过程:1. 用户进程;

                    2.到内核中,系统调用界面,然后使用VFS,操纵文件系统,到缓存中,在到设备驱动程序;

                    3.硬件层,磁盘设备控制器;

 

 

总结所有的分区、inode、目录树、block块组,都是为了更快更方便的操作(查找,读取,写入)

注释

注释1:IDE:IDE接口,也称之为ATA接口;是曾经主流的硬盘接口,也是光储类设备的主要接口

      SCSI: 小型计算机系统接口一种用于计算机和智能设备之间(硬盘、软驱、光驱、打印机、扫描仪等)系统级接口的独立处理器标准。

      SATA:SATASerial ATA的缩写,即串行ATA。它是一种电脑总线,主要功能是用作主板和大量存储设备(如硬盘及光盘驱动器)之间的数据传输之用。

      ATA: ATA/ATAPI接口的驱动器也习惯上叫增强IDEEIDE)接口驱动器,它是在IDE接口上的扩展。

2.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值