磁性硬盘
Magnetic Hard Disk,也称机械硬盘(Hard Disk Drive, HDD),早期计算机中主要的存储介质
物理组成
盘片
- 磁盘由多个盘片 (platter) 组成
- 盘片数对应柱面 (cylinders) 数
- 直径较小 (smaller diameter) 的盘片可以提供更好的刚度 (better rigidity),重量较轻,需要更少的功率来旋转 (less power to spin),这意味着它能在便携设备方面发挥更好的作用,噪音和热量较少。
- 尽管较小的盘片意味着较小的记录表面,但位密度技术 (bit density technology) 的提高已经足够弥补了这一点。
- 一个包含两个盘片的磁盘一共有四个面
- 其中三个面可供数据使用
- 另外一个面通常被保留作为备份或用于冗余数据存储
磁头
磁盘上的数据是通过磁头 (head) 进行读取和写入的
- 每个盘片表面都有一个可移动的读写头,即盘面数等于总的磁头数
- 执行器 (actuator) 将会控制臂部 (arm) 的运动,使磁头在盘片表面上移动到正确位置,这个过程通常被称为寻道 (track-positioning)
磁道
每个盘片的表面被组织成一组同心圆的磁道 (track)
- 每个磁头对应一个磁道
- 每个盘片的一侧都会保留用于硬件磁道定位信息的空间,并且对操作系统不可见。
- 磁道定位数据在工厂组装时被写入磁盘。磁盘控制器 (controller) 会读取这些数据,以将磁头稳定在正确的磁道位置。
扇区
每个磁道被划分为一定数量的固定大小的块 (block),称为扇区 (sector),它是磁盘读写数据的最小存储单元。历史上,每个扇区存储 512 字节的数据,但目前较新的大容量硬盘中为 4KB 字节。
基本概念
- 每个扇区都被分配一个唯一的编号,作为地址空间中的唯一标识符
- 通过使用从 0 到 n-1 的范围编号扇区,可以实现最大的寻址能力
- 例如,如果驱动器具有 100 个扇区,则可以使用编号 0 到 99 的值来寻址每个扇区
- 一些操作系统可能会将相邻的扇区组合成”簇“ (cluster)
- 簇是文件可以占用的磁盘上的最小空间
- 保留簇允许文件有一定的增长空间,同时保持非碎片化访问的效率
- 较大的扇区大小提高了开销效率 (overheads efficiency),但代价是增加了最小单位的空间分配 (minimum unit of space allocation)
- 较大的扇区意味着每个扇区包含更多的数据,在处理和传输数据时,需要较少的扇区和磁头移动,从而减少了延迟。
- 对于相同的数据量,较大的扇区会占用更多的磁盘空间。当需要存储小于扇区大小的数据时,也必须使用一个完整的扇区进行分配,导致空间的浪费。
数据结构
- P (Preamble):前导码,用于确定数据字段的起始位置。通常包含特定的模式,可以被磁头轻易地检测和识别。
- D (Data sync mark):数据同步标记,在磁头移动到目标扇区之前,允许磁头进行预定位,以确保数据的连续性和正确性。
- ECC (Error correcting code):纠错码
- G (Inter Sector Gap):扇区间隙,用于分隔相邻扇区的一段无数据的空白区域。它提供了磁头切换扇区的时间窗口,确保磁头准确地进入目标扇区,避免与相邻扇区发生干扰。
磁盘分区
Linux Hard Disk Partitioning
区位记录
Zoned Bit Recording
(课件主要介绍 ZBR 技术,实际还有 CLV、CAV 等)
优化磁道以增加数据容量的一种方法,它通过在外部磁道上每个区域放置比内部磁道更多的扇区来实现此目的。
- 由于磁盘从外向内填充数据,如果旋转速度保持不变,从外部轨道传输数据的速度比从内部轨道传输的速度更快。
- 随着磁盘被填满并向内部轨道存储数据,内部轨道的数据传输速度会变慢。这是因为内部轨道的扇区数量较少,磁头需要更长的时间才能访问到所需的数据。
- 因此当磁盘是全新和空的时候,它可以提供最佳的性能。
- 为了获得最佳性能,可以考虑在磁盘上保留一定的可用空间,并定期进行清理和整理,以减少数据的碎片化和提高数据访问速度。
主引导分区
Boot Partition
硬盘扇区被划分为多个分区,有些用于引导操作系统(进行硬件初始化、系统配置等),有些单纯用于存储普通数据或其他目的。
整个硬盘的 0 磁道 0 柱面 1 扇区为主引导扇区,由硬盘厂商预留,大小通常是 512字节。
它存储了硬盘的基本信息,比如硬盘分成几个区,每个区的大小,每个区从什么位置开始,从什么位置结束,主要包括:
- 主引导记录 (Master Boot Record),占 446 字节
- 即一段包含初始引导代码 (Bootstrapping Code) 的引导程序 (Boot Loader)
- 分区表 (Partition Table),占 64 字节
- 磁盘签名
- 结束标志
活动分区
Active partition
前面的概念是讲诉分区的“物理”形成,该术语则描述了分区的功能
🔴 课件一笔带过,待补充
性能指标
Performance Metrics
容量
Capacity
数据传输速率
Data Rate
- 驱动器与系统之间的带宽 (bandwidth),通过特定接口连接,更快的信号接口 (signaling Interface) 可以改善传输速度。
- Advanced Technology Attachment(ATA,高级技术附件),一种计算机硬件接口标准,最初是 PATA(Parallel ATA,并行)标准,后来演变为 SATA(Serial ATA,串行)
- SATA :第一个版本的 SATA 接口,传输速率传输速率为1.5 Gigabits per second,即每秒传输 1.5 亿位
- SATA -2 :第二个版本 SATA 接口,每秒传输 3 亿位
平均延迟
Average Latency
访问一个扇区的时间,例如 4ms - 9ms
可靠性
Reliability
平均失败时间 (Mean Time to Failure)
调度算法
访问磁盘中最耗时的部分是将磁头物理移动到正确的磁道,这被称为寻道时间 (seek time)
在多任务系统中,来自不同进程的访问磁盘的请求可能分散在磁盘盘片的不同位置,或者一个文件的块可能分散在不同位置。正确调度这些请求可以通过减少磁头需要移动的平均距离来减少平均寻道时间。
💡原生命令队列 (Native Command Queuing,NCQ) 是 SATA 协议的扩展,与磁盘驱动器的调度算法配合使用,允许硬盘驱动器在内部优化接收到的读写命令的执行顺序。
磁道按从外到内的顺序编号为 0-200。假如磁头当前位于磁道 53,并且有以下的磁道请求队列。
先来先服务
First-Come, First-Served,FCFS
按照请求的顺序进行磁盘访问,即先到达的请求先被服务。
最短寻道时间优先
Shortest Seek Time First,SSTF
选择与当前磁头位置最近的请求进行访问,以最小化寻道时间。
💡 平均而言,磁头将位于磁盘的中间位置附近,因此该算法更偏好中间区域的请求。因此,磁盘的外部磁道和内部磁道可能会被忽略(意味着较少被服务的机会)。
扫描算法
SCAN
磁头按一个方向移动,并且在服务队列中的请求按磁道号排序。当磁头到达最后一个磁道后,它会改变方向,按相反的方向继续处理,类似于电梯在楼层之间的运动。
圆扫描算法
C (Circular) -SCAN
与扫描算法类似,但在该算法中,磁头在到达最后一个磁道后不会改变方向,而是直接跳转到最前面的磁道开始服务请求。这样,磁头的移动是在一个方向上连续进行的,没有来回扫描的过程。
查找算法
LOOK
SCAN 会一直扫描直到最后一磁道,但 LOOK 当没有更多请求时,它会立即改变方向,并返回到最近的待处理请求,从而避免了不必要的移动,只在需要时改变方向。
圆查找算法
C-LOOK
固态硬盘
Solid State Drives,SSD
传统磁盘的物理替代品,但其访问方式是电子而不是机械的,使用浮栅晶体管技术进行非易失性存储。它正逐渐成为主流存储解决方案,为用户带来更快、更可靠的数据存储和访问体验。