Linux磁盘管理详解

Linux 磁盘管理详解:磁盘结构、RAID、MBR 分区、格式化与挂载

Linux 磁盘管理不是只会执行 fdisk 就够了。一块新硬盘从接入系统到真正存放文件,至少要经历"识别设备、创建分区、创建文件系统、挂载目录、配置永久挂载"几个阶段。中间任何一步遗漏,都会出现"系统能看到硬盘,但无法写文件""重启后挂载消失""修改 /etc/fstab 后系统进入紧急模式"等问题。

文章目录

  • 一、磁盘基础知识
    • [1.1 磁盘与内存的区别](#1.1 磁盘与内存的区别)
    • [1.2 机械硬盘 HDD 与固态硬盘 SSD](#1.2 机械硬盘 HDD 与固态硬盘 SSD)
    • [1.3 常见磁盘接口](#1.3 常见磁盘接口)
      • [1.3.1 SATA 接口](#1.3.1 SATA 接口)
      • [1.3.2 SAS 接口](#1.3.2 SAS 接口)
      • [1.3.3 PCIe 接口](#1.3.3 PCIe 接口)
      • [1.3.4 U.2 接口](#1.3.4 U.2 接口)
      • [1.3.5 SATA 与 SAS 接口对比](#1.3.5 SATA 与 SAS 接口对比)
      • [1.3.6 接口选择速查](#1.3.6 接口选择速查)
    • [1.4 企业环境磁盘选型](#1.4 企业环境磁盘选型)
    • [1.5 机械硬盘内部结构](#1.5 机械硬盘内部结构)
    • [1.6 固态硬盘内部结构](#1.6 固态硬盘内部结构)
  • [二、RAID 磁盘阵列](#二、RAID 磁盘阵列)
    • [2.1 RAID 的作用](#2.1 RAID 的作用)
      • [2.1.1 RAID 的实现方式](#2.1.1 RAID 的实现方式)
      • [2.1.2 RAID 常见术语与运行状态](#2.1.2 RAID 常见术语与运行状态)
      • [2.1.3 Linux 中查看 RAID 状态](#2.1.3 Linux 中查看 RAID 状态)
    • [2.2 RAID 0](#2.2 RAID 0)
      • [2.2.1 条带化与容量计算](#2.2.1 条带化与容量计算)
      • [2.2.2 启动与写入演示](#2.2.2 启动与写入演示)
      • [2.2.3 单盘故障演示](#2.2.3 单盘故障演示)
      • [2.2.4 重建演示](#2.2.4 重建演示)
    • [2.3 RAID 1](#2.3 RAID 1)
      • [2.3.1 镜像与容量计算](#2.3.1 镜像与容量计算)
      • [2.3.2 启动与写入演示](#2.3.2 启动与写入演示)
      • [2.3.3 单盘故障演示](#2.3.3 单盘故障演示)
      • [2.3.4 镜像重建演示](#2.3.4 镜像重建演示)
    • [2.4 RAID 5](#2.4 RAID 5)
      • [2.4.1 分布式奇偶校验与容量](#2.4.1 分布式奇偶校验与容量)
      • [2.4.2 启动与写入演示](#2.4.2 启动与写入演示)
      • [2.4.3 单盘故障与降级演示](#2.4.3 单盘故障与降级演示)
      • [2.4.4 软件与硬件重构演示](#2.4.4 软件与硬件重构演示)
    • [2.5 RAID 10](#2.5 RAID 10)
      • [2.5.1 镜像加条带与容量](#2.5.1 镜像加条带与容量)
      • [2.5.2 启动与写入演示](#2.5.2 启动与写入演示)
      • [2.5.3 镜像成员故障演示](#2.5.3 镜像成员故障演示)
      • [2.5.4 镜像重建演示](#2.5.4 镜像重建演示)
    • [2.6 RAID 级别对比与选择](#2.6 RAID 级别对比与选择)
  • [三、MBR 分区前置知识](#三、MBR 分区前置知识)
    • [3.1 MBR 的结构](#3.1 MBR 的结构)
    • [3.2 主分区、扩展分区和逻辑分区](#3.2 主分区、扩展分区和逻辑分区)
    • [3.3 磁盘设备命名](#3.3 磁盘设备命名)
    • [3.4 分区命名](#3.4 分区命名)
  • [四、MBR 磁盘分区实操](#四、MBR 磁盘分区实操)
    • [4.1 分区、格式化与挂载的关系](#4.1 分区、格式化与挂载的关系)
    • [4.2 添加硬盘并确认设备](#4.2 添加硬盘并确认设备)
    • [4.3 使用 fdisk 创建 20MB 分区](#4.3 使用 fdisk 创建 20MB 分区)
    • [4.4 使用剩余空间创建分区](#4.4 使用剩余空间创建分区)
    • [4.5 创建文件系统](#4.5 创建文件系统)
    • [4.6 临时挂载与卸载](#4.6 临时挂载与卸载)
    • [4.7 使用 fstab 永久挂载](#4.7 使用 fstab 永久挂载)
    • [4.8 挂载光盘](#4.8 挂载光盘)
  • 五、常用检查与排错命令
  • 总结
  • 六、注意事项

一、磁盘基础知识

1.1 磁盘与内存的区别

内存和磁盘都能保存数据,但用途和工作方式完全不同。

  • 内存(RAM)保存 CPU 当前需要快速访问的数据,速度快,但断电后数据通常丢失。
  • 磁盘用于长期保存操作系统、程序、日志和业务数据,断电后数据仍然保留。
特性 内存 RAM 磁盘 HDD/SSD
存储性质 易失性临时存储 非易失性长期存储
断电后数据 通常丢失 保留
访问速度 极快 HDD 较慢,SSD 较快
容量 相对较小 相对较大
主要用途 保存正在运行的程序和数据 保存系统、软件、文件和日志
物理形式 DRAM 芯片 机械盘片或 NAND 闪存
成本 每 GB 成本较高 每 GB 成本通常更低

需要注意,SSD 虽然名字里也有"硬盘",但它不依赖磁记录,而是使用 NAND 闪存保存数据。因此更准确的说法是:长期存储设备主要包括机械硬盘和固态硬盘。

1.2 机械硬盘 HDD 与固态硬盘 SSD

机械硬盘 HDD 通过高速旋转的磁性盘片和移动磁头读写数据;固态硬盘 SSD 通过电子信号访问 NAND 闪存,没有磁头、电机等机械活动部件。

特性 机械硬盘 HDD 固态硬盘 SSD
存储介质 磁性盘片 NAND 闪存颗粒
读写方式 磁头移动并等待盘片旋转 控制器通过电子信号访问闪存
顺序速度 常见约 100~250 MB/s SATA SSD 常见约 500 MB/s,NVMe SSD 可达数 GB/s
随机访问延迟 毫秒级 微秒级到较低毫秒级
抗震性 较弱,运行中碰撞风险高 较强,无机械寻道结构
噪音 有电机和磁头声音 基本静音
功耗 相对较高 通常较低,高性能 NVMe 也可能明显发热
常见故障 电机、磁头、盘片、坏道 NAND 磨损、控制器或固件故障
数据恢复 部分物理故障可以专业开盘恢复 控制器或芯片损坏时恢复难度通常更高
典型优势 大容量、每 TB 成本低 低延迟、高随机性能、抗震

磁盘性能不能只看顺序带宽。数据库、虚拟化和高并发小文件场景更依赖随机 IOPS 和延迟;备份、归档、大文件顺序读写则更关注容量和顺序吞吐。

1.3 常见磁盘接口

磁盘接口决定存储设备怎样连接主机、使用哪条传输通道以及采用什么命令协议,直接影响性能、兼容性、可靠性和维护方式。日常所说的"磁盘接口"经常把下面几个概念混在一起:

概念 解决的问题 常见例子
外形规格 设备有多大、怎样安装 3.5 英寸、2.5 英寸、M.2 2280、PCIe 插卡
物理连接器 插头和插座长什么样 SATA 接头、SAS 接头、U.2 接头、M Key 金手指
传输总线 数据通过哪条通道传输 SATA、SAS、PCIe
命令协议 主机怎样向磁盘下达读写命令 ATA/AHCI、SCSI、NVMe

这几个概念不能直接画等号。例如,M.2 是外形规格,M.2 SSD 既可能使用 SATA/AHCI,也可能使用 PCIe/NVMe;U.2 是面向 2.5 英寸设备的连接形态,常见 U.2 SSD 实际传输的是 PCIe/NVMe;PCIe 则是一种高速总线,可以承载 NVMe 固态硬盘,也可以连接网卡、显卡等其他设备。

常见称呼 主要总线或协议 常见设备形态 典型特点 常见场景
SATA SATA + ATA/AHCI 3.5 英寸 HDD、2.5 英寸 HDD/SSD 兼容广、成本低、性能上限较低 PC、备份盘、普通服务器
SAS SAS + SCSI 2.5/3.5 英寸企业 HDD、企业 SSD 双端口、可靠性和队列能力较强 服务器、磁盘阵列、共享存储
PCIe/NVMe PCIe + NVMe M.2、PCIe AIC 插卡、U.2 低延迟、高并发、高吞吐 PC、数据库、虚拟化、高性能计算
U.2 常见为 PCIe + NVMe 带金属外壳的 2.5 英寸企业 SSD 易散热,适合背板和热插拔维护 数据中心服务器、全闪存阵列
1.3.1 SATA 接口

SATA 全称 Serial ATA,是 PATA 之后普及最广的串行存储接口。原资料图片展示了 SATA 硬盘尾部两个彼此分开的接口:

  • SATA 数据接口:通常为 7 针,负责传输命令和数据,需要连接主板或磁盘控制器。
  • SATA 供电接口:通常为 15 针,由电源或服务器背板为磁盘供电。
  • 两个接口都带有防反插的 L 形缺口,安装时应对准方向,不能强行插入。
  • 常见设备包括 3.5 英寸机械硬盘、2.5 英寸机械硬盘、2.5 英寸 SATA SSD 和部分光驱。

常见的 SATA 3.0 链路标称速率为 6Gb/s。受编码和协议开销影响,2.5 英寸 SATA SSD 的实际顺序读写上限通常在 500~550MB/s 左右;机械硬盘受盘片和磁头限制,通常远达不到接口上限。因此,接口带宽并不等于磁盘一定能跑到的实际速度。

SATA 设备是否支持热插拔,还取决于控制器工作模式、驱动、背板、电源设计和操作系统配置,不能仅凭接口外形判断。

1.3.2 SAS 接口

SAS 全称 Serial Attached SCSI,主要面向服务器和企业存储。它继承了 SCSI 命令体系,通常比消费级 SATA 更强调并发访问、故障恢复、冗余链路和长时间持续运行。

  • 企业 SAS 硬盘常见 10K RPM、15K RPM 机械盘,也有 SAS SSD。
  • 双端口 SAS 磁盘可以通过两条独立路径连接控制器,方便构建冗余访问链路。
  • SAS 适合磁盘柜、存储阵列和需要多路径访问的服务器场景。
  • SAS 控制器、背板和磁盘通常支持更完善的错误报告与管理能力,但成本也高于普通 SATA 方案。

需要注意,热插拔和双路径并不是插上一块 SAS 硬盘就自动实现。服务器背板、RAID/HBA 控制器、线缆和操作系统都必须支持对应能力。

1.3.3 PCIe 接口

原资料中的图片展示的是 PCIe AIC(Add-in Card,扩展卡)形态的固态硬盘,它通过金手指直接插入主板 PCIe 插槽。PCIe 本质上是高速总线,不是专门为磁盘定义的单一外形。

  • PCIe 使用 Lane(通道)传输数据,常见规格有 x1x4x8x16,数字表示通道数量。
  • NVMe 固态硬盘常见使用 PCIe x4 通道,但实际带宽还取决于 PCIe 代际、控制器和闪存性能。
  • 同样使用 PCIe/NVMe 的固态硬盘,可以做成 M.2 卡片、U.2 盘或 PCIe AIC 插卡。
  • PCIe AIC 固态硬盘空间较大,便于布置更多闪存颗粒、控制器和散热器,但会占用主板扩展槽。

资料中把 PCIe 归为企业级接口,是基于早期高性能存储的常见应用。现在 PCIe/NVMe 已广泛用于台式机、笔记本和工作站,并不只属于企业环境。

1.3.4 U.2 接口

U.2 原名 SFF-8639,常见于带金属外壳的 2.5 英寸企业 NVMe SSD。它不是"和 PCIe 类似"的另一套传输协议,而是把 PCIe 通道、电源和管理信号引到 2.5 英寸设备上的连接方案,常见上层存储协议为 NVMe。

  • 外壳与普通 2.5 英寸硬盘相近,但接头、电气定义和协议并不相同。
  • 通过服务器前置背板可以方便地插拔和更换磁盘,更适合批量维护。
  • 金属外壳和更大的表面积有利于散热,适合持续高负载运行。
  • 常见于数据库服务器、虚拟化平台、全闪存阵列和高性能存储节点。

U.2 SSD 不能因为外形像 2.5 英寸 SATA/SAS 硬盘,就直接插到普通 SATA 接口上使用。主板、HBA/RAID 控制器、背板和线缆必须明确支持 U.2 或对应的 PCIe/NVMe 通道;部分企业三模控制器可以同时管理 SAS、SATA 和 NVMe,但仍要核对具体型号。

1.3.5 SATA 与 SAS 接口对比

SATA 和 SAS 硬盘的外形很接近,最直观的区别在接头中间区域。SATA 的数据接口与供电接口之间有明显断口;常见 SAS 盘的连接区域是连续结构,并包含额外信号触点。不能只看硬盘尺寸判断接口类型。

对比项 SATA SAS
定位 消费级和通用存储 企业服务器和存储阵列
常见命令体系 ATA/AHCI SCSI
端口设计 常见单端口 企业盘常见双端口
可靠性与管理 满足个人和普通服务器需求 更强调多路径、错误处理和持续负载
常见设备 大容量 HDD、2.5 英寸 SATA SSD 10K/15K HDD、企业 SAS SSD
控制器兼容关系 SATA 控制器通常只能接 SATA 盘 SAS 控制器通常可以接 SAS 盘,也常能兼容 SATA 盘

这里最容易记反的是兼容方向:SAS 控制器通常可以识别 SATA 磁盘,普通 SATA 控制器通常不能识别 SAS 磁盘。即便控制器支持,也要继续确认服务器背板、托架和线缆是否兼容。

1.3.6 接口选择速查
需求 常见选择 选择原因
大容量备份和归档 SATA HDD 单位容量成本低,适合顺序读写
普通系统盘和旧设备升级 2.5 英寸 SATA SSD 兼容性广,延迟明显低于 HDD
笔记本和桌面高性能存储 M.2 PCIe/NVMe SSD 体积小、延迟低、吞吐高
传统企业服务器机械盘 SAS HDD 适合背板、阵列和持续负载
企业级高性能闪存 U.2 NVMe SSD、PCIe AIC SSD 散热、吞吐和维护能力更适合服务器

复习时可以抓住四句话:SATA 重在普及和成本,SAS 重在企业可靠性,PCIe 提供高速通道,U.2 把 PCIe/NVMe 做成便于服务器维护的 2.5 英寸形态。

1.4 企业环境磁盘选型

资料中的选型建议来自传统物理服务器场景:备份偏向大容量 SATA,业务服务器可能使用高速 SAS,高并发业务使用企业 SSD。实际选型还要结合 IOPS、延迟、容量、耐久度、冗余方式、是否支持热插拔和预算综合判断。

工作负载 更关注的指标 常见选择思路
备份与归档 容量、每 TB 成本、顺序吞吐 大容量 SATA/NL-SAS HDD,配合 RAID 和异地副本
操作系统盘 可靠性、启动速度、维护方便 RAID 1 SSD 或企业 HDD
普通 Web 服务 读性能、容量和成本平衡 企业 SATA/SAS SSD 或云盘
数据库与虚拟化 低延迟、高随机 IOPS、写入耐久 企业 NVMe/U.2 SSD,合理设置 RAID
日志与缓存 顺序写、耐久度、故障可恢复性 根据数据价值选择 SSD、HDD 或分层存储

机械硬盘常见的 7200 RPM10K RPM15K RPM 表示每分钟转数,英文是 Revolutions Per Minute。转速越高通常寻道等待越短,但功耗、噪音和发热也更高。

在公有云中,用户通常看不到底层物理磁盘,需要关注云盘类型、IOPS、吞吐、容量、突发策略、快照和多副本能力。

1.5 机械硬盘内部结构

机械硬盘内部是精密的机械与电子系统,主要部件包括:

部件 作用
盘片 表面覆盖磁性材料,真正保存数据
主轴与主轴电机 带动盘片稳定高速旋转
磁头 悬浮在盘片表面附近,完成磁信号读写
磁头臂 带动磁头移动到不同磁道
音圈马达与执行器 精确控制磁头臂位置
停泊区 断电或空闲时让磁头离开数据区域
空气过滤组件 控制盘腔内部微粒,不能当作普通可拆洗滤网
控制器 PCB 负责接口通信、缓存、马达与磁头控制
缓存芯片 缓冲部分读写请求,容量通常远小于盘片容量
外壳与密封盖 维持精密盘腔环境并固定组件
磁道、扇区和柱面
  • 磁道:盘片表面的同心圆区域。
  • 扇区:磁道上的数据块。传统逻辑扇区常见 512 字节,现代磁盘也常见 4K 物理扇区。
  • 柱面:传统 CHS 寻址中的概念,表示多个盘面上半径相同的磁道集合。

现代系统主要使用 LBA 逻辑块地址,不再依赖管理员手工计算柱面,但理解这些概念有助于认识 MBR 和早期磁盘结构。

1.6 固态硬盘内部结构

上图展示的是常见的 2.5 英寸 SATA SSD。它使用与 2.5 英寸笔记本机械硬盘相近的外形,通过 SATA 数据接口和 SATA 电源接口连接主机。

固态硬盘没有盘片和磁头,主要由电子元件组成:

部件 作用
NAND 闪存颗粒 长期保存数据,是 SSD 的主要容量来源
SSD 控制器 负责地址映射、垃圾回收、磨损均衡、纠错和接口通信
DRAM 缓存 保存映射表和缓存数据,部分无 DRAM 型号没有独立 DRAM
电源管理与保护电路 稳压、供电管理,部分企业盘带掉电保护
PCB 电路板 连接控制器、闪存、缓存和接口
SATA 或 PCIe/NVMe 接口 连接主机并传输命令和数据
导热垫与外壳 保护元件并帮助散热,不同形态结构不同

笔记本电脑和现代主板中还常见细长的 M.2 固态硬盘。下面这张图只展示 M.2 2280 NVMe SSD 本体及其内部元件。

需要特别注意:M.2 描述的是外形规格,NVMe 描述的是存储协议,二者不是同一个概念。外观看起来相似的 M.2 固态硬盘,可能使用 SATA 协议,也可能使用 PCIe 通道上的 NVMe 协议。

类型 外形与通道 主要特点
2.5 英寸 SATA SSD 2.5 英寸外壳,通过 SATA 数据线和电源线连接 兼容性广,顺序传输速度通常受 SATA 6Gb/s 限制,常见上限约 550MB/s
M.2 SATA SSD M.2 卡片外形,但仍使用 SATA 协议 体积更小,性能通常与 2.5 英寸 SATA SSD 接近
M.2 NVMe SSD M.2 卡片外形,通过 PCIe 通道运行 NVMe 协议 延迟更低、吞吐量更高,具体速度取决于 PCIe 代际和通道数

M.2 2280 中的 22 表示宽度约 22 毫米,80 表示长度约 80 毫米。M.2 设备还可能使用 B Key、M Key 或 B+M Key 缺口;常见的 PCIe x4 NVMe SSD 多为 M Key。安装前必须查看笔记本或主板说明,确认插槽支持的尺寸、协议和 Key 类型,因为并非所有 M.2 插槽都同时支持 SATA 与 NVMe。

SSD 的"写入次数限制"不是写几次就坏,而是 NAND 擦写寿命有限。产品通常使用 TBW、DWPD 等指标描述耐久度。控制器会通过磨损均衡,把写入尽量分散到不同闪存单元。

二、RAID 磁盘阵列

2.1 RAID 的作用

RAID 全称 Redundant Array of Independent Disks,即独立磁盘冗余阵列。它按照一定规则把多块物理磁盘组合成一个逻辑磁盘,让操作系统像使用一块磁盘一样使用整个阵列。

RAID 主要在三个目标之间取舍:

  1. 性能:把数据分散到多块盘并行读写。
  2. 容量:把多块盘的可用空间组合起来。
  3. 容错:通过镜像或校验信息,在部分成员盘故障后继续提供数据。

没有一种 RAID 能同时做到容量利用率最高、性能最高、容错最强。RAID 级别不同,本质上就是对这三个目标做不同取舍。

必须先记住:RAID 不是备份。RAID 可以应对规定范围内的磁盘故障,但无法防止误删除、勒索软件、文件系统损坏、控制器故障、机房事故和错误同步。重要数据仍然需要独立备份、异地副本和恢复验证。

2.1.1 RAID 的实现方式
实现方式 工作位置 主要特点 注意事项
硬件 RAID 独立 RAID 控制器 操作系统通常只看到控制器提供的逻辑磁盘,可带缓存和掉电保护 成本较高,需要关注控制器、缓存电池和阵列配置备份
软件 RAID 操作系统内核 Linux 常用 mdadm 管理,配置透明、成本低、迁移灵活 会使用主机 CPU 和内存,系统盘恢复流程要提前演练
主板固件 RAID BIOS/UEFI 与驱动共同实现 常见于部分桌面和入门服务器,介于硬件与软件之间 对主板和驱动依赖较强,跨平台迁移要谨慎

硬件 RAID 并不天然比软件 RAID 安全。真正影响可靠性的因素还包括控制器固件、缓存策略、掉电保护、磁盘质量、监控告警、备件和恢复流程。

2.1.2 RAID 常见术语与运行状态
术语 含义
成员盘 加入阵列的物理磁盘
逻辑盘 RAID 向操作系统提供的逻辑存储设备
条带 被分散到多块成员盘上的一组连续数据
条带单元 每次写入单块成员盘的数据块大小,也常被称为 chunk
镜像 把同一份数据写到多个成员盘
奇偶校验 根据多个数据块计算出的校验信息,可用于重构缺失数据
热备盘 平时不承载正常数据,成员盘故障后可自动加入重建
重建 根据镜像副本或校验信息,把数据恢复到替换盘的过程

常见运行状态:

状态 含义 处理原则
Optimal/Normal 阵列和成员盘正常 持续监控即可
Degraded 冗余阵列已有成员盘故障,但数据仍可访问 立即确认故障盘并按规范更换
Rebuilding 正在向替换盘重建数据 监控进度、温度、负载和剩余成员盘健康状态
Failed/Offline 故障数量超出 RAID 容忍范围 停止盲目操作,按恢复预案处理
2.1.3 Linux 中查看 RAID 状态

Linux 软件 RAID 常用:

bash 复制代码
cat /proc/mdstat
mdadm --detail /dev/md0

硬件 RAID 的物理成员盘通常藏在控制器后面,lsblk 可能只能看到逻辑盘。此时需要使用控制器厂商工具,例如 storclipercclissacli。具体命令取决于服务器和 RAID 卡型号,不能只看操作系统中的 /dev/sdX 判断成员盘是否健康。

2.2 RAID 0

RAID 0 只使用条带化,没有镜像,也没有奇偶校验。它追求容量和并行读写性能,不提供任何成员盘容错能力。

2.2.1 条带化与容量计算

假设一份数据被分成 A1~A6 六个数据块,两块成员盘中的分布可以理解为:

text 复制代码
磁盘 1:A1  A3  A5
磁盘 2:A2  A4  A6

两块磁盘可以同时读写不同数据块,因此顺序吞吐和并发能力通常会提高。不过,阵列中的任意一块盘损坏,文件的一部分数据块就会缺失,整个阵列通常无法继续正常使用。

text 复制代码
可用容量 = 成员盘数量 N × 最小成员盘容量

两块 1TB 磁盘组成 RAID 0,理论可用容量约 2TB。若使用一块 1TB 和一块 2TB 磁盘,通常只能按最小成员盘计算,有效容量约 2TB,较大磁盘多出的空间无法在该阵列中正常利用。

典型场景包括可重新生成的临时数据、渲染缓存和对吞吐要求高但不要求单盘容错的工作负载。重要数据不应只保存在 RAID 0 上。

2.2.2 启动与写入演示

写入时,数据块依次分散到不同成员盘,并组合成一个逻辑盘提供给上层系统。

raid0-startup

2.2.3 单盘故障演示

任意成员盘故障后,条带中的部分数据块丢失。即使其他磁盘仍然完好,也无法拼出完整数据。

raid0-failure

2.2.4 重建演示

录像中的 Format 会重新初始化阵列结构,使它能够重新写入,但这不等于恢复原数据。RAID 0 没有镜像和校验信息,故障后的原数据通常只能从独立备份恢复。

raid0-recovery

2.3 RAID 1

RAID 1 使用镜像,同一份数据同时写入多个成员盘。最常见的是两盘镜像,适合系统盘、数据库日志和容量不大但要求单盘容错的数据。

2.3.1 镜像与容量计算
text 复制代码
磁盘 1:A1  A2  A3  A4
磁盘 2:A1  A2  A3  A4

两块盘保存完全相同的数据,因此:

text 复制代码
两盘 RAID 1 可用容量 = 最小成员盘容量

两块 1TB 磁盘组成 RAID 1,可用容量约 1TB,容量利用率约 50%。如果一块是 1TB、另一块是 2TB,可用容量通常仍约为 1TB。

读取时,控制器可以根据实现从不同镜像成员分担读请求;写入时,每份数据都要写入所有镜像成员,写入延迟通常受较慢成员盘和控制器策略影响。不能简单理解为"两块盘让写入速度翻倍"。

2.3.2 启动与写入演示

写入逻辑盘的数据会同步复制到两块镜像成员上。

raid1-startup

2.3.3 单盘故障演示

一块成员盘故障后,阵列进入 Degraded 状态,但可以继续从另一块镜像盘读取数据。此时已经没有冗余,不能因为业务仍能访问就推迟处理。

raid1-failure

2.3.4 镜像重建演示

更换故障盘后,RAID 会把健康镜像盘的数据复制到新盘。重建完成前仍处于风险窗口,必须持续监控进度和健康盘状态。

raid1-recovery

更换磁盘前一定要根据序列号、槽位号和控制器告警确认故障成员。拔错健康盘可能让本来可用的 RAID 1 直接失效。

2.4 RAID 5

RAID 5 使用块级条带和分布式奇偶校验,在容量利用率和单盘容错之间做折中。它至少需要 3 块磁盘,常见于文件存储、NAS 和顺序读取较多的场景。

2.4.1 分布式奇偶校验与容量

奇偶校验可以用异或运算理解。假设两个数据块为 AB,校验块为 P

text 复制代码
P = A XOR B

A 丢失时,可以通过下面的关系重构:

text 复制代码
A = B XOR P

RAID 5 不会把所有校验块固定放在同一块盘,而是把它们轮流分散到不同成员盘,避免单独的校验盘成为固定瓶颈。

text 复制代码
可用容量 = (成员盘数量 N - 1) × 最小成员盘容量

四块 1TB 磁盘组成 RAID 5,可用容量约 3TB。四块磁盘中如果有一块只有 500GB,阵列通常按 500GB 计算,可用容量约为 3 × 500GB = 1.5TB

RAID 5 的读取性能通常较好,但小块随机写入需要更新数据和校验。常见的"读改写"过程包括读取旧数据、读取旧校验、计算新校验、写入新数据和新校验,因此随机写性能通常弱于 RAID 10。控制器缓存和整条带写入可以减轻开销,但不能让校验成本消失。

2.4.2 启动与写入演示

动画中的数据块和校验块分散在四块成员盘上,逻辑盘容量相当于其中三块盘。

raid5-startup

2.4.3 单盘故障与降级演示

一块盘故障后,RAID 5 可以利用其余数据块和校验块即时计算缺失数据,因此逻辑盘仍可访问,但阵列已经进入 Degraded 状态。降级读取会增加控制器、CPU 和剩余磁盘的压力。

raid5-failure

RAID 5 最多容忍一块成员盘故障。如果重建完成前再损坏一块盘,阵列通常会失败。因此,大容量磁盘、长时间重建和老化磁盘组合会扩大风险窗口。

2.4.4 软件与硬件重构演示

录像保留了两种恢复动画:

  • Recover S/W:用剩余数据和奇偶校验在逻辑层重构缺失内容,可以理解为降级状态下的实时计算。
  • Recover H/W:加入替换盘后,把重构出的完整数据持续写回新盘,直到阵列恢复正常冗余。

raid5-recovery

这是用于理解原理的模拟分类。真实环境中,两种计算都可能由 RAID 控制器固件或 Linux 软件 RAID 完成。更换磁盘后要确认阵列确实进入 Rebuilding,并在完成后检查所有成员盘和一致性状态。

2.5 RAID 10

RAID 10 组合了 RAID 1 和 RAID 0 的思路:先把磁盘两两组成镜像组,再在多个镜像组之间做条带。它至少需要 4 块磁盘,通常使用偶数块。

2.5.1 镜像加条带与容量

四盘 RAID 10 可以理解为:

text 复制代码
镜像组 A:磁盘 1 <-> 磁盘 2
镜像组 B:磁盘 3 <-> 磁盘 4

数据再在镜像组 A、B 之间条带化写入
text 复制代码
可用容量 = (成员盘数量 N / 2) × 最小成员盘容量

四块 1TB 磁盘组成 RAID 10,可用容量约 2TB。它的容量利用率通常为 50%,但随机读写和重建性能通常优于 RAID 5,适合数据库、虚拟化、高负载业务和对恢复时间敏感的系统。

RAID 10 的容错能力取决于故障分布。四盘阵列中,如果损坏的两块盘分别来自不同镜像组,阵列可能仍然可用;如果同一个镜像组的两块成员都损坏,整个阵列会失败。因此不能简单说 RAID 10 "一定能坏两块盘"。

2.5.2 启动与写入演示

数据先在镜像组之间条带化,再在组内保留相同副本。

raid10-startup

2.5.3 镜像成员故障演示

一个镜像组中损坏一块成员盘后,另一个镜像成员仍然可以提供完整数据,阵列进入降级状态。

raid10-failure

2.5.4 镜像重建演示

更换故障盘后,只需从同一镜像组的健康成员复制数据到新盘,不需要像 RAID 5 那样遍历所有成员计算分布式校验,因此重建过程通常更直接。

raid10-recovery

2.6 RAID 级别对比与选择

级别 最少磁盘 常见容量公式 成员盘容错 写入特点 典型场景
RAID 0 2 N × Smin 0 块 并行条带,无冗余开销 临时数据、可重建缓存
RAID 1 2 一组镜像约为 Smin 两盘镜像可坏 1 块 每份数据写入全部镜像成员 系统盘、日志、重要小容量数据
RAID 5 3 (N-1) × Smin 1 块 小随机写有校验开销 文件服务器、NAS、读取较多的存储
RAID 10 4 (N/2) × Smin 取决于故障是否落在同一镜像组 条带加镜像,随机 I/O 较好 数据库、虚拟化、高负载业务

其中 N 表示成员盘数量,Smin 表示最小成员盘容量。

选择 RAID 时不能只看容量公式,还要考虑:

  1. 单盘容量越大,重建通常越久,风险窗口也越长。
  2. 重建会降低阵列性能,并增加剩余成员盘的读取压力。
  3. 同一阵列尽量使用容量、性能和耐久度接近的磁盘。
  4. 热备盘只能缩短开始重建的等待时间,不能替代备份。
  5. RAID 控制器使用 Write Back 缓存时,应确认有电池或闪存掉电保护。
  6. 生产环境应监控 SMART、控制器告警、巡检结果和重建进度。
  7. 拔盘前必须核对槽位、序列号和故障灯,不能只凭 /dev/sdX 名称判断。
  8. 大容量机械盘阵列还应评估 RAID 6 等双校验方案,但这超出本篇范围。

常见选择思路:系统盘优先考虑 RAID 1;随机 I/O 较多且重建时间敏感的数据库、虚拟化环境常考虑 RAID 10;读取较多、需要兼顾容量与单盘容错的文件存储可考虑 RAID 5;RAID 0 只适合丢失后能够重新生成的数据。

三、MBR 分区前置知识

3.1 MBR 的结构

MBR 全称 Master Boot Record,主引导记录。传统 MBR 位于磁盘第一个逻辑扇区,经典大小为 512 字节。

区域 大小 作用
引导代码 446 字节 早期启动代码,将控制权交给后续引导程序或活动分区
分区表 64 字节 4 个分区表项,每项 16 字节
结束标志 2 字节 典型值为 0x55AA

总计:

text 复制代码
446 + 64 + 2 = 512 字节

MBR 的主要局限:

  1. 只有 4 个分区表项。
  2. 最多创建 4 个主分区,或 3 个主分区加 1 个扩展分区。
  3. 在常见 512 字节逻辑扇区下,传统 MBR 可管理空间通常约 2TiB。
  4. 关键分区信息集中在磁盘前部,冗余和校验能力弱于 GPT。

3.2 主分区、扩展分区和逻辑分区

主分区

主分区直接记录在 MBR 的 4 个分区表项中,可以创建文件系统并直接使用。

扩展分区

扩展分区也占用一个主分区表项,但它是逻辑分区的容器,不能像普通数据分区一样直接格式化使用。一个 MBR 磁盘最多只能有一个扩展分区。

逻辑分区

逻辑分区建立在扩展分区内部,用于突破 4 个分区表项的数量限制。

常见组合:

text 复制代码
3 个主分区 + 1 个扩展分区
扩展分区内部继续创建多个逻辑分区

需要注意,扩展分区本身不是第五个额外分区表项,它仍然占用 4 个 MBR 表项中的一个。

3.3 磁盘设备命名

传统块设备常见命名:

场景 设备示例 说明
SATA/SAS/SCSI 磁盘 /dev/sda/dev/sdb 字母表示磁盘顺序
KVM VirtIO 云盘 /dev/vda/dev/vdb 常见于虚拟机和公有云
NVMe SSD /dev/nvme0n1/dev/nvme1n1 控制器和命名空间共同组成设备名

示例:

text 复制代码
/dev/sda:第一块 sd 类磁盘
/dev/sdb:第二块 sd 类磁盘
/dev/vde:第五块 vd 类虚拟磁盘

设备字母并不适合作为永久身份标识。磁盘枚举顺序可能变化,永久挂载优先使用文件系统 UUID、LABEL 或稳定的 /dev/disk/by-* 路径。

3.4 分区命名

对于 /dev/sdX/dev/vdX

  • 主分区或扩展分区通常使用编号 1~4。
  • MBR 逻辑分区编号通常从 5 开始。

示例:

text 复制代码
/dev/sda1:第一块 SATA/SAS 磁盘的第 1 个分区
/dev/sdc6:第三块 sd 类磁盘的第 6 个分区,MBR 下通常是逻辑分区
/dev/vde3:第五块 VirtIO 云盘的第 3 个分区

NVMe 分区会增加 p

text 复制代码
/dev/nvme0n1p1
/dev/nvme0n1p2

四、MBR 磁盘分区实操

4.1 分区、格式化与挂载的关系

可以用装修房间来理解:

  1. 分区:给一块磁盘划分边界,相当于打隔断。
  2. 格式化:在分区上创建文件系统,相当于完成内部基础装修和编号规则。
  3. 挂载:把文件系统接入 Linux 目录树,相当于给房间安装入口。

完整流程:

text 复制代码
识别磁盘
-> 创建分区表项
-> 让内核重新读取分区表
-> 创建文件系统
-> 创建挂载点
-> 临时挂载并验证
-> 写入 /etc/fstab
-> mount -a 验证永久挂载

挂载点是目录树中的入口,一般使用专门创建的空目录。如果把文件系统挂载到已有内容的目录上,原目录内容不会被删除,但会暂时被挂载的文件系统遮住,卸载后才重新显示。

4.2 添加硬盘并确认设备

虚拟机实验可以在 VMware 设置中添加一块 1GB 测试硬盘,重新扫描总线或重启系统后确认设备。

资料使用:

bash 复制代码
fdisk -l | grep /dev/sd

示例:

text 复制代码
磁盘 /dev/sda:53.7 GB
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   104857599    51379200   8e  Linux LVM
磁盘 /dev/sdb:1073 MB
磁盘 /dev/sdc:1073 MB

更适合日常检查的命令:

bash 复制代码
lsblk
lsblk -f
fdisk -l

lsblk 可以直观看到磁盘、分区、文件系统和挂载关系。进行分区前,必须确认 /dev/sdb 确实是新测试盘,不能只凭"看起来像第二块盘"就操作。

4.3 使用 fdisk 创建 20MB 分区

进入 /dev/sdb 的分区交互界面:

bash 复制代码
fdisk /dev/sdb

输入 m 查看帮助:

text 复制代码
m

创建 20MB 主分区的典型输入过程:

text 复制代码
n        # 新建分区
p        # 主分区
1        # 分区编号 1
Enter    # 使用默认起始扇区
+20M     # 分区大小 20MB
p        # 打印当前分区表,检查结果
w        # 写入磁盘并退出

写入后查看:

bash 复制代码
fdisk -l /dev/sdb
lsblk /dev/sdb

如果内核没有立即识别新分区,可以执行:

bash 复制代码
partprobe /dev/sdb
udevadm settle

仍未识别时再评估是否需要重启。不要在有业务 I/O 的磁盘上随意重读或修改分区表。

fdisk 中常用按键:

按键 作用
m 查看帮助
p 打印分区表
n 新建分区
d 删除分区表项
t 修改分区类型
w 保存并退出
q 不保存退出

输入错误但还没有按 w 时,可以使用 q 不保存退出,重新检查后再操作。交互输入出现乱码字符时,资料建议使用 Ctrl+U 清空当前输入行。

4.4 使用剩余空间创建分区

再次进入:

bash 复制代码
fdisk /dev/sdb

如果要创建第二个分区并使用全部剩余空间,典型输入:

text 复制代码
n        # 新建分区
p        # 主分区
2        # 分区编号 2
Enter    # 默认起始扇区
Enter    # 默认结束扇区,使用全部剩余空间
p        # 检查分区表
w        # 写入并退出

重新读取并检查:

bash 复制代码
partprobe /dev/sdb
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS /dev/sdb

分区表操作只是在磁盘上记录边界,不会自动创建文件系统,也不会自动挂载。

4.5 创建文件系统

格式化的本质是在分区上创建文件系统元数据,让操作系统能够管理目录、文件、权限和空闲空间。

常见文件系统
文件系统 常见场景 特点
XFS RHEL/CentOS 7+ 常见默认文件系统 扩展性和并发性能好,不能直接缩小文件系统
ext4 通用 Linux 文件系统 成熟稳定,工具丰富,可扩展也可在离线条件下缩小
NTFS Windows 系统盘和移动存储 Linux 读写支持取决于内核和工具
FAT32 U 盘、固件和跨平台交换 兼容性好,但单文件最大约 4GB,权限能力有限

查看系统支持的格式化工具:

bash 复制代码
ls /sbin/mkfs.*
创建 XFS
bash 复制代码
mkfs.xfs /dev/sdb1
创建 ext4
bash 复制代码
mkfs.ext4 /dev/sdb2

查看文件系统:

bash 复制代码
lsblk -f
blkid /dev/sdb1 /dev/sdb2

如果分区上已经存在文件系统,mkfs.xfs 会拒绝覆盖。强制重新格式化可以使用:

bash 复制代码
mkfs.xfs -f /dev/sdb1

强制格式化会破坏原有文件系统和数据,只能在确认设备、确认备份、确认不需要原数据后使用。不要因为看到报错就直接追加 -f

4.6 临时挂载与卸载

查看挂载和容量
bash 复制代码
df -h
df -hT
  • -h:使用便于阅读的容量单位。
  • -T:显示文件系统类型。

df 主要展示已经挂载的文件系统。查看未挂载磁盘和分区应配合:

bash 复制代码
lsblk -f
blkid
创建挂载点并挂载
bash 复制代码
mkdir -p /data
mount /dev/sdb1 /data

验证:

bash 复制代码
findmnt /data
df -hT /data
mount | grep '/data'

此时 /data/dev/sdb1 文件系统的访问入口。使用命令手工挂载通常只对当前运行周期有效,重启后需要重新挂载。

卸载

可以按挂载点卸载:

bash 复制代码
umount /data

也可以按设备卸载:

bash 复制代码
umount /dev/sdb1

如果提示目标忙:

text 复制代码
target is busy

先离开挂载目录,再检查哪个进程正在使用:

bash 复制代码
cd /
lsof +f -- /data
fuser -vm /data

停止或迁移相关进程后再卸载。umount -l 延迟卸载和 umount -f 强制卸载都有适用条件,不能作为普通报错的第一选择。

4.7 使用 fstab 永久挂载

永久挂载常见方式:

  1. /etc/rc.local 中执行 mount 命令。
  2. /etc/fstab 中声明文件系统挂载关系。

更推荐 /etc/fstab,因为系统能够统一解析、检查和生成对应的 systemd Mount Unit。rc.local 属于旧式兼容方案,还受执行权限、启动顺序和脚本错误影响。

备份 fstab
bash 复制代码
cp -a /etc/fstab /etc/fstab.bak.$(date +%F-%H%M%S)
获取 UUID
bash 复制代码
blkid /dev/sdb1

输出示例:

text 复制代码
/dev/sdb1: UUID="048c0c5e-xxxx-xxxx-xxxx-xxxxxxxxxxxx" TYPE="xfs"

相比 /dev/sdb1,UUID 不依赖磁盘枚举顺序,更适合永久挂载。

fstab 六列含义
text 复制代码
UUID=048c0c5e-...  /data  xfs  defaults  0  0
含义 示例
1 设备、UUID、LABEL 或网络文件系统 UUID=048c0c5e-...
2 挂载点 /data
3 文件系统类型 xfsext4swap
4 挂载选项 defaultsronoexec
5 dump 备份标记,通常写 0 0
6 fsck 启动检查顺序,0 表示不检查,根文件系统常为 1,其他 ext 文件系统可为 2 012

XFS 不通过传统启动 fsck 方式检查,常见配置是 0 0

写入配置
bash 复制代码
vim /etc/fstab

添加:

fstab 复制代码
UUID=048c0c5e-xxxx-xxxx-xxxx-xxxxxxxxxxxx /data xfs defaults 0 0
生效并验证

如果当前已经临时挂载,可以先卸载后测试:

bash 复制代码
umount /data
mount -a

检查:

bash 复制代码
findmnt /data
df -hT /data
findmnt --verify --verbose

systemd 系统修改 /etc/fstab 后,也可以执行:

bash 复制代码
systemctl daemon-reload

只有 mount -a 没有报错、挂载点正确、文件系统可读写时,才算完成配置。不要编辑完 /etc/fstab 就直接重启测试,语法或设备错误可能让系统进入 emergency mode。

4.8 挂载光盘

在 Linux 中,/dev/cdrom 通常是指向实际光驱设备的软链接,例如 /dev/sr0

bash 复制代码
ls -l /dev/cdrom

示例:

text 复制代码
/dev/cdrom -> sr0

创建挂载点并挂载:

bash 复制代码
mkdir -p /mnt/cdrom
mount /dev/cdrom /mnt/cdrom

光盘或 ISO 文件系统通常只读,因此看到下面的提示是正常现象:

text 复制代码
write-protected, mounting read-only

查看 RPM 包数量:

bash 复制代码
find /mnt/cdrom/Packages -maxdepth 1 -name '*.rpm' | wc -l

使用完成后卸载:

bash 复制代码
umount /mnt/cdrom

如果虚拟机中没有识别光盘,先检查 ISO 是否已连接、虚拟光驱是否勾选"已连接",再检查:

bash 复制代码
lsblk
dmesg | tail

五、常用检查与排错命令

目的 命令
查看磁盘和分区树 lsblk
查看文件系统、UUID、挂载点 lsblk -f
查看块设备 UUID blkid
查看分区表 fdisk -l
查看已挂载文件系统容量 df -hT
查看挂载关系 findmnt
查看当前所有挂载 mount
验证 fstab findmnt --verify --verbosemount -a
查看占用挂载点的进程 lsof +f -- /datafuser -vm /data
让内核重读分区表 partprobe /dev/sdb

场景一:系统看不到新硬盘

bash 复制代码
lsblk
fdisk -l
dmesg | tail -n 50

检查虚拟机或物理服务器是否已经连接设备,控制器驱动是否正常,以及是否需要重新扫描总线或重启。

场景二:有分区但无法挂载

bash 复制代码
lsblk -f
blkid /dev/sdb1

如果 FSTYPE 为空,通常还没有创建文件系统。如果已经有文件系统,继续检查内核是否支持该类型、文件系统是否损坏以及挂载选项是否正确。

场景三:重启后挂载消失

bash 复制代码
grep -vE '^\s*#|^\s*$' /etc/fstab
findmnt --verify --verbose
mount -a

检查 UUID、挂载点、文件系统类型和选项。

场景四:无法卸载

bash 复制代码
cd /
lsof +f -- /data
fuser -vm /data

退出挂载目录并处理占用进程后再执行 umount

总结

一块磁盘从硬件接入到存放文件,需要经历清晰的层次:硬件设备提供容量,RAID 组合多个物理盘,分区表记录空间边界,文件系统管理文件和目录,挂载把文件系统接入 Linux 目录树。

MBR 的核心限制来自 64 字节分区表和 4 个分区表项,因此才有主分区、扩展分区和逻辑分区。使用 fdisk 创建分区后,还必须创建文件系统,再通过 mount 关联挂载点。需要重启后自动挂载时,应使用 UUID 写入 /etc/fstab,并在重启前执行 mount -afindmnt --verify 验证。

磁盘操作的风险在于"设备选错往往不可逆"。因此每次执行 fdiskmkfs 或修改 /etc/fstab 前,都要先用 lsblk -fblkidfindmnt 确认设备身份、文件系统与挂载关系。

七、注意事项

  1. 执行 fdiskmkfswipefs 等命令前,至少用 lsblk -ffindmnt 确认设备。不要只凭 /dev/sdb 的字母顺序判断新硬盘。

  2. fdisk 中只有执行 w 才会写入分区表;发现选择错误时应使用 q 不保存退出,而不是继续尝试补救。

  3. 创建分区不会自动创建文件系统,创建文件系统也不会自动挂载。分区、格式化和挂载是三个不同步骤。

  4. mkfsmkfs.xfs -f 会破坏原有文件系统数据。看到"已有文件系统"提示时,应先检查设备是否选错,不能习惯性强制格式化。

  5. RAID 提供的是性能或磁盘级冗余,不是备份。重要数据必须有独立副本、异地保存和恢复演练。

  6. RAID 5 降级后只能再容忍零块成员盘故障,应尽快按规范更换磁盘并重建,不能长期带病运行。

  7. 挂载点最好使用专用空目录。挂载到已有数据的目录会暂时遮住原目录内容,容易造成"文件消失"的误判。

  8. 卸载提示 target is busy 时,先使用 lsoffuser 找到占用进程。不要把强制卸载和延迟卸载当成常规操作。

  9. /etc/fstab 优先使用 UUID,不建议长期依赖 /dev/sdb1。修改后必须先执行 findmnt --verify --verbosemount -a

  10. /etc/fstab 第 5 列是 dump 备份标记,第 6 列是 fsck 检查顺序,不是两个"是否备份"字段。

  11. df 主要查看已经挂载的文件系统;想查看尚未挂载的磁盘和分区,应使用 lsblkfdisk -lblkid

  12. 光盘和 ISO 通常以只读方式挂载,出现写保护提示并不代表挂载失败;使用后应正常执行 umount

相关推荐
RisunJan2 小时前
Linux命令-sftp(SSH 文件传输协议客户端)
linux·运维
极客先躯3 小时前
高级java每日一道面试题-2026年05月03日-实战篇[Docker]-如何实现容器化环境的数据加密?
java·运维·docker·容器·金融·加解密·高级面试
龙仔7254 小时前
人大金仓OS_Core数据库自动备份实施笔记(银河麒麟Linux)
linux·数据库·笔记·备份·人大金仓
老杨聊技术4 小时前
CentOS 7 安装 MySQL 8 保姆级教程
linux·mysql·centos
xiaoye-duck5 小时前
《Linux系统编程》Linux 系统多线程(六):<线程同步与互斥>线程同步(下):POSIX 信号量与环形队列生产者消费者模型详解
linux·线程
三言老师5 小时前
CentOS7.9:Redis‑Cluster集群部署结构化实战教程
linux·运维·服务器·数据库
attitude.x6 小时前
Cursor+GitOps:自动化运维新姿势
运维·自动化
数智化管理手记7 小时前
主数据重复、错漏频发?一站式主数据管理平台如何落地?
大数据·运维·数据库·人工智能·数据挖掘
technology_x7 小时前
2026年财务报表分析软件测评:兼容与安全解析
java·服务器·前端