在上一篇《磁盘开篇:扒开机械硬盘坚硬的外衣!》中,我们了解了机械硬盘的物理结构,它是由磁盘表面、磁道、扇区等更小的单元组成,如图所示下图:分区是操作系统管理磁盘的第一步,这是我们任何一个计算机用户都非常熟悉的概念。例如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)。第三步是读取到目标扇区来取或写数据,这部分时间称为存取时间。这是一种电磁操作,所以一般需要很短的时间,也就是零点几毫秒。到目前为止,单盘IO时间=寻道时间+旋转延迟+访问时间分区,最重要的是该方法的性能更快。在磁盘分区的使用中,有一个基本的事实,就是同一个分区下的数据往往是一起读取的。两种方案在旋转延迟和访问时间上的表现相同,主要区别在于寻道时间的表现:如果使用第一种,那么磁头需要在3000多条磁道之间不停地跳动,这样就不能减少磁盘的寻道时间。至于第二种方案,如果是C盘,只需要在1-1000磁道之间移动磁头,就大大减少了寻道时间。因此,所有操作系统都使用选项二,不使用选项一。如果你在Linux下使用过fdisk分区,你会注意到以下信息。分区的过程就是你输入起始柱面号和结束柱面号的过程。但是实际上分区不能从0柱面开始,因为磁盘第一磁道对应的柱面会被用来安装bootloader和磁盘分区表。因此,操作系统根据磁道对应的柱面来划分分区,以减少磁盘IO的寻道时间,最终提高磁盘的读写性能。坚韧的外套!2.磁盘分区也暗示技术水平。3、机械硬盘速度慢,容易坏,如何解决?4.拆解SSD结构5.一个新的空文件占用多少磁盘空间?6.一个只有1字节的文件实际占用多少磁盘空间?7、为什么文件太多时ls命令会卡住?8.理解格式化原理9.读取文件一个字节实际会发生多少磁盘IO?10.文件写入一个字节后什么时候开始写磁盘IO?11、机械硬盘的随机IO比你想象的要慢。12、服务器配置固态硬盘比机械硬盘快多少?我的公众号是《练内功》。在这里,我不是简单地介绍技术理论,也不是只介绍实践经验。而是理论联系实际,用实践加深对理论的理解,用理论提高技术实践能力。欢迎关注我的公众号,分享给你的朋友吧~~~
