zoukankan      html  css  js  c++  java
  • <<Information Store and Management>>读书笔记 之五

    笔者的话:

    接触硬件较少, 很多术语都是字面翻译, 读者请见谅. 我尽量带上英文原词, 避免歧义.

    2.2 磁盘驱动器组件

    磁盘驱动器使用快速移动的臂来在大唱片一样的覆盖着小磁粒的盘片上读写数据的. 数据从磁盘片上通过R/W头传输到计算机中. 多个盘片,读写头和控制器被组合在一起, 通常这被称为是硬盘驱动器(hard disk drive - HDD). 数据可以在磁盘上任意读写多次. 这个部分介绍磁盘不同组件的细节, 在磁盘上组织存储数据的机制, 以及影响磁盘性能的因素.

    磁盘驱动器的关键组件包括: 盘片, 纺锤体(转轴), 读写头, 促动器装配, 和控制器.

    image

    2.2.1 Platter

    -----------------
    典型的HDD由一个或多个平的圆的叫做platter的盘组成的(见图2-3). 数据用二进制的方式记录在这些盘片上. 一叠旋转的盘片被密封在一个盒子中, 叫做Head Disk Assembly(HDA). 一片platter(盘片)是一片刚硬的圆盘, 上下表面都覆盖着磁材料. 数据通过分化盘表面的磁区域(area或domain)而编码. 盘的两面都是即可读又可写. 盘的数量和每张盘的容量决定了整个磁盘驱动器的容量.

    image

    2.2.2 Spindle

    -----------------------
    Spindle(转轴)连接着所有的盘片, 见图2-3, 并且连接到一个马达上转轴的马达以一个固定的速度旋转. 盘片旋转的速度是每分钟几千转(rpm). 磁盘驱动器轴的转速有7200rpm, 1,000rpm, 或者15,000rpm. 当前的存储系统使用的磁盘的盘片直径为3.5英寸(90毫米). 当盘片转速为15,000rpm是, 其外边缘的移动速度是音速的四分之一. 盘片的速度随着技术在不断增长, 尽管可供提高的空间已经不多了.

    2.2.3 Read/Write Head

    读/写头(见图2-4)能从盘片上读取数据. 每张盘片上都有两个读写头, 上下面各一个. 在写入数据的时候, 读写头会修改盘片表面的磁极性. 读数据的时候, 头会检测到盘片表面的磁极性, 从而读取数据. 在读和写的时候R/W头会感应磁极, 却不会触碰盘的表面. 当转轴旋转的时候, 盘片与读写头之间有显微镜才能看见的小缝隙, 被称为头的飞行高度(head flying height). 这小缝隙在转轴停止旋转的时候会被移掉, 读写头会在盘片靠近转轴部分的一个特殊区域上停下来. 这块特殊区域叫做停靠区(landing zone). 停靠区被润滑剂覆盖, 用于减少盘和读写头之间的摩擦. 磁盘的逻辑会确保读写头停下来靠近盘片之前一定会落在停靠区. 如果磁盘驱动器出了问题, 读写头意外地碰到了停靠区之外的盘片部分, 那么撞头(head crash)就发生了. 在撞头时, 盘片上覆盖的磁物质就会被蹭掉, 可能会对读写头的伤害. 撞头通常会导致数据丢失.

    image

    2.2.4 Actuator Arm Assembly

    ---------------------
    读写头是加载在actuator arm assembly(驱动臂装配)上的, 该驱动臂装备会把读写头定位到盘面上需要读写数据的地方. 所有盘片的读写头都附着在一个驱动臂装备上, 并同时地在盘片上移动. 注意没个盘片有两个读写头, 每面一个, 见图2-4.


    2.2.5 Controller

    ---------------------
    控制器是一个印好的电路板, 加载在磁盘驱动器的底部. 它由一个小处理器, 内存, 电路和固件组成. 固件控制给转轴马达的电源和马达的速度. 另外它还通过控制驱动臂和切换不同的读写头来控制读写操作, 并对数据访问提供优化.


    2.2.6 Physical Disk Structure

    ---------------------
    磁盘上的数据是记录在磁道上的, 磁道就是盘片上围绕转轴的同心圆, 见图2-5. 磁道有被编号, 从盘片的外边缘开始依次为0, 1, 2... 盘片上没英尺的磁道数决定着盘片上的磁道排列的有多紧密.
    每个磁道都被分为更小的叫做sector(扇区)的单元. 扇区是存储单元中可以寻址的最小单位了. 磁道和扇区的结构通过制造商格式化的操作来完成. 每个磁道上扇区的数目依据不同磁盘又不同. 第一台个人电脑的磁盘每圈有17个扇区. 现在的磁盘每圈上可以有大得多的数目的扇区了. 每张盘上有上千条磁道, 取决于物理维度上的磁盘密度的不同.

    image

    典型地, 一个扇区保存512字节的用户数据, 尽管有些磁盘可以被格式化为更大的扇区尺寸. 除用户数据外, 扇区还存储着其他的信息, 比如说扇区编号, 头编号, 盘编号, 磁道编号等. 这些信息帮助控制器在磁盘中定位数据, 但是这些信息对磁盘空间来说也是种消耗. 其结果, 就是格式化后的磁盘比未格式化的磁盘的可用容量要小. 驱动器制造商一般会宣传未format时的容量, 比如说, 广告500G的硬盘, 只能装465.7G的用户数据, 剩下的34.3G就用来装元数据了.

    Cylinder(圆筒)是每个驱动器盘片两面完全一样的磁道的集合. 驱动器头的位置值得就是圆筒的号码, 而不是磁道的号码.

    2.2.7 Zoned Bit Recording

    ----------------------

    由于盘片是有同圆心的磁道组成的, 外圈的磁道可以比内圈的磁道保存更多的信息, 有余外圈磁道物理上比内圈更长, 见图2-6(a). 在老一点的磁盘驱动器上, 外圈的磁道跟内圈的磁道有同样的号码, 所以数据密度在外圈是很低的. 这对可用空间的利用是低效率的. Zone Bit recording可以高效一点的使用磁盘. 见图2-6(b), 这种机制把磁道基于距离磁盘中心的距离分组为zone. 这些zone被编号, 最外面的zone是zone 0. 每圈内恰当数目的扇区被分配给每个zone, 所以距离圆心近的zone有较少数目的sector, 外圈的就会较多. 然而, 某个zone内的磁道拥有的扇区的数量是相同的.

    image

    2.2.8 Logical Block Addressing
    较早的驱动器使用由cylinder,head, 和sector(CHS)组成的物理地址寻址磁盘上的某处, 见图2-7(a), 寄宿的操作系统不得不了解每个磁盘的几何性质. 逻辑块寻址(LBA)(如图2-7-b) 通过使用线性地址来访问物理数据块从而简化了对数据的访问. 磁盘控制器会把LBA翻译成CHS地址, 宿主仅需要知道磁盘驱动器的块数的多少, 从而得知其尺寸. 逻辑块与物理扇区是按照1:1的比率对应的.

    image

    图2-7 b中, 磁盘每圈展现了8个扇区, 8个头,  4个筒. 这意味着8x8x4=256个块, 所以块号的范围是从0到255. 每一块都有自己的地址. 假设扇区保有512个字节, 那么500G格式化后容量为465.7G的磁盘会有超过976,000,000 个block的.

    摘译自<<Information Storage Management>>

  • 相关阅读:
    面向接口程序设计思想实践
    Block Chain Learning Notes
    ECMAScript 6.0
    Etcd Learning Notes
    Travis CI Build Continuous Integration
    Markdown Learning Notes
    SPRING MICROSERVICES IN ACTION
    Java Interview Questions Summary
    Node.js Learning Notes
    Apache Thrift Learning Notes
  • 原文地址:https://www.cnblogs.com/awpatp/p/2834394.html
Copyright © 2011-2022 走看看