文件系统概述和EXT2文件系统

文件系统概述和EXT2文件系统

文件系统概述

常用的文件系统有windows98前的FAT、windows2000后的NTFS、linux的Ext2/3/4、SGI的XFS文件系统等

对于传统的文件系统而言,一个分区槽只能格式化为一个文件系统,但是目前由于LVM与软件磁盘阵列技术的出现,使一个分区可以对应多个文件系统,故以下关于文件系统的讨论都不表示针对一个分区了,只是介绍文件系统的特性。

linux操作系统会将文件权限、文件属性存在inode中,一个文件对应一个inode,而文件的实际数据会被放入data block中,要读一个文件首先找到该文件的inode,就能迅速找到block,inode中记录了文件数据的实际放置block,这种读取方式就是索引式文件系统:

而光盘采用的FAT文件系统没有inode的存在,此时一个文件的存储依赖block之间的联系,读完一个block后才能找到下一个block,如果block很分散读取速度很慢:

所谓的碎片整理就是因为文件写入的block太分散,导致系统效率不高采取的措施。如果文件太过离散就会降低读取性能,这也是每个分区不宜设置过大的原因。

EXT2文件系统

ext2系统在格式化的时候分为多个区块群组(block group),然后每个区块群组都有独立的inode和block系统,这是为了处理大量inode和block而做出的应对措施。文件系统示意图如下:

每个文件系统都有一个启动扇区(boot sector),一个block group对应一套独立系统。

data block

这个区域是文件真正数据存放的位置,ext2所支持的block大小有1K/2K/4K,block本身也记录block编号,所以block越大可记录的编号越多,文件系统最大文件个数也就越多,同时一个文件可占用的block也越多,文件系统能容纳的最大文件限制也越大,因block大小产生的文件系统限制:

一个文件只能占用整数个block,若文件小于block,剩余容量也不能被使用了,因此如果linux平时处理的都是小于1K的文件的话,尽量设置block为1K,这样能最大程度利用磁盘空间,如果平时处理的文件较大,就适当提高block大小,以免block号码存储过多反而导致系统浪费。

ll命令查看文件信息时可以发现文件大小总是1024的整数倍,这就是因为一个文件只能占用整数个block的缘故。

inode table

每个文件都有一个inode,这里记录的是文件的权限、所有者和所属组、容量、ctime、atime、mtime和block编号。此外每个inode大小是固定为128bytes的(ext4中可以设置为256bytes),因为大小固定,所以一个inode记录的block就是有限的,linux巧妙的用多级索引的方式让一个inode存尽可能多的block:

由上图所示,一个inode会有一部分直接指向block的区域,还存在间接、双间接和三间接,也就是inode指向的block不是存储文件数据的,而是存储其他block编号的,就这样极大的扩展了一个inode可指向的block数。

对ext2来说,一个inode最多可有12个直接指向block的区域,1个间接,1个双间接和1个三间接:

直接指向的数据块一共12K,1个间接可以指向的数据块共256*1K(每个block号码大小为4bytes,相当于一个1K的block最多能存256个block号码),双间接指向的数据共256*256*1K,三间接为256*256*256*1K,加起来一共16GB,也就是block大小为1K时文件系统能容纳的最大文件大小。

如果一个文件100K,block大小为4K,那么会分配100/4+1=26个block,因为inode只能有12个直接指向,需要多分配一个block来记录剩余的block号。

superblock

它是存储文件系统相关信息的位置,它记录了block和inode的总量,使用情况,大小,挂载时间等。一个文件系统只有一个superblock,它一般都在第一个blockgroup中,其他的blockgroup中即使有superblock也仅仅是备份而已。

filesystem description文件系统说明

它记录了该blockgroup的起始和结束的block号码,以及记录每个区段的superblock、datablock等具体在那些block之间。

block bitmap区块对照表和inode bitmap(inode对照表)

block bitmap记录了哪些block是空的,inode bitmap记录了哪些inode是未使用的。当新增文件时要修改这两个区域,此外还需要修改superblock,所以这些经常变动的数据被称为metadata中介数据

dumpe2fs

这个命令可以查询文件系统相关信息,使用前先用blkid命令查看所有被格式化的装置,如/dev/vda1等,然后用dumpe2fs命令后加装置名即可查看该文件系统信息,主要包括superblock信息、每个block group的信息等。但是对于CentOS7来说,预置的文件系统是xfs,需要自己切换成ex4后才能查看。

目录树

目录是一种特殊的文件,目录会分配到一个inode和至少一块block,inode记录目录权限和属性,以及目录的block号,而block记录在这个目录下文件的名称和被该文件占用的inode号。

由上可知,目录的inode并不记录目录下的文件名,而是block在记录目录下的文件名,只有进入block中才能对目录下文件进行更名/新增/删除,所以目录的w权限可以对其中文件更名/新增/删除。

读取一个文件/etc/passwd的流程:

通过挂载点信息找到inode号码为128的根目录inode(对XFS文件系统来说,最顶层的挂载点一般inode号为128),进入其中读取根目录的block。然后找到etc/的inode,进而找到etc/的block,然后在该block中找到/etc/passwd的inode,通过inode找到他的block读取数据。这个过程中每次找到inode有相应的r和x权限才能进入目录进行下一步操作。

原文地址:https://www.cnblogs.com/shizhuoping/p/12539111.html

时间: 2024-10-17 20:09:28

文件系统概述和EXT2文件系统的相关文章

linux ext2 文件系统学习

Linux  ext2文件系统理解 硬盘组成: 硬盘由多个圆形硬盘片组成.按照硬盘片能够容纳的数据量分为单盘和多盘.硬盘的数据读取主要靠机械手臂上的磁头,在机械手臂上有多个磁头.机械手臂不动硬盘旋转一周划过的路径就是磁道.由于在一块硬盘上有多个硬盘片重叠放置,所以在硬盘旋转的时候在不同硬盘片上画出了多个相同的磁道,这些相同的磁道组成了柱面.柱面是分区的最小单位.由圆形向外画直线又可以将磁道划分为扇区,扇区是数据存储的最小单位,一个扇区的大小约为512字节. 磁盘容量 = 柱面 * 磁头 * 扇区

chapter8:Linux磁盘与文件系统管理之(1)认识Ext2文件系统

8.1认识EXT2文件系统 8.1.1 硬盘的组成与分区 8.1.2 文件系统的特性 8.1.3 Ext2文件系统(inode) 8.1.4   与目录树的关系 8.1.5   Ext2/Ext3文件的访问与日志功能 8.1.6    Linu文件系统的操作 8.1.7    挂载点 8.1.8    其它Linux支持的文件系统与VFS

文件IO详解(一)---ext2文件系统详解

http://www.cnblogs.com/biyeymyhjob/archive/2012/07/26/2609649.html 讲解ext2整体的文件布局 http://www.cnblogs.com/peon/archive/2011/06/22/2086470.html 用实际磁盘中的数据来印证ext2文件系统的布局 磁盘存储数据的最小单元是扇区(Sector):ext2文件系统存储结构的最小单位是块(Block). ext2文件系统中文件的物理存储结构有三个基本组成部分:superb

JFS 文件系统概述及布局分析

JFS 文件系统概述及布局分析 日志文件系统如何缩短系统重启时间 如果发生系统崩溃,JFS 提供了快速文件系统重启.通过使用数据库日志技术,JFS 能在几秒或几分钟之内把文件系统恢复到一致状态,而非日志文件系统却要花上几小时甚至几天才能完成.本白皮书对 JFS 体系结构作了概述,并且描述了可在 developerWorks 网站上找到的 JFS 技术的设计特性.潜在限制以及管理实用程序. 日志文件系统 (JFS) 提供了基于日志的字节级文件系统,该文件系统是为面向事务的高性能系统而开发的.它具有

Linux的Ext2文件系统(Inode&Block)详解

前述:Linux系统管理员很重要的任务之一就是管理好自己的磁盘文件系统,每个分区不可太大也不可以太小,太大会导致磁盘容量的浪费,太小会导致产生的文件无法存储的问题.在Linux里面文件是由两部分数据组成,一部分是metadata,另一部分是data.那么这些数据都存放在文件系统的什么地方呢?这就让我们必须得了解文件系统的Inode与Block的基本原理了,而Linux最传统的磁盘文件系统使用的是Ext2,所以我们了解下它的内部原理. 第一部分:磁盘的组成和分区(基础) 磁盘的机械部分: 1.圆形

Linux 下EXT2文件系统 —— 如何将蚂蚁和大象优雅的装进冰箱里

这一阵子真是偷懒,无时无刻不和自己身体中的懒癌做斗争.最终我还是被打败了,星期天两天几乎都是荒废过去的,在空闲的时候实际上我内心也是有点焦虑的,不知道去怎么度过这时间.学习吧又不想学习,看电视娱乐吧也没有心情.在这种状态中,我度过了星期天,到了今天我才趴在窗扇看了一会linux.这一部分之前也看过,不过是走马观花式的看,并没有投入精力.今天看了下,发现其实windows的文件系统和linux还是有很多不同的.从设计的角度上,linux的文件系统似乎更加聪明,看完这部分,我也更喜欢linux了.

ext2文件系统

文件系统特性: 磁盘分区完毕后还需要进行格式化,因为每个操作系统所设定的文件属性.权限并不相同.比如Windows98是采用的FAT或FAT16,Windows2000后才有了NTFS,Linux正统系统则为ext2这一个. 传统的磁盘与文件系统之应用中,一个分割槽(partition)只能够被格式化成为一个文件系统,但由于新技术的产生,比如LVM.磁盘列阵(software RAID),这些技术能够将一个分割槽格式化为多个文件系统(例如LVM),也能将多个分割槽格式化为一个系统. 文件系统之运

Linux 文件系统及 ext2 文件系统

linux 支持的文件系统类型 Ext2: 有点像 UNIX 文件系统.有 blocks,inodes,directories 的概念. Ext3: Ext2 的加强版,添加了日志的功能.支持 POSIX ACL(Access control Lists,访问控制列表) . Isofs(iso9660): CDROM 文件系统. Sysfs:  基于 ram 的文件系统,起始于 ramfs.用于导出终端用户可以简便使用的内核对象(kernel objects). Procfs: proc 文件系

EXT2 文件系统

对文件系统而言,文件仅是一系列可读写的数据块.文件系统并不需要了解数据块应该放到物理介质上什么位置.这些都是设备驱动的任务.无论何时,只要文件系统需要从包含它的块设备中读取信息或数据,它就将请求底层的设备驱动读取一个基本块大小整数倍的数据块.EXT2文件系统将它所使用的逻辑分区划分成数据块组.每个数据块组都将那些对文件系统完整性最重要的信息复制出来,同时将实际文件盒目录看做信息与数据块. 罗即文件系统管理的是一个逻辑空间,这个逻辑空间就像一个大的数组,数组的每个元素就是文件系统操作的基本单位——