RH134学习进程——八.管理存储堆栈

八.管理存储堆栈

1.逻辑卷管理(LVM)

1.1逻辑卷管理简介

逻辑卷管理(LVM)是 Linux 系统中用于灵活管理磁盘存储 的技术,通过对物理磁盘进行逻辑抽象 ,通过抽象层将物理存储设备逻辑存储分离

1.1.1架构

(1)物理设备

物理设备十LVM存储数据的"硬件载体",可以是各类块存储设备;

如:

块设备:如/dev/sdb(未分区的磁盘)、/dev/sdc1(磁盘分区);

RAID 阵列:由多块磁盘组成的冗余存储(如 RAID 5 阵列);

(2)物理卷(PV)

需要将物理设备初始化为物理卷 (PV),LVM 会把 PV 划分为物理区块(PE),PE 是 PV 上的最小存储单元(默认大小为 4MB,可自定义)。

(3)卷组(VG)

由一个或多个PV组成的存储池;

一个 PV 只能属于一个 VG ,但一个 VG 可以包含多个 PV;VG 中可包含未使用的空间,也可创建任意数量的逻辑卷(LV)。

(4)逻辑卷(LV)

从VG中划分出来的逻辑存储单元,由"逻辑区块(LE)"组成,LE 会映射到 PV 的 PE 上(LE 与 PE 大小默认相同,确保一一对应)

1.1.2简易理解

(1)物理卷PV

LVM 先把每块硬盘变成 "标准化的乐高积木";

(2)卷组VG

把这些 "乐高积木块(PV)" 全倒进一个 "大池子" 里,这个池子就是卷组 VG。池子越大,能用来 "搭东西" 的资源就越多。

(3)逻辑卷LV

从 "乐高池(VG)" 里拿出积木,捏成一个 "可以存数据的橡皮泥块",这就是逻辑卷 LV。这个 "橡皮泥块" 可以直接当磁盘用(格式化、存文件),而且大小能随时调整

1.2 LVM工作流程

(1)物理设备准备

(2)创建物理卷PV

(3)创建卷组VG

(4)创建逻辑卷LV

(5)格式化

(6)挂载文件系统

1.3创建逻辑卷

1.3.1准备物理设备(可选)

(1)查看块设备

lsblk

(2)创建新分区

LVM分区上,分区类型是Linux LVM

如:

创建分区:

parted /dev/vdb mklabel gpt

parted /dev/vdb mkpart first 1Mib 258Mib

parted /dev/vdb mkpart second 258MiB 514MiB

注册新分区:

udevadm settle

将此分区类型设置为Linux LVM:

parted /dev/vdb set 1 lvm on

parted /dev/vdb set 2 lvm on

1:第n个分区,根据实际情况更改

1.3.2创建物理卷PV

初始化物理设备/分区为物理卷,pvcreate命令;

如:

sudo pvcreate /dev/vdb1 /dev/vdb2

1.3.3创建卷组VG

将一个或多个PV结合为一个卷组,vgcreate命令;

如:

sudo vgcreate vg01 /dev/vdb1 /dev/vdb2

1.3.4创建逻辑卷LV

lvcreate可以根据VG中的可用物理区块PE,创建新的逻辑卷LV;

如:

sudo lvcreate -n lv01 -L 400MB vg01

****-n:****设置LV的名称;

****-l:****表示LV的数量;

****-L:****表示字节大小;

1.3.5验证逻辑卷信息

sudo lvdisplay /dev/vg01/lv01

1.3.6添加文件系统

mkfs命令在新逻辑卷上创建文件系统,创建挂载点并挂载;

如:

(1)创建文件系统/格式化逻辑卷

mkfs -t xfs /dev/vg01/lv01

(2)创建挂载点

mkdir /data

(3)挂载文件系统

配置/etc/fstab设置永久挂载,再使用mount挂载;

echo "/dev/vg01/lv01 /data xfs defaults 0 0" > /etc/fstab

mount -a

1.3.7验证挂载的文件系统是否可以访问,并显示LVM状态信息

(1)验证是否可以将文件复制到/data目录(挂载点)

cp -a /etc/*.conf /data

ls /data | wc -l

(2)查看PV状态信息:pvdisplay

pvdisplay /dev/vdb1 /dev/vdb2

|--------------|----------------------------------------------------|
| PV Name | 物理卷设备路径:/dev/vdb1 |
| VG Name | 所属卷组:vg01 |
| PV Size | 物理卷大小: 257.00 MiB 无不可用空间 |
| Allocatable | 是否可分配:yes (but full) → 空间已全部分配,无剩余 |
| PE Size | 物理区块(PE)大小:4.00 MiB(LVM 的最小存储单元) |
| Total PE | 总 PE 数量:64(257MiB ÷ 4MiB ≈ 64) |
| Free PE | 空闲 PE:0 → 无剩余空间 |
| Allocated PE | 已分配 PE:64 → 空间全被使用 |

(3)查看vg状态信息vgdisplay

vgdisplay vg01

|-----------------|-------------------------------------------------------------|
| VG Name | 卷组名称:vg01 |
| Metadata Areas | 元数据区域数量:2 → 对应两个 PV |
| VG Size | 总容量:508.00 MiB(257MiB + 256MiB - 5MiB,5MiB 为元数据开销 ) |
| PE Size | PE 大小:4.00 MiB(与 PV 一致 ) |
| Total PE | 总 PE 数量 :127(508MiB ÷ 4MiB ≈ 127) |
| Alloc PE / Size | 已分配 PE / 容量:100 / 400.00 MiB → 已用 400MiB |
| Free PE / Size | 空闲 PE / 容量:27 / 108.00 MiB→ 剩余 108MiB(与/dev/vdb2的空闲 PE 一致) |

(4)查看lv状态信息lvdisplay

lvdisplay /dev/vg01/lv01

|------------|--------------------------------------------------|
| LV Path | 设备路径:/dev/vg01/lv01 |
| LV Name | 逻辑卷名称:lv01 |
| VG Name | 所属卷组:vg01 |
| LV Size | 逻辑卷大小:400.00 MiB(与卷组 "已分配 400MiB" 对应) |
| Current LE | 逻辑区块(LE)数量:100(400MiB ÷ 4MiB = 100,LE 与 PE 一一映射) |
| Segments | 分段数:2 → 空间来自两个 PV(/dev/vdb1和/dev/vdb2) |

(5)查看可用磁盘空间

1.4创建重复使用的逻辑卷

1.4.1VDO概念

VDO(虚拟数据优化器)是红帽在RHEL 8/9中集成的存储优化技术,作为LVM的扩展,为逻辑卷提供重复数据删除(识别并删除重复块)和压缩(压缩存储数据)功能,从而大幅节省物理存储空间。配置VDO卷,用来使用最多256TB的物理存储。

1.4.2VDO组成

LVM VDO 由两个逻辑卷组成,形成 "存储池 + 虚拟卷" 的层级结构:

|---------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|
| 组件 | 作用与特性 |
| VDO POOL LV(存储池逻辑卷) | 1. 是底层物理存储的载体 ,负责实际数据存储重复数据删除压缩 ; 2. 大小由物理设备容量决定(最多支持 256 TB 物理存储); 3. 每个 POOL LV 只能对应一个 VDO LV 。 |
| VDO LV(虚拟逻辑卷) | 1. 基于 VDO POOL LV 创建的 "虚拟设备 ",提供给用户的逻辑存储 ; 2. 可设置远大于物理存储的逻辑大小 (利用重复数据删除和压缩的空间优化); 3. 用户通过 VDO LV 挂载、读写数据,无需感知底层 POOL 的存在。 |

1.4.3 示例

1.有一块 128GB 的物理硬盘

2.在上面创建一个 VDO Pool LV大小就是 128GB

3.然后可以 VDO Pool PV 上创建一个 VDO LV ,并告诉操作系统 这是一个 512GB 的磁盘。

4.现在,操作系统就看到了一个 512GB 的"硬盘",并可以在上面创建文件系统、存数据。只要存入的数据重复率很高(比如虚拟机镜像、容器镜像、备份文件等),并且可压缩,那么这 128GB 的物理空间 就可能存下高达 512GB 的"逻辑数据"

注:

使用VDO重复数据删除和压缩,需要vdokmod-kvdo软件包

dnf install vdo kmod-kvdo

1.4.4VDO核心能力

(1) 重复数据删除

识别并删除 存储块中的重复内容(如多个文件的相同片段),只保留一份数据,节省空间。

(2) 数据压缩

非重复数据 进行压缩存储,进一步提升空间利用率。

(3) 存储精简

VDO LV 的逻辑大小可远大于物理存储(如物理存储 1TB,逻辑大小可设为 10TB),按需分配空间,提高存储灵活性。

1.4.5操作流程

(1)创建物理卷/dev/vdb(pvcreate)

(2)创建卷组vdo-vg02(vgcreate)

(3)创建VDO Pool LV(lvcreate)

lvcreate --type vdo \ # 指定类型

--virtualsize 500G \ # 指定逻辑大小,VDO LV最大空间

-L 100G \ # 指定物理大小,实际占用vg02的空间

-n vdo-pool \

vdo-vg02

(4)在VDO Pool LV上创建VDO LV(lvcreate)

lvcreate -L 500G -n vdo-lv vdo-vg02/vdo-pool

创建成功后,操作系统会将VDO LV识别为500G的块设备;

(5)格式化和挂载

可以像使用普通磁盘一样使用此VDO卷(vdo-lv

1.5扩展卷组与逻辑卷

1.5.1扩展卷组

可以通过添加额外的物理卷来为卷组增加更多的磁盘空间,再从额外的物理卷中卫逻辑卷分配新的物理区块;

流程:

(1)准备物理设备(若不存在)

建立LVM分区操作

(2)创建物理卷

pvcreate /dev/vdb3

(3)扩展卷组(vgextend)

vgextend vg01 /dev/vdb3

在vg01卷组中添加物理卷/dev/vdb3

(4)验证卷组是否可用

vgdisplay vg01

1.5.2扩展逻辑卷

在上述扩展卷组流程操作中添加新操作:

(5)扩展逻辑卷(lvextend)

lvextend -L 700M /dev/vg01/lv01

(6)扩展文件系统(xfs文件系统为例)

xfs_growfs 挂载目录

仅扩展逻辑卷的大小不会自动让文件系统识别并使用新增的空间,必须让文件系统扩容 ,从而真正利用到扩展后的逻辑卷空间

1.6缩减卷组和删除逻辑卷

1.6.1缩减卷组

删除额外的物理卷(未使用的);

如:

vgreduce vg01 /dev/vdb3

只用未被使用的物理卷才能从卷组中删除,否则需要迁移数据(pvmove)。

在迁移数据前,备份VG中所有LV上的存储数据,操作期间以外断电可能会使VG处于不一致状态,或LV上的数据丢失!!!

流程:

(1)检查PV是否空闲:

pvs -o vg01 /dev/vdb3

vg01:物理卷名字

若输出的ALLocateable为no,则无数据占用,直接删除即可

(2)若有数据占用,先迁移数据

pvmove /dev/sdb

该命令会将/dev/sdb上的所有数据自动迁移到vg01中其他 PV(如/dev/sdc)的空闲空间。

(3)再删除物理卷

vgreduce vg01 /dev/vdb3

1.6.2删除逻辑卷

流程:

(1)取消文件系统的挂载(umount同时修改/etc/fstab)

如:

umount /data

(2)删除逻辑卷(lvremove)

lvremove /dev/vg01/lv01

(3)删除卷组(vgremove)

vgremove vg01

(4)删除物理卷(pvremove)

pvremove /dev/vdb1 /dev/vdb2

2.管理分区存储

2.1存储栈

存储栈是存储管理的 "层级架构",从下到上分为多个功能层,每层负责特定的存储管理任务,最终为用户提供可用的文件系统。

RHEL存储栈是一个分层架构,由多个成熟稳定的组件组成,共同管理系统的存储资源。

结构:

|------------|-----------------------|-----------------------|
| 层级 | 核心组件 | 作用 |
| 底层 | 物理磁盘、RAID 卡 | 存储硬件载体 |
| 中间层 | 多路径、RAID、LVM | 硬件抽象、冗余备份、容量弹性管理 |
| 上层 | XFS/Ext4 文件系统 Stratis | 数据组织与访问、高级存储功能(快照/去重) |

2.2块设备

块设备是 Linux存储堆栈基础组件 ,指以 "固定大小数据块 " 为单位读写的存储设备,是 LVM、RAID 等技术的操作对象。

核心特性:

支持随机读写,数据块大小通常为 512 字节或 4KB;

设备文件路径统一位于/dev目录,如/dev/sda(第一块 SCSI 硬盘)、/dev/vdb1(第二块虚拟硬盘的第一个分区);

可通过lsblk(列表块设备)、blkid(查看设备 UUID)、fdisk -l(查看分区信息)命令管理。

常见块设备类型:

物理硬盘:/dev/sda、/dev/vda(虚拟硬盘);

分区:/dev/sda1、/dev/vdb2;

逻辑卷:/dev/mapper/vg01-lv01(LVM 逻辑卷);

RAID 阵列:/dev/md0(软件 RAID 设备)。

2.3多路径

多路径是通过多条物理路径连接存储设备技术,用于提高存储访问的可靠性和性能。

核心价值:

冗余备份:一条路径故障时,自动切换到备用路径避免存储中断

负载均衡:将存储 IO 请求分散到多条路径,提升读写效率

2.4RAID

RAID(独立磁盘冗余阵列)是将多块物理硬盘组合为逻辑阵列技术 ,核心提供冗余 (数据备份 )和性能提升(并行读写)。

2.5逻辑卷管理器

LVM 是 Linux 下动态管理 存储的核心工具,通过"物理卷→卷组→逻辑卷"的层级结构,实现存储的弹性扩容/缩容、跨设备整合。

核心组件:

|------------|-----------------------------------------------------------|
| 组件 | 定义与作用 |
| 物理卷(PV) | 对物理磁盘/分区的 LVM 格式化(如 /dev/vdb1),划分为最小单元 PE(默认 4MB) |
| 卷组(VG) | 整合多个 PV 为 "存储池",屏蔽底层设备差异(如将 /dev/vdb1+/dev/vdb2 合并为 vg01) |
| 逻辑卷(LV) | 从 VG 中动态划分的 "虚拟分区",可直接格式化挂载,支持在线扩容 |

2.6Stratis存储管理

Stratis 是红帽推出的 "智能存储管家",基于 LVM 和 XFS,简化存储管理并提供高级功能(快照、去重、精简配置)。

注:

Stratis创建的文件系统只能使用Stratis工具和命令,进行重新配置;

Stratis使用存储的元数据来识别管理的池、卷和文件系统;

使用非Stratis命令手动配置文件系统,可能会导致该元数据丢失;

2.6.1核心组件:

(1)存储池(Pool):

由多块磁盘组成的 "存储池"(类似 LVM 的 VG);

(2)文件系统(Filesystem):

从存储池动态分配空间,支持按需扩展;

(3)快照(Snapshot):

文件系统的 "时间点副本",用于备份或回滚。

2.6.2操作流程:

(1)安装并启用Stratis

(2)创建存储池

(3)创建文件系统

(4)挂载使用

(5)管理

完整流程

2.7安装与启用Stratis

安装Stratis-cli和stratisd软件包,再启动并启用Stratisd服务

安装:

dnf install stratis-cli Stratisd

启动:

systemctl enable --now Stratisd

2.8创建Stratis池

(1)创建块设备的池

stratis pool create pool-01 /dev/vdb

(2)查看可用池列表

stratis pool list

(3)添加额外块设备

stratis pool add-data pool-01 /dev/vdc

(4)查看池的块设备

stratis blockdev list pool-01

(5)再次验证池的情况

stratis pool list

与(2)对比,发现扩展成功

2.9管理Stratis文件系统

(1)创建动态文件系统

stratis filesystem create pool-01 fs1

stratis文件系统的链接位于/dev/Stratis/poolname目录中

(2)查看可用的文件系统

stratis filesystem list

(3)创建文件系统快照

stratis filesystem snapshot pool-01 fs1 snapshot

(4)验证快照可用性

(5)可以通过快照访问在创建快照后被删除的文件

删除:

通过快照访问:

(6)销毁快照与文件系统

注:

首先取消挂载

销毁文件系统与快照:

stratis filesystem destroy pool-01 fs1 snapshot

2.10持久挂载Stratis文件

编辑/etc/fstab文件,持久挂载stratis文件系统

(1)查看文件系统的UUID

lsblk --output=UUID /dev/stratis/pool-01/fs1

(2)修改配置文件

vim /etc/fstab

写入:

UUID=b77e63b8-669a-4f31-8052-1c6141a730bc 挂载目录名字 \

xfs defaults,x-systemd,requires=stratisd,service 0 0

(3)启用新配置

systemctl daemon-reload

(4)挂载并验证

mount 挂载目录

mount | grep 挂载目录

3.核心命令

3.1 LVM命令

|------------|--------------------------------|
| 操作 | 命令 |
| 创建 PV | pvcreate /dev/vdb1 |
| 查看 PV | pvs/pvdisplay |
| 创建 VG | vgcreate vg01 /dev/vdb1 |
| 扩展 VG | vgextend vg01 /dev/vdb3 |
| 创建 LV | lvcreate -n lv01 -L 10G vg01 |
| 扩展 LV | lvextend -L +5G /dev/vg01/lv01 |
| 查看 LV | lvs/lvdisplay |

3.2 VDO 命令

|-------------|---------------------------------------------------------------------|
| 操作 | 命令 |
| 安装依赖 | dnf install -y vdo kmod-kvdo |
| 创建 VDO Pool | lvcreate --type vdo -L 100G --virtualsize 500G -n vdo-pool vdo-vg02 |
| 创建 VDO LV | lvcreate -L 500G -n vdo-lv vdo-vg02/vdo-pool |

3.3 Stratis 命令

|------------|-----------------------------------------------|
| 操作 | 命令 |
| 创建池 | stratis pool create pool-01 /dev/vdb /dev/vdc |
| 创建文件系统 | stratis filesystem create pool-01 fs1 |
| 创建快照 | stratis filesystem snapshot pool-01 fs1 snap1 |
| 销毁文件系统 | stratis filesystem destroy pool-01 fs1 |

相关推荐
爱编码的傅同学2 小时前
【线程同步】信号量与环形队列的生产消费模型
linux·windows·ubuntu·centos
Nick.Q2 小时前
CentOS 8 离线安装beyond compare
linux·centos
鹿鸣天涯2 小时前
openEuler学习笔记1-openEuler前世今生
linux·openeuler
pwn蒸鱼3 小时前
buuctf中的mrctf2020_shellcode
linux·安全
夕除3 小时前
java--1
linux·运维·服务器
桌面运维家3 小时前
vDisk VOI桌面安全策略怎么配置?详细教程
运维·网络
重生之绝世牛码3 小时前
Linux软件安装 —— ClickHouse单节点安装(rpm安装、tar安装两种安装方式)
大数据·linux·运维·数据库·clickhouse·软件安装·clickhouse单节点
莫问前路漫漫3 小时前
Electerm 连接远程服务器完整指南
运维·服务器·git
苏宸啊3 小时前
Linux下diy程序:进度条
linux·运维·服务器