Linux基础笔记17 | 磁盘与文件系统认知

磁盘基础概念知识

  • 计算机主要存储媒介之一
  • 由一个或多个铝制/玻璃的碟片组成,碟片外覆盖具有铁磁性材料
  • 磁盘内部由磁道、柱面、扇区、磁头等关键部位组成
  • Linux 系统中硬件设备文件放在 /dev 下,不同磁盘接口,系统识别的设备名称不一样
  • IDE:/dev/hda
  • SAS\SCSI\SATA:/dev/sda
  • 高效云盘:/dev/vda
  • 磁盘读写数据的单位就是扇区,而非字节,每个扇区绝大多数是 512 字节

image-20220906235124647

机械磁盘的读写机制

  1. 设备驱动程序将读写数据所需要的信息传递给机械磁盘:扇区序列号、扇区数量、读写类型等信息
  2. 通过摆动磁头和转动盘片,将磁头对准需要访问的扇区
  3. 执行数据的读写操作
  4. 执行完毕后就能结束数据传输了:一次请求就完成了

文件系统一脚入门基础

文件系统的必要性

应用程序与底层的解耦,不需要关注实际存放数据的位置和信息,文件系统代替管理,避免了复杂的管理

文件系统下的读取数据流程

  1. 进程进行系统调用(统一的系统调用接口)
  2. 内核中的文件系统通用的处理,并确定操作对象的文件保存在哪个文件系统中
  3. 调用该文件系统独有的处理,并执行和请求与第一步对应的处理
  4. 将读写数据信息,传递给设备驱动程序
  5. 由设备驱动程序进行后续的读写操作(即上述的机械磁盘的读写机制)

其他

  • 操作系统读取磁盘,不会一个个扇区去读取,效率太低,一般都是一次性连续读取多个扇区,被称之为一个 block (块)
  • block (块)的大小常见有1 KB、2KB、4KB,linux 常设置4 KB,即8个扇区

block 与 inode

操作系统对于文件数据的存放分为2部分:基于文件系统

  • 文件内容:存储到 block 中
  • 权限及文件属性:存储在 inode 中

磁盘分区中,有一个超级区块(superblock)

  • 记录整个文件系统的整体信息:inode、block 的总量;使用大小、剩余大小等信息

inode

  • 记录文件的属性、权限,同时记录该文件的内容数据所在的 block 编号

block

  • 存储文件的实际内容,超过默认的 block 大小,就会自动占用多个 block

基于文件系统的数据定位

  • 找到这个文件的 inode 信息,就能找到存放该文件数据的 block 号,就能读取文件内容

格式化

  • 自动会将磁盘分成2个区域
  • inode 和 block 节点大小格式化可以指定
mkfs.xfs -b 4096 -I 256 /dev/sdb

磁盘分区表格式

磁盘有很多很多扇区,早期我们把磁盘中的第一个扇区里面含有重要的信息叫做 MBR(Master Boot Record)格式,后续快速的发展,磁盘容量不断增大,又多了一个新的磁盘分区格式,GPT(GUID partition table)

  • 分区表:就是对磁盘进行分区

MBR(Master Boot Record)

  1. 早期为了兼容 windows 的磁盘,使用的是支持 windows 的 MBR 方式来处理开机管理程序与分区表,相关记录通通放在磁盘中的第一个扇区,大小通常是512字节

    • 主要开机记录区:可以安装开机管理程序的地方,有446字节
    • 分区表:记录整块磁盘分区的状态,有64字节,因为分区表只有64字节的大小,最多有4组记录区,每组记录区记录了该区端的范围(起始柱面号)
    • 结束标志占2个字节:AA 55

    img

  2. MBR 位于整块磁盘的0磁道0柱面1扇区位置

  3. 按照上述大小分布,就意味着只有16*4,4个分区记录,这个4个分区记录被称为主分区(Primary)和扩展分区(Extended)

    • 所谓的分区就是对这64字节进行设置
    • 磁盘默认仅能写入4组分区信息
    • 分区的最小单位一般是柱面
  4. 通过扩展分区我们可以划分不止4个分区

    • 思考初衷:利用额外的扇区来记录更多的分区信息
    • 扩展分区本身不拿来格式化使用,而是使用额外的扇区来记录分区信息
    • 由扩展分区继续切出来的分区,叫做逻辑分区(logical partition)
  5. 总结

    • 主分区与扩展分区最多可以存在4个
    • 扩展分区最多只能一个
    • 逻辑分区是由扩展分区持续切割出来的分区
    • 可以被格式化后拿来使用的只有主分区和逻辑分区,扩展分区无法被格式化使用
    • 由于每组分区表仅有16字节,记录的信息是有限制的,无法分区大于2T以上的磁盘,存放的引导程序大小仅限于446字节

GPT(GUID partition table)

  1. GPT 将磁盘所有区块以 LBA(逻辑区块位址)来规划,默认是 512 字节,并使用了34个 LBA 区块来记录分区信息,整个磁盘的最后33个LBA也拿来作为另一个备份使用

    image-20220907145218883

  2. LBA0:相容于 MBR 模式,前446字节存储开机管理程序,原本记录的分区表位置,放置了一个标记磁盘为 GPT 格式的记录,不懂 GTP 分区表的磁盘管理程序就不会认识这个磁盘了

  3. LBA1(GPT表头记录):记录了分区表本身的位置和大小,同时记录了备份用的 GTP 分区位置,还放置了分区表的检验机制码(CRC32),操作系统可以根据这个检验码判断 GTP 是否正确,有错误的话,可以通过这个记录来取得备份的 GPT,来进行一个恢复

  4. LBA2-33(实际记录分区信息处):一个 LBA 可以记录4个分区信息,所以默认情况下,磁盘可以有4*32=128个分区信息,支持最大的容量限制也是很大很大的,至少得200多个T了吧

  5. GPT 分区没有所谓的主分区、扩展分区、逻辑分区的说法,每一个分区都可以独立存在,每一个都是主分区,每一个分区都可以拿来格式化后使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值