目录

1. 什么是存储堆栈?

2. 块设备(Block Devices)

2.1 什么是块设备?

2.2 各种块设备详解

SCSI(Small Computer System Interface)

SAS(Serial Attached SCSI)

FC(Fibre Channel)

iSCSI(Internet SCSI)

NVMe(Non-Volatile Memory Express)

3. 多路径(Multipath)

3.1 多路径是什么?

3.2 多路径如何工作?

3.3 多路径的实际价值

4. 分区(Partitions)

4.1 分区是什么?

4.2 为什么要分区?

5. RAID(冗余磁盘阵列)

5.1 RAID是什么?

5.2 常见RAID级别详解

RAID 0 - 条带化

RAID 1 - 镜像

RAID 5 - 带奇偶校验的条带化

6. 逻辑卷管理器(LVM)

6.1 LVM是什么?

6.2 LVM核心组件详解

物理卷(Physical Volume)

卷组(Volume Group)

逻辑卷(Logical Volume)

6.3 LVM高级功能

LUKS加密

VDO(Virtual Data Optimizer)

7. Stratis存储管理

7.1 Stratis是什么?

7.2 Stratis与传统管理的区别

7.3 Stratis核心特性

精简配置(Thin Provisioning)

快照(Snapshot)

7.4 Stratis架构详解

7.5 Stratis实战配置

安装和启用

创建存储池

创建文件系统

持久化挂载

8. 存储堆栈的最佳实践

8.1 选择合适的组件组合

8.2 监控和维护

9. 总结


1. 什么是存储堆栈?

概念说明:
存储堆栈就像是存储管理的"建筑楼层",每一层都有特定的职责,下层为上层提供服务。想象一下建房子:

  • 地基:块设备(硬盘、SSD等)

  • 结构层:分区、RAID、LVM

  • 功能层:加密、压缩

  • 应用层:文件系统、数据库

为什么要分层?

  • 每层专注解决特定问题

  • 下层变化不影响上层使用

  • 提供灵活的配置组合


2. 块设备(Block Devices)

2.1 什么是块设备?

核心概念: 块设备是计算机中按固定大小块(通常是512B或4KB)来访问数据的存储设备。

通俗理解: 把块设备想象成一个大型的"乐高积木箱",数据就像一个个标准大小的积木块,可以按需取用和存放。

主要职责:

  • 提供稳定的数据读写接口

  • 管理物理存储介质

  • 处理设备级错误

2.2 各种块设备详解

SCSI(Small Computer System Interface)

是什么: 一套标准化的设备接口协议
干什么用: 让不同厂商的设备能够互相通信
实际例子: 就像USB标准,让各种U盘都能在电脑上使用

SAS(Serial Attached SCSI)

是什么: SCSI的串行版本,取代了老式的并行SCSI
干什么用: 提供更高的传输速度和更好的扩展性
优势: 支持更多设备,线缆更简单

FC(Fibre Channel)

是什么: 专门为存储设计的高速网络技术
干什么用: 构建存储区域网络(SAN)
特点: 性能极高,成本也高,主要用于企业级环境

iSCSI(Internet SCSI)

是什么: 通过普通IP网络传输SCSI命令
干什么用: 用现有网络设备实现存储共享
工作方式:

客户端 → iSCSI Initiator → 网络 → iSCSI Target → 存储设备

优势: 利用现有网络,成本低,部署简单

NVMe(Non-Volatile Memory Express)

是什么: 为固态硬盘设计的新一代接口协议
干什么用: 充分发挥SSD的性能优势
特点: 延迟极低,队列深度大,专为闪存优化


3. 多路径(Multipath)

3.1 多路径是什么?

核心概念: 多路径技术通过在服务器和存储之间建立多条物理连接,提供冗余和负载均衡。

生活化比喻: 想象一个城市有多个出入口,当一条路堵车时,你可以走其他路线,确保总能到达目的地。

3.2 多路径如何工作?

主要组件:

  • 物理路径: 服务器到存储的实际连接线路

  • 逻辑设备: 多条物理路径聚合成的单一虚拟设备

  • 故障切换: 自动检测路径故障并切换到备用路径

3.3 多路径的实际价值

高可用性:

# 正常情况:两条路径同时工作
服务器 ←路径A→ 存储设备
       ←路径B→ 

# 路径A故障:自动切换到路径B
服务器 ←路径A×→ 存储设备
       ←路径B√→ 

负载均衡: 将I/O请求分散到多条路径,提高整体性能


4. 分区(Partitions)

4.1 分区是什么?

核心概念: 将一个大硬盘划分成多个独立的逻辑区域。

通俗理解: 就像把一个大的仓库隔成多个小房间,每个房间可以存放不同类型的货物。

4.2 为什么要分区?

组织管理:

  • 系统文件和个人文件分开

  • 不同应用数据隔离

  • 备份和恢复更灵活

性能优化:

  • 将频繁访问的数据放在硬盘外圈(速度更快)

  • 减少文件碎片

安全隔离:

  • 一个分区损坏不影响其他分区

  • 可以针对不同分区设置不同权限


5. RAID(冗余磁盘阵列)

5.1 RAID是什么?

核心概念: 将多个物理磁盘组合成一个逻辑单元,提供数据冗余或性能提升。

生活化比喻: 就像重要的文件,你可能会:

  • 复印多份(镜像)

  • 把内容分到多个本子上(条带化)

  • 同时使用以上两种方法

5.2 常见RAID级别详解

RAID 0 - 条带化

工作原理: 数据被分成块,轮流写入不同磁盘

数据: ABCDEF
磁盘1: A C E
磁盘2: B D F

优势: 读写性能翻倍
风险: 任何一块磁盘损坏,所有数据丢失
适用场景: 临时数据、需要高性能但不重要的数据

RAID 1 - 镜像

工作原理: 相同的数据同时写入所有磁盘

数据: ABCDEF
磁盘1: ABCDEF
磁盘2: ABCDEF

优势: 数据安全性高
缺点: 存储利用率只有50%
适用场景: 操作系统盘、重要配置文件

RAID 5 - 带奇偶校验的条带化

工作原理: 数据和校验信息分布在所有磁盘上

数据: A1 A2 A3 Ap  (Ap是A1-A3的校验)
     B1 B2 Bp B3
     C1 Cp C2 C3

优势: 兼顾性能和安全,允许一块磁盘故障
适用场景: 文件服务器、一般应用


6. 逻辑卷管理器(LVM)

6.1 LVM是什么?

核心概念: LVM在物理存储和文件系统之间增加了一个抽象层,实现灵活的存储管理。

三层架构:

物理卷(PV) → 卷组(VG) → 逻辑卷(LV)
  ↓              ↓             ↓
硬盘/分区      存储池        虚拟磁盘

6.2 LVM核心组件详解

物理卷(Physical Volume)

是什么: 实际的存储设备(硬盘、分区、RAID设备)
干什么用: 为LVM提供原始的存储空间

卷组(Volume Group)

是什么: 多个物理卷的集合
干什么用: 创建一个统一的存储池
优势: 打破单个物理设备的大小限制

逻辑卷(Logical Volume)

是什么: 从卷组中划分出来的虚拟磁盘
干什么用: 在其上创建文件系统
特点: 可以动态调整大小,不受物理限制

6.3 LVM高级功能

LUKS加密

是什么: Linux统一密钥设置,提供磁盘级加密
干什么用: 保护数据安全,即使硬盘被盗数据也不会泄露
工作方式: 在块设备层加密,对上层应用完全透明

VDO(Virtual Data Optimizer)

是什么: 虚拟数据优化器
干什么用:

  • 重复数据删除: 相同的数据块只存储一份

  • 数据压缩: 实时压缩数据,节省空间
    效果: 最多可以节省95%的存储空间


7. Stratis存储管理

7.1 Stratis是什么?

核心概念: Stratis是一个智能的存储管理守护进程,它自动管理底层的复杂存储组件。

设计理念: "存储应该简单易用"

7.2 Stratis与传统管理的区别

传统方式:

# 需要多个步骤和命令
创建分区 → 创建PV → 创建VG → 创建LV → 创建文件系统

Stratis方式:

# 一个命令搞定所有
stratis pool create mypool /dev/sdb
stratis filesystem create mypool myfs

7.3 Stratis核心特性

精简配置(Thin Provisioning)

是什么: 文件系统显示的大小与实际分配的物理空间不同
实际例子:

# 创建一个显示为1TB的文件系统
stratis filesystem create pool1 largefs

# 但实际只分配了10GB物理空间
# 随着数据增加,自动从池中分配更多空间

注:这个命令并没有在创建时指定文件系统大小。它创建的文件系统默认会显示为整个存储池的可用容量

快照(Snapshot)

是什么: 文件系统在某个时间点的只读副本
干什么用:

  • 数据备份

  • 测试环境

  • 误操作恢复

7.4 Stratis架构详解

文件系统1    文件系统2    文件系统3
    ↓           ↓           ↓
    ┌─────────────────────┐
    │     存储池          │
    │  ┌───────────────┐  │
    │  │   /dev/sda    │  │
    │  │   /dev/sdb    │  │
    │  │   /dev/sdc    │  │
    │  └───────────────┘  │
    └─────────────────────┘

关键点:

  • 多个文件系统共享一个存储池

  • 存储空间按需分配

  • 支持动态扩展

7.5 Stratis实战配置

安装和启用
# 安装软件包
dnf install stratis-cli stratisd

# 启动服务
systemctl enable --now stratisd
创建存储池
# 创建包含一个磁盘的池
stratis pool create mypool /dev/sdb

# 查看池信息
stratis pool list
创建文件系统
# 从池中创建文件系统
stratis filesystem create mypool datafs

# 查看文件系统
stratis filesystem list
持久化挂载
# 获取文件系统UUID
lsblk --output=UUID /dev/stratis/mypool/datafs

# 编辑/etc/fstab
UUID=xxxx /data xfs defaults,x-systemd.requires=stratisd.service 0 0

重要提醒: 必须包含x-systemd.requires=stratisd.service选项,否则系统可能无法启动!


8. 存储堆栈的最佳实践

8.1 选择合适的组件组合

基础文件服务器:

硬盘 → 分区 → 文件系统

企业级应用:

多块硬盘 → RAID → LVM → 文件系统

安全敏感环境:

硬盘 → LUKS加密 → LVM → 文件系统

需要节省空间的场景:

硬盘 → LVM with VDO → 文件系统

8.2 监控和维护

监控存储使用:

  • 定期检查存储空间使用情况

  • 设置告警阈值

  • 监控性能指标

备份策略:

  • 重要数据定期备份

  • 测试恢复流程

  • 使用快照功能


9. 总结

RHEL存储堆栈提供了一个完整而灵活的存储解决方案:

  1. 基础层(块设备):提供原始的存储能力

  2. 冗余层(多路径、RAID):确保数据可用性

  3. 管理层(分区、LVM):提供灵活的存储组织

  4. 功能层(加密、压缩):增强数据安全和效率

  5. 简化层(Stratis):降低管理复杂度

Logo

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

更多推荐