# 外存
:外部存储器。
- 与内存相比,通常外存的读写速度更慢,但可以在计算机断电后继续保存数据。
# Disk
:磁盘,泛指基于磁记录技术存储数据的设备。
- 按存储介质的不同,对磁盘分类:
- 软磁盘(Soft Disk)
- :又称为软盘,是 20 世纪常见的一种磁盘。
- 形状像光盘,但存储容量只有 1MB 左右。
- 目前已淘汰,不再使用。因此目前说到磁盘时,一般是指硬盘。
- 硬磁盘(Hard Disk)
- :又称为硬盘、机械硬盘。
- 软磁盘(Soft 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 的小文件时,每秒读写的文件数量。
- 顺序寻址:指访问一组地址连续的 block 空间。
- 存储介质
磁盘的读写速度大概为以下数量级:
- 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 。