# 外存

:外部存储器。

  • 与内存相比,通常外存的读写速度更慢,但可以在计算机断电后继续保存数据。

# Disk

:磁盘,泛指基于磁记录技术存储数据的设备。

  • 按存储介质的不同,对磁盘分类:
    • 软磁盘(Soft Disk)
      • :又称为软盘,是 20 世纪常见的一种磁盘。
      • 形状像光盘,但存储容量只有 1MB 左右。
      • 目前已淘汰,不再使用。因此目前说到磁盘时,一般是指硬盘。
    • 硬磁盘(Hard Disk)
      • :又称为硬盘、机械硬盘。

# HDD

:机械硬盘驱动器(Hard Disk Drive),一种基于磁性颗粒存储数据的设备。

  • 一个机械硬盘由多个磁碟组成,每个磁碟的结构如下图:

    • 磁碟的表面涂有磁性颗粒,通过磁极的方向表示二进制的 0、1 。
    • 磁碟的两面都可读写数据,每面各有一个磁头(Head)。
    • 磁头有两项职责:
      • 寻址:磁头可以转动到磁碟的特定位置。
      • 读写:磁头可以根据磁感应,感知磁碟当前位置的磁性颗粒,获取其磁极方向,或者改变其磁极方向。
    • 每个磁碟上有多个同心圆,根据半径线分成多个弧道,称为磁区、扇区(Sector)。
      • 每个扇区通常存储 512 Bytes 的数据。
      • 现代磁盘的容量越来越大,导致扇区增多,增加了管理开销。为了减少扇区数量,通常将每个扇区体积设置为 4 KB 。
    • 同一圈的扇区组成一条磁轨、磁道(Track)。
    • 如果将多个磁碟上下叠在一起,则所有碟上的相同位置的磁轨组成一个磁柱、扇面(Cylinder)。
    • BIOS 会自动检测硬盘,计算出 总容量 = Head 数 × Cylinder 数 × Sector 数 × 512 Bytes
      • BIOS 采用十进制计算容量,因此它的 1KB = 1000B 。

# SSD

:固态硬盘(Solid State Disk),一种基于 DRAM 或 NAND Flash 存储数据的设备。

  • SSD 不是基于磁性颗粒存储数据,严格来说不属于磁盘,只是通常当作磁盘使用。

  • 与 HDD 相比,SSD 的价格大概贵了一倍,但具有多个优点:

    • HDD 需要磁头移动寻址,因此读写速度比 SSD 慢多倍。
    • HDD 包含一些机械元件,因此设备尺寸通常比光盘大。而 SSD 可以小至几厘米。
    • 发生物理碰撞时(比如摔到地上),HDD 容易损坏,比如磁碟被磁头刮伤。而 SSD 不包含机械元件,结构稳定。
    • HDD 的磁头机械运动,会产生一些噪音。而 SSD 运行安静。
  • HDD 存储一个文件时,可能存储到一些地址不连续的 block 空间,称为文件碎片。

    • 磁头每访问一个碎片,就需要寻址一次,属于随机寻址。碎片越多,文件的读写速度越慢。
    • 有的软件提供了碎片整理的功能:将碎片化的文件重新写入磁盘,保存到一组地址连续的 block 空间,从而能顺序读写,提高读写速度。
    • 而 SSD 存储一个文件时,可以存储到任意空闲的 block 空间,不存在文件碎片的问题。

# 磁盘速度

  • 磁盘的读写速度,主要受以下因素影响:

    • 存储介质
      • 比如固态硬盘比机械硬盘快,内存比固态硬盘快。
    • 寻址方式
      • 顺序寻址:指访问一组地址连续的 block 空间。
        • 主要的性能指标是 MBPS :读写一个几 GB 的大文件时,每秒读写的字节量。
      • 随机寻址:指访问一组地址不连续的 block 空间。
        • 主要的性能指标是 IOPS :读写大量 4KB 的小文件时,每秒读写的文件数量。
  • 磁盘的读写速度大概为以下数量级:

    - HDD SSD
    顺序读写 100 MB/s 300 MB/s
    随机读写 0.5 MB/s 30 MB/s
    • 在顺序读写时,HDD 比 SSD 慢几倍。在随机读写时,HDD 比 SSD 慢两个数量级。
    • HDD 的随机读写很慢,比顺序读写慢两个数量级。因为每处理一个文件,都需要磁头移动寻址。
    • SSD 不需要磁头移动寻址,而是对 NAND 芯片直接寻址。不过随机读写依然比顺序读写慢一个数量级,因为每处理一个文件,都需要调用磁盘接口、寻址。

# 磁盘接口

  • IDE(Integrated Device Electronics ,集成设备电路)
    • IO 速度可达 100 MB/s 。
    • 采用并口排线,容易受干扰,不支持热插拔。
  • SATA(Serial ATA)
    • 采用串口排线,抗干扰,支持热插拔。
    • IDE 是并口 ATA ,而 SATA 是串口 ATA 。
    • SATA 3.0 标准的 IO 速度可达 600 MB/s 。
    • SATA 接口可以接收多个读写磁盘的任务,放在队列中排队处理。
      • HHD 的每面磁碟只有一个磁头,因此处理多个文件时只能串行读写。
      • SSD 支持同时访问多个 NAND 芯片,因此可以从 SATA 接口获取多个任务,并行读写。
  • SCSI(Small Computer System Interface ,小型计算机系统接口)
    • 性能较好,价格较贵。
  • SAS(Serial Attached SCSI)
    • 新一代的 SCSI 技术,向下兼容 SATA 接口,但反之不兼容。
    • IO 速度可达 6 GB/s 。

# 主引导扇区

  • 每块硬盘的第一个扇区称为主引导扇区,它不属于任何分区,不会被格式化分区的命令影响。

  • 主引导扇区的体积为 512 Bytes 。

    • 前 446 Bytes 用于存储主引导记录。
    • 后 64 Bytes 用于存储硬盘分区表。
  • 主引导记录(Master Boot Record ,MBR)

    • :又称为启动引导程序(Bootloader),是一段机器代码。
    • 计算机开机时,BIOS 会让 CPU 执行 Bootloader 。而 Bootloader 会让 CPU 从硬盘读取操作系统的内核文件(比如 Linux kernel ),然后运行内核。
  • 硬盘分区表(Disk Partition Table ,DPT)

    • :用于记录硬盘的分区信息。
    • 例如记录第四个分区是从第 301 号磁柱到第 400 号磁柱。

# BIOS

:基本输入输出系统(Basic Input Output System)

  • 负责在计算机开机时,初始化硬件设备,然后引导操作系统启动。
  • 是一组固化在 ROM 中的程序,包括基本输入输出程序、开机后自检程序、系统自启动程序等。

BIOS 常见的启动模式:

  • Legacy

    • :传统的 BIOS 启动模式。
    • 使用 MBR 扇区存储 Bootloader 。
    • 采用 DPT 分区表。
      • DPT 是 1980 年代微软 MS-DOS 操作系统采用的分区表,后来逐渐被 GPT 取代。
      • 最多只能存储 4 个分区的信息,每个分区的最大容量为 2TB 。
      • 可以将前三个分区用作主分区,将第 4 个分区 /dev/hda4 用作扩展分区,存储额外的分区信息,从而可以划分无数个逻辑分区(编号从 5 开始)。
        • 磁盘总容量 = 主分区容量 + 扩展分区容量
        • 扩展分区容量 = 所有逻辑分区容量之和
  • UEFI(Unified Extensible Firmware Interface)

    • :现代流行的 BIOS 启动模式,只支持 64 位的操作系统。
    • 使用 ESP 扇区(EFI system partition)存储 Bootloader 。
    • 采用 GPT 分区表(Globally Unique Identifier Partition Table)。
      • 分区信息存储为 efi 文件。
      • 支持划分无数个分区,每个分区的最大容量为 18EB 。
    • 计算机开机时不需要进行自检,而是直接读取 Bootloader ,因此开机速度更快。

# RAID

:独立冗余磁盘阵列技术(Redundant Array of Independent Disks),一种磁盘备份技术,将多个磁盘组合成一个磁盘阵列使用。

常见的 RAID 方案:

  • RAID 0
    • :将数据拆成 n 部分,分别写入 n 个磁盘。
    • 优点:并行读写 n 个磁盘,总体读写速度提升到 n 倍。
    • 缺点:不能备份数据,只要有一个磁盘受损,就会丢失一部分数据。
  • RAID 1
    • :将数据拷贝 n 份,分别写入 n 个磁盘。
    • 优点:能备份 n 份数据。
    • 缺点:需要购买 n 个磁盘,成本高。
  • RAID 5
    • :将数据写入一个磁盘,然后将奇偶校验信息写入其它磁盘。
  • RAID 10
    • :按 RAID 0 技术部署多个磁盘,并给每个 RAID 0 磁盘部署一个 RAID 1 磁盘做备份。
    • 优点:兼容了 RAID 0 和 RAID 1 的优点,能提升读写速度,备份 1 份数据,性价比好。

# CD

:光盘(Compact Disc),一种基于激光存储数据的设备。

  • 光盘技术经过了多年发展,存储容量越来越大:
    • CD :1980 年代开始流行,取代了传统的黑胶唱片、软盘。容量为几百 MB 。
    • VCD(Video Compact Disc):一种存储视频信息的光盘。
    • DVD(Digital Video Disc):一种存储数字视频的光盘,容量为几 GB 。
    • BD(Blue-ray Disc):蓝光光盘,一种基于蓝色激光存储数据的光盘,容量为几十 GB 。
  • 根据是否可擦写,对 CD 分类:
    • 不可擦写光盘:只能写入一次数据,写入后只能读取,比如 CD-ROM、DVD-ROM 。
    • 可擦写光盘:比如 CD-RW、DVD-RAM 。