linux块设备概念篇

Linux块设备概念篇

基础概念

  • 扇区、磁道、磁头、盘面
  • 磁盘块

  • 一个磁盘分为多个盘面,每个盘面包括上下两个面。每个面都可以存储数据,每个盘面又都对应一个读写磁头。盘面中一圈一圈的同心圆为磁道,将磁道划分为若干弧段,每个弧段称为扇区。扇区是磁盘的最基本单位,通常为512字节。
    块是文件系统的的抽象,文件系统操作磁盘的最小单位就是块。扇区是磁盘的最小单位,所以块不能比扇区小,只能是数倍于扇区大小。另外,内核还要求块大小为2的整数次幂,并小于页面的大小。所以,块通常为512字节,1KB或4KB。
    页是作为MMU映射最小单位,内核是以分页来管理内存的。所以,总结起来:扇区<=块(磁盘块)<=page
    磁盘基本组成
    读写一次磁盘信息所需要时间可分解为:寻道时间、延迟时间和传输时间。寻道时间是磁头移动到所需磁道所花费的时间,IO寻道时间越短,IO就越快。一般,磁盘的平均寻道时间在10ms。延迟时间是指磁头指向到所需的扇区上所花费的时间,它取决于磁盘的转速。目前,普通硬盘是7200rpm和5400rpm。数据传输时间是指完成数据传输所花费的时间。综上,为了提高磁盘传输效率,应该着重减少寻道时间和延迟时间。

设备分类

  • 字符设备
  • 块设备
  • 网络设备
    linux将设备分为三类:字符设备、块设备和网络设备。字符设备只能按顺序访问,不支持随机访问,它是面向流的设备,如鼠标、键盘、串口等。块设备可以从任意位置发起读写,支持随机访问,如磁盘、U盘等。

块设备的层次

块设备层次
linux是支持多种不同存储介质,所以对于每种硬件,在内核空间都适配有块设备驱动程序,来读写块设备。往上是IO调度层,将文件系统的读写请求排序,合并用以提高磁盘读写效率。接着是,通用块层,对应于bio结构,它将一次IO请求进行抽象,描述对应IO操作涉及到的多个页,他们可以是地址不连续的。文章主要是对IO调度层涉及到的调度算法和重要的结构体作介绍。

重要数据结构

  • bio
  • buffer_struct

缓冲区和缓冲区头

每个缓冲区都对应一个磁盘块,当磁盘块被调入内存时,就存储在缓冲区中。块包含一个或多个扇

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值