如何将文件系统(二):分区、格式化数据结构成?

摘要:为什么存储设备需要分区格式化之后才能被使用?分区与格式化各的目的又是什么?
分区是为了给硬盘提供逻辑结构,格式化是为了给分区提供可以用于存储数据的格式。
liwen01 2024.01.28 前言 生活中,我们买回来的SD卡、TF卡、硬盘等存储设备一般是可以直接使用,如果要改变存储设备上的文件系统格式,我们一般直接在电脑上右键格式化就可以实现。 买回来能直接用,是因为存储设备在出厂前厂家就已经做了分区和格式化操作。 为什么存储设备需要分区格式化之后才能被使用?分区与格式化各的目的又是什么? 分区是为了给硬盘提供逻辑结构,格式化是为了给分区提供可以用于存储数据的格式。 (a)分区 (Partitioning): 分区是将硬盘划分成一个或多个逻辑区域的过程。每个分区被视为独立的存储设备,有自己的文件系统和存储空间。 这样做的目的有: 方便数据组织和管理 减少文件碎片,提升访问速度 提高系统安全和稳定 支持多操作系统 可以简化备份和恢复过程 (b)格式化 (Formatting): 格式化是在分区上创建文件系统的过程。格式化过程,主要是创建文件系统的结构和元数据信息。 格式化为分区提供了一个可读写的文件系统,使操作系统能够有效地与硬盘交互。 (c)嵌入式设备分区方式 在不同的设备上,分区方式是不一样的,在PC机上,主要有MBR、GPT、动态磁盘卷三总方式 在嵌入式设备上,一般它们并没有明显的分区数据结构,比如在嵌入式Linux系统上, 一般是通过boot的CONFIG_BOOTARGS参数配置定义: #defineCONFIG_BOOTARGSBOOTARGS_COMMON"mtdparts=jz_sfc:256K(boot),352K(tag),5M(kernel),6M(rootfs),2560K(recovery),1140K(system),512k(config),16M@0(all)" 它将一个16M的flash分成boot、tag、kernel、rootfs、recovery、system、config 七个分区,通过各分区的大小定位到各分区的绝对位置。 相比较而言,PC的分区方式会复杂很多,这里我们主要介绍PC上的MBR和GPT分区方式,下面是几个会用到的英文缩写。 缩写英文中文 MBR Master Boot Record 主引导记录 GPT GUID Partition Table 全局唯一标识符分区表 DPT Disk Partition Table 磁盘分区表 MBL Master Boot Loader 主引导加载程序 UEFI Unified Extensible Firmware Interface 统一可扩展固件接口 EBR Extended Boot Record 扩展引导记录 (一)MBR分区数据结构 PC机上的分区方式主要有MBR、GPT和动态磁盘卷三种,用得比较多的是MBR和GPT分区方式。 关于MBR 和 GPT 的分区介绍,网上已经有很多很详细的介绍,这里我尽量用比较简单的方式来介绍一些比较重要的概念。 (1)MBR 分区方式 MBR分区的数据信息是存储在磁盘的第一个扇区,也就是第0扇区,存储设备一个扇区大小一般为512Byte。 实际使用MBR方式分区,在没有扩展分区的条件下,分区只需要操作存储设备的第0扇区512个字节就可以了。 通过winhex我们可以看到第0扇区的详细信息,它主要分为4部分: MBL 主引导程序代码 磁盘签名 DPT 分区表 结束标志 (2)MBL主引导程序代码 引导程序占用其中的前440字节,其地址在偏移0~0x1B7 首先需要清楚的一点是:这440个字节是一段程序 这段程序的功能是: 先将第0扇区的512字节复制到内存的一个安全区域去执行 判断第0扇区的最后两个字节是否为"55 AA",如果不是,提示出错 查找分区表中是否有活动分区 如果有活动分区,判断活动分区所在的扇区位置 将活动分区的引导扇区读入内存中,并判断数据是否合法 如果活动扇区数据合法,就将引导权交给活动扇区 活动扇区去引导操作系统启动,MBR引导程序退出 活动分区 一个磁盘中只能有一个活动扇区,活动分区中包含引导加载程序,它负责引导计算机启动操作系统。 活动分区是通过分区表项的第一字节来判断,分区表项的第一个字节,只能是0x00或者0x80,,0x00 表示不可引导的非活动分区,0x80表示为可以引导的活动分区 (3)磁盘签名 它是磁盘格式化时写入的标签,如果把这个位置的数据清除,系统会提示磁盘未初始化 (4)DPT磁盘分区表 分区表结构: MBR磁盘分区表的结构是固定的,总共包含4个表项,每个表项16个字节。 每个表项对应一个主分区,其中可以存储主分区或者扩展分区的信息。
阅读全文