Linux---硬盘管理
文章目录
- 前言
- 一、pandas是什么?
- 二、使用步骤
- 1.引入库
- 2.读入数据
- 总结
一.硬盘概述
物理结构
硬盘一般由多个盘片组成,每个盘片有正两面,每个盘片都对应一个读写磁头。
下图显示的是一个磁盘盘面,盘面中一个个灰色的圆圈就是一条条磁道,从圆心向外画直线可以将磁道划分为若干个弧线,这些弧线就是扇区(绿色部分) ,扇区是磁盘的最小组成单元(512字节)
硬盘通常由一组磁盘组成,每个盘面被划分为相等数量的磁道,从外向内磁盘编号从0开始递增,具有相同编号的磁道组成一个柱面。
读写过程
系统将文件存储到磁盘上时,按柱面,磁头,扇区,即最先将文件存储到第一个盘面的编号“0”磁道的所有扇区,然后是同一柱面的第二个盘面的磁道,一个柱面存储满之后进入下一个柱面,直到把内容全部写入硬盘。这种有序的方式能够提高硬盘的读写速率
分区结构
我们在Linux下通常使用两种分区结构:MBR/GPT
MBR分区结构
通常将硬盘的第一个磁盘的“0”号磁道的第一个扇区称为MBR扇区,也称为主引导扇区。
MBR扇区由主引导程序(446字节),主分区表(64字节)结束标志(2字节)组成;其中引导程序负责在系统启动时加载和启动操作系统,分区表记录了磁盘信息)。
CHS寻址方式
MBR分区结构采用CHS(32位)寻址方式,原理如下:
- 确定柱面:首先,硬盘控制器根据要访问的数据的柱面号,移动磁头到相应的柱面位置。这个步骤是机械运动,也是硬盘读写操作中最耗费时间的一步。
- 确定磁头:一旦磁头到达指定的柱面位置,硬盘控制器就会选择正确的磁头来读取或写入数据。这个步骤决定了数据位于哪一张盘片的哪一面。
- 确定扇区:最后,硬盘控制器会在选定的磁道上找到指定的扇区,并读取或写入数据。这个步骤是通过电子方式完成的,速度相对较快
硬盘容量=磁头数×柱面数×扇区数×512字节=2^32*521≈2TB
下面重点讲解一下分区表和分区的概念。
分区表
分区表中记录了磁盘信息(包括分区的起始和结束位置、分区的大小,文件类型等),由于每个分区的记录信息需要占用16个字节,而分区表大小为64字节,因此分区表中只能记录4个主分区的信息;实际业务场景中4个主分区显然不够用的,想要得到更多的分区,我们可以将一个或多个主分区设置为扩展分区,然后在扩展分区上划分出多个逻辑分区即可。
GPT分区结构
GPT分区结构采用64位寻址方式,支持的最大硬盘容量达到了1,048,576TB比MBR更大
GPT的分区表占用32个扇区(编号2-33)按照每个扇区占用512个字节,32个扇区共占用16384个字节,而每个分区表项(记录分区信息的表)占用128个字节,因此GPT分区表共可容纳128个分区表项,即可创建128个主分区,实际上,扇区大小也可以是4096个字节, 此时分区表项的个数将远程128,同时GPT支持分区表项的扩展,因此理论上GPT分区结构可以创建无数个主分区。
保护MBR:
保护MBR位于“0”号扇区,该扇区包含磁盘签名0xEE(表示该硬盘使用GPT分区),MBR分区表(含一个空分区表项),结束标志。
GPT头:
GPT头位于1号扇区,创建磁盘时自动生成该扇区,其作用是定义分区表大小和位置。
分区表:
分区表位于2-33号扇区,共容纳128个分区表项,包含分区区域起/尾信息,分区名字/类型等息。
分区区域:
该区域供用户存储数据等,用户可使用的区域。
文件系统
文件系统简单来说负责将用户数据存储到磁盘中,还提供了用户和系统程序访问这些数据的接口。文件系统通过以下方式实现文件的存储:
- 格式化存储介质:在使用之前,文件系统需要对如硬盘进行格式化,以清空原有数据并为文件系统分配必要的数据结构。这些数据结构用于管理硬盘上的空闲空间和已分配空间。
- 文件分配:当用户创建一个文件时,文件系统会根据文件大小来分配足够的空间,并更新相应的数据结构以记录文件的位置和属性信息。这通常涉及到在磁盘上找到一个连续或分散的空间区域来存储文件数据。
- 数据写入:当用户或程序向文件写入数据时,文件系统会将数据从内存缓存写入到磁盘上的相应位置。这通常涉及到将数据拆分成适当大小的数据块,并依次写入到磁盘的磁道中。
- 目录管理:文件系统还维护目录结构,以记录文件和目录之间的层次关系。这使得用户可以通过目录路径来方便地访问和操作文件。
Linux文件系统会为每个文件分配两个数据结构:索引节点和目录项
- 索引节点inode:用来记录文件的元信息,包括inode编号,文件大小,文件类型,文件权限,所属用户,数据在磁盘的位置等等。索引节点与文件一一对应,同样会被存储在硬盘中。
- 目录项:用来记录文件名,索引节点指针,以及其他目录项的层级关系,多个目录项关联起来就会形成一个目录项。
如上图所示,磁盘格式化的时候会被分成3个存储区域,分别是超级块,索引节点和数据块区