Linux 磁盘存储术语总结

第一部分:基础概念

从硬件层面入手,理解 Linux 如何识别和管理存储设备。这是构建知识体系的起点。

1.1 磁盘与存储设备

  • 磁盘 (Disk):泛指任何用于持久存储数据的硬件设备,包括机械硬盘 (HDD)、固态硬盘 (SSD)、NVMe 驱动器等。在 Linux 中,磁盘被抽象为块设备 (Block Device),数据以固定大小的块 (通常 512 字节或 4KB) 读写。
  • 块设备 (Block Device):Linux 内核对磁盘的抽象表示,支持随机访问。常见设备文件如 /dev/sda (SATA 硬盘)、/dev/nvme0n1 (NVMe SSD) 或 /dev/mmcblk0 (eMMC 存储)。
  • 字符设备 (Character Device):与块设备相对,用于顺序访问的设备,如磁带驱动器。但在磁盘存储中,主要关注块设备。
  • 扇区 (Sector):磁盘的最小物理存储单元,通常 512 字节。现代磁盘可能使用 4KB 高级格式 (Advanced Format)。

示例:使用 lsblk 命令查看所有块设备:

lsblk -o NAME,TYPE,SIZE,MOUNTPOINT

这会列出如 sda (磁盘) 和其分区 sda1

1.2 存储接口与协议

  • SATA (Serial ATA):常见硬盘接口,速度可达 6 Gbps。
  • SAS (Serial Attached SCSI):企业级接口,支持热插拔和更高可靠性。
  • NVMe (Non-Volatile Memory Express):专为 SSD 设计的协议,利用 PCIe 总线,提供低延迟和高吞吐量。
  • SCSI (Small Computer System Interface):通用存储接口协议,在 Linux 中通过 /dev/sd* 表示。
  • IDE/ATA:旧式接口,现多被 SATA 取代。

这些接口决定了磁盘的性能和兼容性。理解它们有助于选择硬件。

1.3 HDD 内部物理结构

HDD(Hard Disk Drive,机械硬盘)不同于 SSD,其内部由机械组件组成,数据通过磁性方式存储。以下是关键结构术语,按物理布局从内到外逐步说明,帮助建立直观模型。

  • 盘片 (Platter):HDD 的核心存储介质,通常由铝合金或玻璃制成,表面涂有磁性材料。多个盘片堆叠在主轴上,每面可存储数据。数据以磁性极化方式记录(0/1)。
  • 主轴 (Spindle):驱动盘片高速旋转的电机,通常转速为 5400 RPM、7200 RPM 或更高。旋转确保磁头能访问数据。
  • 读写磁头 (Read/Write Head):悬浮在盘片表面上的微型电磁组件,用于读取(感应磁场)或写入(改变磁场)数据。每面盘片对应一个磁头。
  • 执行臂/磁头臂 (Actuator Arm):连接磁头的机械臂,由音圈马达 (Voice Coil Motor) 驱动,实现磁头在盘片上的径向移动(寻道)。
  • 磁道 (Track):盘片表面上的同心圆环,每个磁道存储连续数据。外圈磁道更长,可容纳更多数据。
  • 柱面 (Cylinder):所有盘片上相同半径位置的磁道集合。磁头无需移动臂即可访问同一柱面的数据,提高效率。
  • 扇区 (Sector):磁道的最小划分单元,通常 512 字节,包含数据和纠错码 (ECC)。扇区是数据访问的基本单位。
  • 区域 (Zone):在 ZBR 中的分组。盘片被分成多个同心区域,每个区域的磁道有固定扇区数。
  • ZBR (Zone Bit Recording):也称分区位记录或多区记录。将盘片分成多个区域(Zone),外区扇区数多于内区,以优化数据密度和容量(因为外磁道更长)。这提高了整体存储效率,但需特殊寻址管理。
  • MBR (Master Boot Record):位于硬盘第一个扇区(扇区 0)的 512 字节结构,包含引导加载程序、分区表和签名。用于传统 BIOS 引导,支持最多 4 个主分区,磁盘限 2TB。
  • 寻址方式 (Addressing Methods)
    • CHS (Cylinder-Head-Sector):传统物理寻址,使用柱面号、磁头号和扇区号定位数据。受限于 BIOS,支持最大 8GB 磁盘。
    • LBA (Logical Block Addressing):现代逻辑寻址,将整个磁盘视为连续块序列(从 0 开始编号)。克服 CHS 限制,支持大容量磁盘,常与 GPT 结合。

这些结构解释了 HDD 的机械性质:寻道时间(磁头移动)、旋转延迟(等待扇区)和传输时间影响性能。相比 SSD,HDD 更适合大容量归档。

第二部分:分区与格式化

磁盘需要划分成分区才能使用文件系统。这部分解释如何逻辑分割磁盘。MBR 和 GPT 已在上节提及,这里扩展其在分区中的作用。

2.1 分区基础

  • 分区 (Partition):磁盘的逻辑划分,每个分区可独立格式化和挂载。Linux 支持主分区 (Primary Partition)、扩展分区 (Extended Partition) 和逻辑分区 (Logical Partition)。
  • 分区表 (Partition Table):记录分区信息的结构,如 MBR (Master Boot Record) 或 GPT (GUID Partition Table)。
    • MBR:传统分区表,支持最多 4 个主分区,磁盘大小限 2TB。
    • GPT:现代分区表,支持无限分区和更大磁盘,使用 UUID 标识。
  • 分区标识 (Partition ID/Type):如 83 (Linux Native)、8e (LVM) 或 ef (EFI System Partition)。

示例:使用 fdiskgdisk 创建分区:

sudo fdisk /dev/sda

命令中输入 n 创建新分区。

2.2 格式化

  • 格式化 (Formatting):在分区上创建文件系统结构的过程,也称作 “mkfs” (Make File System)。
  • 低级格式化 (Low-Level Formatting):硬件级操作,创建扇区和轨道,通常由制造商完成。
  • 高级格式化 (High-Level Formatting):软件级,创建文件系统元数据。

格式化会擦除数据,因此需谨慎。常见命令:mkfs.ext4 /dev/sda1

第三部分:文件系统

文件系统是数据组织的桥梁,决定了如何存储文件、目录和元数据。

3.1 文件系统基础

  • 文件系统 (File System):管理磁盘空间的软件层,如 Ext4、XFS、Btrfs 等。
  • Inode (Index Node):存储文件元数据的结构,包括权限、所有者、时间戳和数据块指针。每个文件/目录一个 Inode。
  • 超级块 (Superblock):文件系统的元数据块,包含 Inode 总数、块大小等信息。
  • 日志 (Journal):记录文件系统变更的机制,防止崩溃时数据丢失(如 Ext3/4 的 journaling)。

3.2 常见 Linux 文件系统

  • Ext4 (Fourth Extended File System):默认文件系统,支持大文件 (16TB)、日志和扩展属性。
  • XFS:高性能文件系统,适合大容量存储,支持在线碎片整理。
  • Btrfs (B-Tree File System):现代文件系统,支持快照、子卷、RAID 和数据校验。
  • FAT32/vFAT:兼容 Windows 的文件系统,用于 USB 设备。
  • NTFS:Windows 文件系统,Linux 通过 ntfs-3g 支持读写。
  • ZFS:高级文件系统(源自 Solaris),支持池、数据集和快照,但需额外模块。

示例:检查文件系统类型:

df -T

3.3 文件系统层次结构

  • 根文件系统 (Root File System):以 / 为根的树状结构。
  • 虚拟文件系统 (VFS):Linux 内核的抽象层,统一不同文件系统的接口。

第四部分:卷管理和高级存储

当单个磁盘不足时,使用卷管理扩展存储。

4.1 LVM (Logical Volume Manager)

  • 物理卷 (Physical Volume, PV):LVM 中的磁盘或分区,经 pvcreate 初始化。
  • 卷组 (Volume Group, VG):多个 PV 的集合,经 vgcreate 创建。
  • 逻辑卷 (Logical Volume, LV):VG 中的可调整大小的分区,经 lvcreate 创建,可动态扩展/缩小。
  • 扩展区 (Extent):LVM 的最小分配单元,通常 4MB。

示例:创建 LVM:

pvcreate /dev/sdb
vgcreate myvg /dev/sdb
lvcreate -L 10G -n mylv myvg

4.2 RAID (Redundant Array of Independent Disks)

  • RAID 0:条带化,无冗余,提高性能。
  • RAID 1:镜像,提供冗余。
  • RAID 5:条带化加奇偶校验,至少 3 盘,平衡性能和冗余。
  • RAID 10:RAID 1 + 0 的组合。
  • 软件 RAID:通过 mdadm 实现,如 mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdc /dev/sdd
  • 硬件 RAID:由控制器管理。

RAID 与 LVM 可结合使用。

4.3 其他高级概念

  • 薄 provisioning (Thin Provisioning):在 LVM/Btrfs 中,按需分配空间。
  • 快照 (Snapshot):文件系统的只读副本,用于备份。
  • 加密存储:如 LUKS (Linux Unified Key Setup),使用 cryptsetup 加密分区。

第五部分:挂载与访问

将分区或卷集成到文件系统中。

5.1 挂载 (Mounting)

  • 挂载 (Mount):将文件系统附加到目录树的过程。命令:mount /dev/sda1 /mnt
  • 挂载点 (Mount Point):如 /home/var
  • fstab (/etc/fstab):配置文件,定义开机自动挂载。格式:设备 UUID、挂载点、文件系统类型、选项等。
  • UUID (Universally Unique Identifier):唯一标识分区,避免设备名变化。
  • 卸载 (Unmount)umount /mnt,移除挂载。

5.2 访问控制

  • 权限 (Permissions):通过 chmod/chown 管理,基于用户/组。
  • ACL (Access Control Lists):扩展权限,支持更细粒度控制,如 setfacl
  • Quota:磁盘配额,限制用户空间使用,如 quotaon

第六部分:性能与监控

优化存储并监控健康。

6.1 性能术语

  • IOPS (Input/Output Operations Per Second):每秒 IO 操作数,衡量随机访问性能。
  • 吞吐量 (Throughput):数据传输速率,如 MB/s。
  • 延迟 (Latency):IO 操作响应时间。
  • 缓存 (Cache):如页面缓存 (Page Cache),加速读写。

6.2 监控工具

  • iostat:监控 IO 统计。
  • iotop:显示进程 IO 使用。
  • smartctl:检查磁盘健康 (S.M.A.R.T.)。
  • df/du:检查空间使用。
  • fsck:文件系统检查和修复。

示例iostat -x 1 实时监控。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐