在前文《磁盘开篇:扒开机械硬盘坚挺的外衣!》中,咱们理解了机械硬盘的物理结构,是由磁盘面,磁道、扇区等更小的单位组成的,如下图:
分区是操作系统对磁盘进行治理的第一步,这也是咱们任何一个计算机使用者都十分相熟的概念。例如 Windows 下的 C、D、E、F 盘。那么请思考一下,如果你是操作系统的设计者,让你把整块磁盘分成 C、D 等分区,你会怎么分呢?
为了不便探讨,咱们这里你要分的硬盘是有 50 个盘面,3000 个柱面。咱们给出两种计划
- 计划一:50 个盘面,C 盘是 0 -10 盘面,D 盘是 10-20 个盘面,……
- 计划二:3263 个柱面,C 盘 0 -1000 个柱面,D 盘 1001-20001 个柱面,……
接下来咱们来探讨下那种计划更优良,这得从磁盘的读写延时角度说起。读写原理说起来也简略,就是磁头要找到指定的磁道,指定的扇区,进而把数据读取进去或者写入进去的过程。这个过程分成如下三步:
- 第一步,首先是磁头径向挪动来寻找数据所在的磁道。这部分工夫叫 寻道工夫。寻道工夫,古代磁盘大略在 3 -15ms,其中寻道工夫大小次要受磁头以后所在位置和指标磁道所在位置绝对间隔的影响
- 第二步,找到指标磁道后通过盘面旋转,将指标扇区挪动到磁头的正下方,这部分工夫叫 旋转提早。当初支流服务器上常常应用的是 1W 转 / 分钟的磁盘,每旋转一周所需的工夫为 60*1000/10000=6ms,故其旋转提早为(0-6ms)
- 第三步,向指标扇区读取或者写入数据,这部分工夫叫 存取时间。这个是电磁操作,所以个别耗时较短,为零点几 ms。
到此为止,单次磁盘 IO 工夫 = 寻道工夫 + 旋转提早 + 存取时间
分区上采纳哪一种计划,最次要看的是那种形式性能更快。在磁盘分区的应用中,存在一个根本事实,那就是同一分区下的数据常常会一起读取。两种计划的对于旋转提早、和存取时间上体现的性能是一样的,次要区别是在寻道工夫的体现上:
如果采纳第一种,那么这样磁头就须要在 3000 多个磁道间不停地跳来跳去,这样磁盘的寻道工夫就降不下来。而对于计划二,如果对于磁盘 C,只须要在磁头在 1 -1000 个磁道间挪动就能够了,大大降低了寻道工夫。
所以所有的操作系统采纳的都是计划二,没有用计划一的。如果你在 Linux 下应用过 fdisk 进行过分区的话能够留神到以下信息。
分区的过程就是你输出起始柱面号和截至柱面号的过程。不过在理论中,分区并不能从 0 号柱面开始的,因为磁盘的第一个磁道对应的柱面会被用来装置疏导加载程序以及磁盘分区表。
所以,操作系统通过按磁道对应的柱面划分分区,来升高磁盘 IO 所破费的的寻道工夫,最终进步磁盘的读写性能
开发内功修炼之硬盘篇专辑:
- 1. 磁盘开篇:扒开机械硬盘坚挺的外衣!
- 2. 磁盘分区也是隐含了技术技巧的
- 3. 咱们怎么解决机械硬盘既慢又容易坏的问题?
- 4. 拆解固态硬盘构造
- 5. 新建一个空文件占用多少磁盘空间?
- 6. 只有 1 个字节的文件理论占用多少磁盘空间
- 7. 文件过多时 ls 命令为什么会卡住?
- 8. 了解格式化原理
- 9.read 文件一个字节理论会产生多大的磁盘 IO?
- 10.write 文件一个字节后何时发动写磁盘 IO?
- 11. 机械硬盘随机 IO 慢的超乎你的设想
- 12. 搭载固态硬盘的服务器到底比搭机械硬盘快多少?
我的公众号是「开发内功修炼」,在这里我不是单纯介绍技术实践,也不只介绍实践经验。而是把实践与实际联合起来,用实际加深对实践的了解、用实践进步你的技术实际能力。欢送你来关注我的公众号,也请分享给你的好友~~~