一 创建和拓展逻辑卷
1.1 逻辑卷(LVM)概念
LVM 有助于更加轻松地管理磁盘空间。可以将卷组 Volume Group 中的可用空间分配给逻辑卷 (Logical Volume),并且可以调整文件系统的大小
✔ 如果磁盘出现错误,可将替换磁盘注册为物理卷 (Phycial Volume) 放入卷组中,并将逻辑卷的区块迁移到新磁盘
✔ LVM 定义
物理设备:用于保存逻辑卷中所存储数据的存储设备 – 可以是块设备,也可以是磁盘分区、整块磁盘、RAID 阵列或 SAN 磁盘
物理卷 PV:物理设备必须初始化为 PV,LVM 工具会将物理卷划分为物理区块 (PE),充当物理卷上最小存储块
卷组 VG:由一个或多个物理卷组成的存储池,一个 PV 只能分配给一个 VG,VG 可以包含未使用的空间和任意数目的 LV
逻辑卷 LV:根据卷组中的空闲物理区块创建,LV 由逻辑区块 LE 组成,LE 映射到 PE
1.2 LVM工作流
Block Device PV→ VG→ LV→ File System→ mount
1.3 创建逻辑卷
1). 准备物理设备
使用parted、gdisk或fdisk创建新分区,在 LVM 分区上,始终将分区类型设置为 Linux LVM;对于 MBR 分区,使用 0x8e。如有必要,使用partprobe向内核注册新分区
2). 创建物理卷
使用pvcreate将分区标记为物理卷,pvcreate命令会将物理卷分成若干固定大小的物理区块 PE,如 4 MiB
3). 创建卷组
使用vgcreate将一个或多个物理卷结合为一个卷组
4). 创建逻辑卷
使用lvcreate可根据卷组中的可用物理区块创建新的逻辑卷,-n选项设置 LV 名称,-l表示 LE 数量,-L表示字节大小
5). 添加文件系统
使用mkfs在新逻辑卷上创建文件系统,创建挂载点,并挂载
1.4 创建具有重复数据删除和压缩功能的逻辑卷
RHEL9 使用 LVM VDO 实施来管理 VDO 卷。以前基于 Python 的 VDO 管理工具仍然可用,但不再需要
虚拟数据优化器(VDO)为存储提供内嵌块级重复数据删除、压缩和精简配置。配置 VDO 卷,以使用最多 256 TB 的物理存储
将 VDO 作为一种 LVM 逻辑卷(LV)进行管理,类似于 LVM 精简配置的卷
✔ LVM VDO 由两个逻辑卷组成:
VDO POOL LV:此 LV 可存储数据、删除重复数据和压缩数据,并设置由物理设备支持的 VDO 卷的大小。对 VDO 进行重复数据删除并压缩每个 VDO LV,每个 VDO POOL LV 只能容纳一个 VDO LV
VDO LV:在 VDO POOL LV 基础上调配虚拟设备,并设置在发生重复数据删除和压缩之前存储数据的 VDO 卷的逻辑大小
✔ LVM VDO 将已删除重复数据的存储呈现为常规逻辑卷(LV)。VDO 卷可以使用标准文件系统进行格式化,作为块设备进行共享,或者用于构建其他存储层,与任何普通逻辑卷并无差异
✔ 要能够使用 VDO 重复数据删除和压缩,需安装
vdo和kmod-kvdo软件包
1.5 查看LVM状态信息
pvdisplay查看物理卷信息
1). PV Name:映射的设备名称;2). VG Name:PV 分配到的卷组;3). PV Size:PV 的物理大小;4). PE Size:物理区块大小;5). Free PE:显示有多少 PE 单位可用于分配给新逻辑卷
vgdispaly查看卷组信息
1). VG Name:卷组名称2). VG Size:卷组大小3). Total PE:以 PE 单位表示的总大小4). Free PE / Size:VG 中有多少空闲空间
lvdisplay显示逻辑卷信息
1). LV Path:逻辑卷设备名称;2). VG Name:对应的卷组;3). LV Size:此 LV 总大小;4). Current LE:此 LV 逻辑区块数
1.6 拓展和缩减卷组
可通过添加额外的物理卷来为卷组增加更多磁盘空间,然后,可从额外的物理卷中为逻辑卷分配新的物理区块
✔ 未使用的物理卷可以从卷组中删除
✔
pvmove命令可将数据从一个物理卷上的区块移动到卷组中其他物理卷上的区块。(通过这种方式,可以将新磁盘添加到现有卷组,将数据从较旧或较慢的磁盘移动到新磁盘,并将旧磁盘从卷组中删除。可在卷组中的逻辑卷正在使用时执行这些操作)
1.7 扩展卷组
(1)准备物理设备并创建物理卷(如果不存在)
(2)扩展卷组
(3)验证新空间是否可用
1.8 扩展逻辑卷
(1)使用vgdisplay验证卷组是否具有可用空间
(2)使用lvextend LV_DEVICE_NAME扩展逻辑卷
✔ 对于 XFS 文件系统,使用
xfs_growfs mountpoint命令进行扩展。此时,目标文件系统必须是挂载状态,并且在调整文件系统大小时,可以继续使用该文件系统plaintext
✔ 对于 EXT4 文件系统,使用
resize2fs /dev/vgname/lvname扩展,运行扩展命令时,可以挂载并使用文件系统✔ 对于扩展 SWAP 空间,先
swapoff -v /dev/vgname/lvname,然后lvextend扩展 lv;之后mkswap /dev/vgname/lvname重新格式化 swap;最后swapon -va /dev/vgname/lvname重新激活 swap
1.9 缩减卷组
移动物理区块:使用
pvmove PV_DEVICE_NAME将要删除的物理卷中的所有物理区块都重新放置到卷组中的其他物理卷上(在使用pvmove命令之前,请备份 VG 中所有 LV 上存储的数据。操作期间意外断电可能会使 VG 处于不一致状态,或可导致 LV 上数据丢失)[root@host ~]# pvmove /dev/vdb3缩减卷组
[root@host ~]# vgreduce vg01 /dev/vdb31.10 删除逻辑卷
umount并vim /etc/fstab取消文件系统挂载[root@host ~]# umount /mnt/data- ✔
lvremove DEVICE_NAME删除不需要的逻辑卷[root@host ~]# lvremove /dev/vg01/lv01 Do you really want to remove active logical volume vg01/lv01? [y/n]: y Logical volume "lv01" successfully removed.
- ✔
vgremove VGNAME删除卷组[root@host ~]# vgremove vg01 Volume group "vg01" successfully removed - ✔
pvremove PV_DEVICE删除 PV[root@host ~]# pvremove /dev/vdb1 /dev/vdb2 Labels on physical volume "/dev/vdb1" successfully wiped. Labels on physical volume "/dev/vdb2" successfully wiped.
二 管理分层存储
2.1 存储栈
RHEL 中的存储由多个成熟、稳定且充满现代功能的驱动程序、管理器和程序组成。管理存储需要熟悉堆栈组件,并认识到存储配置会影响启动过程、应用性能,以及为特定应用用例提供所需存储功能的能力
2.2 块设备
块设备位于存储堆栈的底部,提供稳定、一致的设备协议,允许几乎任何块设备透明地包含在 RHEL 存储配置中
大多数块设备都通过 SCSI 驱动程序访问,并显示为 SCSI 设备,包括 ATA 硬盘、固态设备和企业级主机总线适配器 (HBA)。RHEL 还支持 iSCSI、以太网光纤通道 (FCoE)、虚拟机驱动程序 (virtio)、串行连接存储 (SAS)、非易失性内存 (NVMe) 等
iSCSI target 可以是网络中的专用物理设备,也可以是网络存储服务器上由 iSCSI 软件配置的逻辑设备,以逻辑单元号 (LUN) 的形式访问存储
以太网光纤通道 (FCoE) 协议通过以太网网络传输光纤通道帧。通常,数据中心具有专用的 LAN 和存储区域网络 (SAS) 布线,各自针对其流量进行唯一配置。借助 FCoE,这两种流量类型都可以组合成一个更大的融合以太网网络架构。FCoE 的优势是更低的硬件和能源成本
2.3 多路径
路径是服务器和底层存储之间的连接。dm-multipath 是一种 RHEL 原生多路径工具,用于将冗余 I/O 路径配置为单个路径聚合逻辑设备。使用设备映射器 (dm) 创建的逻辑设备在
/dev/mapper/下显示为连接到系统的各个 LUN 的唯一块设备当存储(如 iSCSI 和 FCoE)使用网络布线时,也可以通过使用网络绑定来实施存储多路径冗余
分区:块设备可以进一步划分为多个分区。分区可以占用整个块设备大小,或者通过划分块设备来创建多个分区。这些分区可用于创建文件系统、LVM 设备,或者可直接用于数据库结构或其他原始存储
2.4 RAID
✔ 独立磁盘冗余阵列 (RAID) 是一种存储虚拟化技术,可从多个物理或虚拟块设备组件创建大型逻辑卷。不同形式的 RAID 卷通过实施镜像或分条布局来提供数据冗余和 / 或性能改进
✔ LVM 支持 RAID 级别 0、1、4、5、6 和 10,由 LVM 创建和管理的 RAID 逻辑卷利用多设备 (mdadm) 内核驱动程序。不使用 LVM 时,设备映射器 dm-raid 为 mdadm 内核驱动程序提供设备映射器接口
2.5 逻辑卷管理器
LVM 几乎能使用任何形式的物理或虚拟块设备,并将存储构建为新的逻辑存储卷
✔ 可堆叠 LVM 卷,为堆栈的每个部分实施加密和压缩等高级功能。特定场景的实际分层需要遵循一些强制规则和建议做法
2.6 文件系统或其它用途
✔ 堆栈的顶层通常是文件系统,但可以用作数据库或自定义应用数据要求的原始空间。RHEL 支持多种文件系统类型,但大多数现代用例中建议使用 XFS。当实施 LVM 的程序是 Ceph 存储或 Stratis 存储工具时,需要采用 XFS
✔ 存储在文件系统所包含的常规文件中。由于文件系统访问的额外开销或限制,此架构具有扩展限制
✔ 希望绕过文件系统缓存并使用自己的缓存机制的大型数据库,更愿意在原始存储上创建其数据库结构。逻辑卷适用于数据库和其他原始存储用例
✔ 红帽 Ceph 存储还倾向于在原始设备上创建自己的存储管理元数据结构,以用于创建 Ceph 对象存储设备 (OSD)。在最新版本的红帽 Ceph 存储中,Ceph 使用 LVM 来初始化磁盘设备以用作 OSD。如需更多信息,请参阅红帽 Ceph 存储云存储 (CL260) 课程
2.7 Stratis 存储管理
✔ Stratis 是由红帽和上游 Fedora 社区开发的本地存储管理工具。借助 Stratis,可以更加轻松地执行初始存储配置,更改存储配置,并使用高级存储功能
✔ Stratis 以管理物理存储设备池的服务形式运行,并透明地为新创建的文件系统创建和管理卷
✔ Stratis 利用一种称为精简配置的概念,从磁盘设备共享池构建文件系统。Stratis 不会在创建文件系统时立即为其分配物理存储空间,而是在文件系统存储更多数据时动态地从池中分配该空间。因此,文件系统的大小可能会显示为 1 TiB,但实际从池中分配给它的存储空间可能仅有 100 GiB
✔ 可以从不同存储设备来创建多个池。在每个池中,可以创建一个或多个文件系统。目前,每个池最多可以创建 224 个文件系统
✔ Stratis 从标准 Linux 组件构建由 Stratis 管理的文件系统。在内部,Stratis 使用也供 LVM 使用的 device mapper 基础架构。Stratis 使用 XFS 格式化文件系统
✔ 下图演示 Stratis 如何管理资源。Stratis 将块存储设备(如硬盘或 SSD)分配到池中,然后从池中创建文件系统,并根据需要将物理存储映射到每个文件系统
✔ 要使用 Stratis 存储管理解决方案来管理文件系统,安装
stratis-cli和stratisd软件包✔
stratis-cli软件包提供stratis命令,将配置请求发送到stratisd守护进程。stratisd软件包中提供了stratisd服务,它处理重新配置请求,并且管理和监控 Stratis 的块设备、池和文件系统✔ Stratis 管理功能包含在 RHEL Web Console 中
✔ 注:Stratis 创建的文件系统仅可使用 Stratis 工具和命令进行重新配置
✔ Stratis 使用存储的元数据来识别所管理的池、卷和文件系统。使用非 Stratis 命令手动配置 Stratis 文件系统,可能会导致该元数据丢失
2.8 安装与启用Stratis
✔ 安装stratis-cli和stratisd软件包,再启动并启用stratisd服务
[root@host ~]# dnf install stratis-cli stratisd ...output omitted... Is this ok [y/N]: y ...output omitted... Complete! [root@host ~]# systemctl enable --now stratisd2.9 创建 Stratis 池
✔ 使用
stratis pool create命令创建块设备的池✔ 使用
stratis pool list命令查看可用池的列表[root@host ~]# stratis pool create pool1 /dev/vdb [root@host ~]# stratis pool list Name Total Physical Properties UUID pool1 5 GiB / 37.63 MiB / 4.96 GiB -Ca,-Cr 11f6f3c5-5...✔ 使用
stratis pool add-data命令向池中添加额外的块设备✔ 使用
stratis blockdev list命令查看池的块设备[root@host ~]# stratis pool add-data pool1 /dev/vdc [root@host ~]# stratis blockdev list pool1 Pool Name Device Node Physical Size State Tier pool1 /dev/vdb 5 GiB In-use Data pool1 /dev/vdc 5 GiB In-use Data
2.10 管理 Stratis 文件系统
✔ 使用
stratis filesystem create命令为池创建动态文件系统。Stratis 文件系统的链接位于/dev/stratis/pool1目录中✔ 使用
stratis filesystem list命令查看可用文件系统的列表[root@host ~]# stratis filesystem create pool1 fs1 [root@host ~]# stratis filesystem list Pool Name Name Used Created Device UUID pool1 fs1 546 MiB Apr 08 2022 04:05 /dev/stratis/pool1/fs1 c7b5719...✔ 使用
stratis filesystem snapshot命令创建文件系统快照,快照独立于源文件系统
[root@host ~]# stratis filesystem snapshot pool1 fs1 snapshot12.11 持久挂载 Stratis 文件
- ✔ 为了持久挂载 Stratis 文件系统,需编辑
/etc/fstab
在[root@host ~]# lsblk --output=UUID /dev/stratis/pool1/fs1 UUID c7b57190-8fba-463e-8ec8-29c80703d45e/etc/fstab中添加:UUID=c7b57190-8fba-463e-8ec8-29c80703d45e /dir1 xfs defaults,x-systemd.requires=stratisd.service 0 0 - ✔ 重要:
x-systemd.requires=stratisd.service挂载选项可延迟挂载文件系统,直到 systemd 在启动过程中启动stratisd.service为止
三 总结
可以通过在多个存储设备上分配空间,使用 LVM 创建灵活的存储。
物理卷、卷组和逻辑卷可通过
pvcreate、vgreduce和lvextend命令进行管理。逻辑卷可以格式化为文件系统或交换空间,并可以持久挂载。
可以为卷组增加存储空间,也可以动态扩展逻辑卷。
了解存储堆栈的层和组件,以有效管理存储。
虚拟数据优化器(VDO)使用 LVM 进行数据压缩和重复数据删除。
可以使用 Stratis 来执行初始存储配置或启用高级存储功能。