磁盘的基本知识:磁道、柱面和扇区

马谦马谦马谦 程序员评论4,527字数 880阅读 2 分 56 秒阅读模式

一、磁盘的基本元素

磁盘由多个盘片组成,每个盘片的基本结构为:

磁盘的基本知识:磁道、柱面和扇区-图片1

各标识含义:

  • A 是磁道,多个磁盘的同一个磁道重叠起来叫做柱面,它包含了很多个扇区。
  • B 是几何上的扇区,只做标示,此处无特殊含义。
  • C 是扇区,扇区是磁盘的最小组成单元,通常是 512 字节 (有的磁盘时 4096 字节) 。
  • D 是磁盘块 (簇),块/簇是操作系统虚拟出来的概念,它由多个扇区组成。

读取磁盘数据时,磁盘上的磁头不断旋转变道,然后读取数据。因此寻道时间越短,I/O 操作越快,目前磁盘的平均寻道时间一般在 3-15ms,一般都在 10ms 左右。

关于随机 IO 和顺序 IO

一般在测试磁盘性能的时候,都会额外测试一个功能点就是随机读写的性能。与随机读写相对的是顺序读写,他们的区别在于本次 IO 和上一次 IO 地址的差别。如果本次 IO 给出的初始扇区地址,和上一次 IO 的结束扇区地址,是不是完全连续的,或者相隔不多,则本次 IO 算是一个顺序 IO 。如果相差太大,则算一次随机 IO 。顺序 IO,因为本次初始扇区和上次结束扇区相隔很近,则磁头几乎不用换道或换道时间极短,所以读写速度快;而随机 IO 中磁头需要很长的换道时间,导致磁头不停换道,读写速度非常慢。

为什么存在磁盘块?(簇)

  1. 读取方便:由于扇区的数量比较小,数目众多在寻址时比较困难,所以操作系统就将相邻的扇区组合在一起,形成一个块,再对块进行整体的操作。
  2. 分离对底层的依赖:操作系统忽略对底层物理存储结构的设计。通过虚拟出来磁盘块的概念,在系统中认为块是最小的单位。

我们平常所说的 4K 对齐也就是指的块大小,它表示操作系统读取磁盘时一次读取的数据大小。如果操作系统一次读取 4K,但是块大小只有 2K,就相当于一次 IO 要做 2 次磁盘寻址。而如果磁盘块大小刚好也是 4K,那么一次 IO 就只需一次寻址。相对而言,磁盘寻址效率是很低的,多一次磁盘寻址肯定会更加导致 IO 效率低,因此对磁盘进行 4K 对齐也是提高了系统的 IO 性能。

二、 linux 系统下的查看扇区和磁盘块

使用 fdisk -l 可以看到磁盘的扇区大小:

磁盘的基本知识:磁道、柱面和扇区-图片2

使用 tune2fs -l 可以看到读取磁盘的块大小,下面这个磁盘的块大小是 4096

磁盘的基本知识:磁道、柱面和扇区-图片3

三、参考

机械硬盘结构

 
马谦马谦马谦
  • 本文由 马谦马谦马谦 发表于 2020 年 1 月 12 日 13:47:17
  • 转载请务必保留本文链接:https://www.dyxmq.cn/program/disk-structure.html
解决gvm工具无法下载安装包的问题 Golang

解决 gvm 工具无法下载安装包的问题

GVM(Go Version Manager) 是一款用于管理和切换不同 Go 语言版本的工具。它允许用户在同一台计算机上轻松安装、使用和管理多个 Go 版本,同时还能确保项目之间的依赖关系井然有序。 GVM 的主...
goland配置proto文件搜索路径 Golang

goland 配置 proto 文件搜索路径

默认情况下,goland(jetbrains 家的软件:idea 、 pycharm 、 phpstorm 以及 webstorm 都是一样) 安装 protobuf 插件后只会在一个特定的库路径下搜索 proto 文件。如果...
C++文件输入输出流fstream的基本用法 C/C++

C++文件输入输出流 fstream 的基本用法

一、文件流 C++的 IO 类中定义了三个文件读写流 fstream 、 ifstream 以及 ofstream,它们都继承于相同的父类 istream,通过不同的实现以实现不同的文件流操作。 三者的区别为: if...
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证