前言

通常而言,对于一块新磁盘我们不是直接使用,而是先分区,分区完毕后格式化,格式化后OS才能使用这个文件系统。分区可能会涉及到MBR和GPT问题。至于格式化和文件系统又有什么关系? 这里的格式化指的是高级格式化,由于每种OS所设置的文件属性/权限并不相同, 为了能够操作这些文件,就需要对partion进行格式化,以满足OS能够利用的“文件系统格式(filesystem)”。

上面说对partion进行格式化,这种说法不严谨。

对于早期技术而言,可以认为Partion与FS是1:1的关系,这两种是等价说法。但是在引入RAID(Redundant Arrays of Independent Drives)和LVM(Logical Volume Manager)后,整个存储概念就被池化,Partion与FS不再是1:1关系,可以认为一个可被挂载的目录就是一个FS。

Ext2脑图

Ext2文件系统

作为Linux上最传统的文件系统,Ext2的很多概念对于理解其他文件系统很有帮助。

Ext2整体结构

结构剖析

Boot Block

也可以称为boot sector,里面存放有boot loader

Superblock

  1. 记录整个 FS相关信息
  2. 备份策略:首个Block Group保存Superblock,后续Block Group保存Superblock备份
  3. 查看命令:dumpe2fs
  4. 包含:
  • block 与 inode 的总量
  • 未用与已用的 inode / block 数量
  • block 与 inode 的大小

  • filesystem 的挂载时间
  • filesystem最近一次写入数据的时间
  • filesystem最近一次检验磁盘 (fsck) 的时间
  • valid bit。0表示FS为被挂载,1表示FS已被挂载

GDT

  1. Group Descriptor Table,块组描述符表。用于存储一个Block Group的描述信息
  2. 查看命令:e2fsck  、dumpe2fs
  3. 备份策略:同Superblock
  4. 包含:
  • 块组中从哪里开始是 inode table
  • 块组中从哪里开始是Data Blocks
  • 块组中从哪里开始是Inode Bitmap
  • 块组中从哪里开始是Block Bitmap
  • 块组中从哪里开始是GDT
  • 块组中从哪里开始是Superblock

Block Bitmap

用于标记block是否使用,0表示未用,1表示已用。

Inode Bitmap

用于标记inode是否使用,0表示未用,1表示已用。

Inode Table

  1. 每个 inode 大小均固定为 128 bytes
  2. 每个文件都仅会占用一个 inode 而已,因此FS能够创建的文件数量与 inode 的数量有关
  3. 寻址Block方式

包含:

  • 该文件的存取模式(read/write/excute)
  • 该文件的拥有者与群组(owner/group)
  • 该文件的容量
  • 该文件atime、ctime、mtime
  • 该文件真正内容的指向

Ext2是索引式FS,几乎可以一次性去除全部block(二级及以上寻址的不能一次性取出),而且几乎不需要磁盘重组

Windows的FAT是按图索骥式FS,不能一次性取出全部Block,而且需要经常磁盘重组

Data Blocks

用于最终放置文件内容数据

支持block大小:1K、2K、4K

注意:

block大小、数量格式化后不再改变

每个 block 内最多只能够放置一个文件的数据,多余空间不退,少了的空间再补充一个block。

Linux磁盘管理——Ext2文件系统的更多相关文章

  1. Linux磁盘管理——日志文件系统与数据一致性

    参考:Linux磁盘管理——Ext2文件系统 数据不一致 上图是Ext2结构图,其他FS结构类似. 一般来说,我们将 inode table 与 data block 称为数据区:至于其他例如 sup ...

  2. linux 磁盘管理与文件系统

    一.磁盘分区的意义 磁盘分区就是为了将磁盘分成不同的逻辑区域,每个分区可以有不同的文件系统 二. 磁盘分区是按照磁盘的柱面进行分区的,由于盘片在转动时的角速度都是一样的,所以磁头在最外层的磁道上读取信 ...

  3. 详解Linux磁盘管理与文件系统

    磁盘基础 硬盘结构 物理结构 盘片:硬盘有多个盘片,每盘片 2 面. 磁头:每面一个磁头. 数据结构 扇区:磁盘上的每个磁道被等分为若干个弧段,这些弧段便是硬盘的扇区. 硬盘的第一个扇区,叫做引导扇区 ...

  4. Linux磁盘管理与文件系统

    文章目录一.硬盘结构二.MBR与磁盘分区表示三.磁盘分区结构四.文件系统类型●1.XFS文件系统●2.SWAP,交换文件系统●3.Linux支持的其他文件系统类型五.命令部分--检测并确认新硬盘●1. ...

  5. Linux磁盘管理——虚拟文件系统

    前言 Linux支持众多文件系统,包括: 传统文件系统:ext2 / minix / MS-DOS / FAT (用 vfat 模块) / iso9660 (光盘)等等:日志式文件系统: ext3 / ...

  6. Linux磁盘管理——directory tree与mount point

    参考:/sys 和 /dev 区别 Linux磁盘管理——虚拟文件系统 Directory tree Linux内的所有数据都是以文件的形态来呈现的,所以整个Linux系统最重要的地方就是direct ...

  7. linux基础之磁盘管理与文件系统

    上面一篇文章(https://www.cnblogs.com/ckh2014/p/7224851.html)介绍了硬盘的基本结构,那么一块磁盘如何应用取存储数据呢? 它的步骤是这样的: 识别硬盘 -- ...

  8. Linux 磁盘管理

    Linux磁盘管理好坏管理直接关系到整个系统的性能问题. Linux磁盘管理常用三个命令为df.du和fdisk. df:列出文件系统的整体磁盘使用量 du:检查磁盘空间使用量 fdisk:用于磁盘分 ...

  9. linux磁盘管理系列-软RAID的实现

    1 什么是RAID RAID全称是独立磁盘冗余阵列(Redundant Array of Independent Disks),基本思想是把多个磁盘组合起来,组合一个磁盘阵列组,使得性能大幅提高. R ...

随机推荐

  1. Laya页面嵌套和Scene.destory导致的Bug

    Laya2.1.1.1 参考: 预设使用 Laya给出了相同模块,逻辑代码也相同情况下,使用页面嵌+runtime的使用方案.但是该方案和Laya.Scene.open,Laya.Scene.dest ...

  2. KAFKA:如何做到1秒发布百万级条消息

    http://rdcqii.hundsun.com/portal/article/709.html KAFKA是分布式发布-订阅消息系统,是一个分布式的,可划分的,冗余备份的持久性的日志服务.它主要用 ...

  3. Linux下用dd命令测试硬盘的读写速度

    一.测试写速度:   time dd if=/dev/zero of=/tmp/test bs=8k count=1000000 测试结果:565 MB/s 二.测试读速度:   time dd if ...

  4. layui父页面获取子页面数据

    var doc = layero.find('iframe')[0].contentDocument; var test= $(doc).find("input[name='test']&q ...

  5. ubuntu12下安装unixODBC(mysql)

    转自:https://blog.51cto.com/dreamylights/1321678 1. 需要的包 unixODBC源码包unixODBC-2.2.14.tar.gz mysql 驱动 my ...

  6. redhat7.6Linux安装Oracle19C完整版教程

    首先安装配置虚拟机,见博客https://www.cnblogs.com/xuzhaoyang/p/11264563.html 然后配置IP地址,见博客https://www.cnblogs.com/ ...

  7. Qt 自定义QTabWidget

    思路: QTabWidget的特点:点击不同的选项卡显示不同的窗口.可以将QTabWidget分成两部分: (1).选项卡:点击时要知道点击的是哪个选项.则需要将选项卡和窗口的信息存起来,点击时去这个 ...

  8. .Net Core 注入学习——注册服务

    解析 .Net Core 注入——注册服务发表于:2017-10-23 10:47 作者:行走即歌 来源:51Testing软件测试网采编字体:大 中 小 | 上一篇 | 下一篇 |我要投稿 | 推荐 ...

  9. NetworkStream的使用(TcpClient,TcpListener)

    1.在tcp连接中,Networkstream可以重复读取,重复写入,不用关掉连接. 2.关掉NetworkStream会自动关闭掉Tcp连接 3.NetworkStream不需要使用Flush方法, ...

  10. Thomas Brinkhoff 基于路网的移动对象生成器的使用[第二版]

    Thomas Brinkhoff 基于路网的移动对象生成器的使用 Thomas Brinkhoff 基于路网的移动对象生成器的使用 相关操作的说明 相关文件的说明 运行 导入eclipse后运行时选择 ...