配置和管理逻辑卷
大约 120 分钟
配置和管理逻辑卷
来源:官方文档 原始多页入口:配置和管理逻辑卷 内容规模:约 124,665 字符,136 个章节标题,630 个命令/代码块,38 条提示框
阅读提要
- 副标题:配置和管理 LVM
- 摘要:逻辑卷管理器(LVM)是一种存储虚拟化软件,旨在增强物理存储设备的管理和灵活性。通过抽象物理硬件,LVM 允许您动态创建、调整大小和删除虚拟存储设备。在这个框架中,物理卷(PV)代表分组在一起形成卷组(VG)的原始存储设备。在此 VG 中,LVM 分配空间来创建逻辑卷(LV)。LV 是一个文件系统、数据库或应用程序可以使用的虚拟块存储设备。
- 主要章节:配置和管理 LVM;对红帽文档提供反馈;第 1 章 逻辑卷管理概述;第 2 章 管理 LVM 物理卷;第 3 章 管理 LVM 卷组;第 4 章 基本逻辑卷管理;第 5 章 高级逻辑卷管理;第 6 章 使用快照管理系统升级;第 7 章 自定义 LVM 报告;第 8 章 在共享存储上配置 LVM;第 9 章 配置 RAID 逻辑卷;第 10 章 限制 LVM 设备可见性和用法
- 推荐阅读顺序:先看“阅读提要”和目录,再按章节查看“关键点/命令/注意”;需要原文细节时点击来源链接。
章节笔记
概览
- 该章节主要为下一级主题的入口。
配置和管理 LVM
- 要点:摘要
对红帽文档提供反馈
- 要点:我们致力于为您提供高质量的文档,您的反馈将对我们有很大帮助。为帮助我们改进,您可以通过 Red Hat Jira 跟踪系统提交建议或报告错误。
- 要点:流程
- 列表:登录到 Jira 网站。 如果您还没有帐户,请创建一个。
- 列表:单击顶部导航栏中的 Create。
- 列表:在 Summary 字段中输入描述性标题。
- 列表:在 Description 字段中输入您对改进的建议。包括文档相关部分的链接。
- 列表:点窗口底部的 Create。
第 1 章 逻辑卷管理概述
- 要点:逻辑卷管理器(LVM)在物理存储上创建一个抽象层,帮助您创建逻辑存储卷。与直接物理存储用法相比,这提供了更大的灵活性。
- 要点:另外,硬件存储配置对软件是隐藏的,因此您可以在不停止应用程序或卸载文件系统的情况下调整其大小和移动它。这可降低操作成本。
1.1. LVM 构架
- 要点:LVM 在物理存储上创建抽象层,可帮助您创建逻辑存储卷。与直接物理存储用法相比,这提供了更大的灵活性。
- 要点:以下是 LVM 组件:
- 列表:管理 LVM 物理卷
- 列表:管理 LVM 卷组
- 列表:基本逻辑卷管理
- 列表:高级逻辑卷管理
1.2. LVM 的优点
- 要点:逻辑卷管理器(LVM)在物理存储上提供了灵活的抽象层,支持动态存储管理。LVM 允许您在不停机的情况下调整、移动和管理存储大小,同时提供快照和条带等高级功能。
- 要点:与直接使用物理存储相比,逻辑卷具有以下优势:
- 列表:重新调整逻辑卷大小
- 列表:从卷组中删除物理卷
- 列表:创建条带逻辑卷
- 列表:配置 RAID 逻辑卷
- 列表:管理逻辑卷快照
- 列表:创建精简逻辑卷
第 2 章 管理 LVM 物理卷
- 要点:物理卷(PV)是物理存储设备或者 LVM 使用的存储设备上的一个分区。
- 要点:在初始化过程中,LVM 磁盘标签和元数据会写入该设备。这允许 LVM 在逻辑卷管理方案中跟踪和管理它。
- 注意:注意 在初始化后,您无法增加元数据的大小。如果您需要较大的元数据,您必须在初始化过程中设置合适的大小。
2.1. 创建 LVM 物理卷
- 要点:您可以使用 pvcreate 命令初始化 LVM 使用的物理卷。
- 要点:先决条件
- 列表:管理访问权限.
- 列表:lvm2 软件包已安装。
- 列表:确定您要用作物理卷的存储设备。要列出所有可用存储设备,请使用: $ lsblk
- 列表:创建 LVM 物理卷: # pvcreate /dev/sdb 使用您要初始化为物理卷的设备的名称替换 /dev/sdb。
- 列表:显示创建的物理卷: # pvs PV VG Fmt Attr PSize PFree /dev/sdb lvm2 a-- 28.87g 13.87g
- 命令/配置摘录:
$ lsblk
# pvcreate /dev/sdb2.2. 使用 storage RHEL 系统角色重新调整物理卷大小
- 要点:使用存储系统角色,您可以在从主机外部重新定义底层存储或磁盘大小后调整逻辑卷管理器(LVM)物理卷的大小。例如:您增加了虚拟磁盘的大小,并希望在现有 LVM 中使用额外的空间。
- 要点:先决条件
- 列表:您已准备好控制节点和受管节点。
- 列表:以可在受管主机上运行 playbook 的用户登录到控制节点。
- 列表:用于连接到受管节点的帐户具有这些节点的 sudo 权限。
- 列表:底层块存储的大小已被更改。
- 列表:创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml : --- - name: Manage local storage hosts: managed-node-01.example.com tasks: - name: Resize LVM PV size ansible.builtin.include_role: name: redhat.rhel_system_roles.storage vars: storage_pools: - name: myvg disks: ["sdf"] type: lvm grow_to_fill: true 示例 playbook 中指定的…
- 列表:验证 playbook 语法: $ ansible-playbook --syntax-check ~/playbook.yml 请注意,这个命令只验证语法,不能防止错误的、但有效的配置。
- 命令/配置摘录:
--- - name: Manage local storage hosts: managed-node-01.example.com tasks: - name: Resize LVM PV size ansible.builtin.include_role: name: redhat.rhel_system_roles.storage vars: storage_pools: - name: myvg disks: ["sdf"] type: lvm grow_to_fill: true
$ ansible-playbook --syntax-check ~/playbook.yml2.3. 删除 LVM 物理卷
- 要点:您可以使用 pvremove 命令删除物理卷,以供 LVM 使用。
- 要点:先决条件
- 列表:管理访问权限.
- 列表:列出物理卷,以识别您要删除的设备: # pvs PV VG Fmt Attr PSize PFree /dev/sdb lvm2 --- 28.87g 28.87g
- 列表:删除物理卷: # pvremove /dev/sdb 使用与物理卷关联的设备名称替换 /dev/sdb。 注意 如果您的物理卷是卷组的一部分,则您需要首先将其从卷组中删除。 如果卷组包含多个物理卷,请使用 vgreduce 命令: # vgreduce VolumeGroupName /dev/sdb 将 VolumeGroupName 替换为卷组的名称。使用设备的名称替换 /dev/sdb。 如果您的卷组只包含一个物理卷,请使用 vgremove 命令: # vgremove VolumeGroupName 将 VolumeGroupName 替换为卷组的名称。
- 列表:验证物理卷是否已删除: # pvs
- 命令/配置摘录:
# pvs
PV VG Fmt Attr PSize PFree /dev/sdb lvm2 --- 28.87g 28.87g- 注意:注意 如果您的物理卷是卷组的一部分,则您需要首先将其从卷组中删除。 如果卷组包含多个物理卷,请使用 vgreduce 命令: # vgreduce VolumeGroupName /dev/sdb 将 VolumeGroupName 替换为卷组的名称。使用设备的名称替换 /dev/sdb。 如果您的卷组只包含一个物理卷,请使用 vgremove 命令: # vgremove VolumeGroupName 将 VolumeGroupName 替换为卷组的名称。
2.4. 在 web 控制台中创建逻辑卷
- 要点:逻辑卷作为物理驱动器使用。您可以使用 RHEL 10 web 控制台在卷组中创建 LVM 逻辑卷。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体步骤请参阅安装并启用 Web 控制台。
- 列表:cockpit-storaged 软件包已安装在您的系统上。
- 列表:已创建卷组。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:点 Storage。
- 列表:在 Storage 表中,点您要在其中创建逻辑卷的卷组。
2.5. 在 web 控制台中格式化逻辑卷
- 要点:逻辑卷作为物理驱动器使用。要使用它们,您必须使用文件系统格式化它们。
- 要点:您选择的文件系统决定了可用于逻辑卷的配置参数。例如,XFS 文件系统不支持缩小卷。
- 列表:您已安装了 RHEL 10 web 控制台。 具体步骤请参阅安装并启用 Web 控制台。
- 列表:cockpit-storaged 软件包已安装在您的系统上。
- 列表:逻辑卷已创建。
- 列表:您有对系统的 root 访问权限。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:点 Storage。
- 注意:警告 格式化逻辑卷会删除卷上的所有数据。
2.6. 在 web 控制台中重新定义逻辑卷大小
- 要点:您可以在 RHEL 10 web 控制台中扩展或减少逻辑卷。示例流程演示了如何在不使卷离线的情况下增大和缩小逻辑卷的大小。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体步骤请参阅安装并启用 Web 控制台。
- 列表:cockpit-storaged 软件包已安装在您的系统上。
- 列表:现有逻辑卷包含支持调整逻辑卷大小的文件系统。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:点 Storage。
- 列表:在 Storage 表中,点创建了逻辑卷的卷组。
- 注意:警告 您不能减少包含 GFS2 或者 XFS 文件系统的卷。
2.7. 其他资源
- 列表:使用 parted 在磁盘中创建分区表
第 3 章 管理 LVM 卷组
- 要点:您可以创建并使用卷组(VG)来管理组合到单个存储实体中的多个物理卷(PV),并调整其大小。
- 要点:扩展是您可以在 LVM 中分配的最小空间单位。物理扩展(PE)和逻辑扩展(LE)的默认大小为 4 MiB,您可以进行配置。所有扩展都有同样的大小。
3.1. 创建 LVM 卷组
- 要点:您可以使用 vgcreate 命令创建卷组(VG)。您可以为非常大或非常小的卷调整扩展的大小,以优化性能和存储效率。您可以在创建 VG 时指定扩展的大小。要更改扩展的大小,您必须重新创建卷组。
- 要点:先决条件
- 列表:管理访问权限.
- 列表:lvm2 软件包已安装。
- 列表:创建一个或多个物理卷。有关创建物理卷的详情,请参考 创建 LVM 物理卷。
- 列表:列出并识别您要包含在 VG 中的 PV: # pvs
- 列表:创建 VG: # vgcreate VolumeGroupName PhysicalVolumeName1 PhysicalVolumeName2 使用您要创建的卷组的名称替换 VolumeGroupName。将 PhysicalVolumeName 替换为 PV 的名称。 要在创建 VG 时指定扩展的大小,请使用 -s ExtentSize 选项。将 ExtentSize 替换为扩展的大小。如果没有提供大小的后缀,命令默认使用 MB。
- 列表:验证 VG 是否已创建: # vgs VG #PV #LV #SN Attr VSize VFree VolumeGroupName 2 0 0 wz--n- 28.87g 28.87g
- 命令/配置摘录:
# pvs
# vgcreate VolumeGroupName PhysicalVolumeName1 PhysicalVolumeName23.2. 在 web 控制台中创建卷组
- 要点:从一个或多个物理驱动器或者其它存储设备创建卷组。从卷组创建逻辑卷。每个卷组都可以包括多个逻辑卷。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体步骤请参阅安装并启用 Web 控制台。
- 列表:cockpit-storaged 软件包已安装在您的系统上。
- 列表:要创建卷组的物理驱动器或其他类型的存储设备。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:点 Storage。
- 列表:在 Storage 表中,点菜单按钮。
3.3. 重命名 LVM 卷组
- 要点:您可以使用 vgrename 命令重命名卷组(VG)。
- 要点:先决条件
- 列表:管理访问权限.
- 列表:lvm2 软件包已安装。
- 列表:创建一个或多个物理卷。有关创建物理卷的详情,请参考 创建 LVM 物理卷。
- 列表:已创建卷组。有关创建卷组的详情,请参考 创建 LVM 卷组。
- 列表:列出并识别您要重命名的 VG: # vgs
- 列表:重命名 VG: # vgrename OldVolumeGroupName NewVolumeGroupName 将 OldVolumeGroupName 替换为 VG 的名称。将 NewVolumeGroupName 替换为 VG 的新名称。
- 命令/配置摘录:
# vgs
# vgrename OldVolumeGroupName NewVolumeGroupName3.4. 扩展 LVM 卷组
- 要点:您可以使用 vgextend 命令将物理卷(PV)添加到卷组(VG)中。
- 要点:先决条件
- 列表:管理访问权限.
- 列表:lvm2 软件包已安装。
- 列表:创建一个或多个物理卷。有关创建物理卷的详情,请参考 创建 LVM 物理卷。
- 列表:已创建卷组。有关创建卷组的详情,请参考 创建 LVM 卷组。
- 列表:列出并识别您要扩展的 VG: # vgs
- 列表:列出并识别您要添加到 VG 中的 PV: # pvs
- 命令/配置摘录:
# vgs
# pvs3.5. 合并 LVM 卷组
- 要点:您可以使用 vgmerge 命令将两个现有的卷组(VG)合并。源卷将被合并到目标卷中。
- 要点:先决条件
- 列表:管理访问权限.
- 列表:lvm2 软件包已安装。
- 列表:创建一个或多个物理卷。有关创建物理卷的详情,请参考 创建 LVM 物理卷。
- 列表:两个或多个卷组已创建。有关创建卷组的详情,请参考 创建 LVM 卷组。
- 列表:列出并识别您要合并的 VG: # vgs VG #PV #LV #SN Attr VSize VFree VolumeGroupName1 1 0 0 wz--n- 28.87g 28.87g VolumeGroupName2 1 0 0 wz--n- 1.88g 1.88g
- 列表:将源 VG 合并到目标 VG 中: # vgmerge VolumeGroupName2 VolumeGroupName1 将 VolumeGroupName2 替换为目标 VG 的名称。将 VolumeGroupName1 替换为源 VG 的名称。
- 命令/配置摘录:
# vgs
VG #PV #LV #SN Attr VSize VFree VolumeGroupName1 1 0 0 wz--n- 28.87g 28.87g VolumeGroupName2 1 0 0 wz--n- 1.88g 1.88g3.6. 从卷组中删除物理卷
- 要点:使用 vgreduce 命令从卷组(VG)中删除未使用的物理卷(PV)。这可以通过删除空 PV 来减少 VG 容量。删除的 PV 可以重复使用或从系统中删除。
- 要点:流程
- 列表:如果物理卷仍在使用,请将数据从同一卷组迁移到另一个物理卷中: # pvmove /dev/vdb3 /dev/vdb3: Moved: 2.0% ... /dev/vdb3: Moved: 79.2% ... /dev/vdb3: Moved: 100.0%
- 列表:如果现有卷组中的其他物理卷上没有足够的空闲扩展: 从 /dev/vdb4 创建一个新物理卷: # pvcreate /dev/vdb4 Physical volume "/dev/vdb4" successfully created 将新创建的物理卷添加到卷组中: # vgextend VolumeGroupName /dev/vdb4 Volume group "VolumeGroupName" successfully extended 将数据从 /dev/vdb3 移到 /dev/vdb4 中 : # pvmove /dev/vdb3 /dev/vdb4 /dev/vdb3: Moved: 33.33% /dev/v…
- 列表:从 /dev/vdb4 创建一个新物理卷: # pvcreate /dev/vdb4 Physical volume "/dev/vdb4" successfully created
- 列表:将新创建的物理卷添加到卷组中: # vgextend VolumeGroupName /dev/vdb4 Volume group "VolumeGroupName" successfully extended
- 列表:将数据从 /dev/vdb3 移到 /dev/vdb4 中 : # pvmove /dev/vdb3 /dev/vdb4 /dev/vdb3: Moved: 33.33% /dev/vdb3: Moved: 100.00%
- 列表:从卷组中删除物理卷 /dev/vdb3: # vgreduce VolumeGroupName /dev/vdb3 Removed "/dev/vdb3" from volume group "VolumeGroupName"
- 命令/配置摘录:
# pvmove /dev/vdb3
/dev/vdb3: Moved: 2.0% ... /dev/vdb3: Moved: 79.2% ... /dev/vdb3: Moved: 100.0%3.7. 分割 LVM 卷组
- 要点:如果在物理卷中有足够的空闲空间,就可在不添加新磁盘的情况下创建新的卷组。
- 要点:在初始设置中,卷组 VolumeGroupName1 由 /dev/vdb1、/dev/vdb2 和 /dev/vdb3 组成。完成此步骤后,卷组 VolumeGroupName1 由 /dev/vdb1 和 /dev/vdb2 组成。第二个卷组 VolumeGroupName2 由 /dev/vdb3 组成。
- 列表:卷组中有足够的空间。使用 vgscan 命令确定卷组中当前有多少可用空间。
- 列表:根据现有物理卷中的可用容量,将所有使用的物理扩展移动到其他物理卷中。您可以使用 pvmove 命令完成此操作。如需更多信息,请参阅从卷组中删除物理卷。
- 列表:将现有卷组 VolumeGroupName1 分成新卷组 VolumeGroupName2 : # vgsplit VolumeGroupName1 VolumeGroupName2 /dev/vdb3 Volume group "VolumeGroupName2" successfully split from "VolumeGroupName1" 注意 如果您使用现有卷组创建了逻辑卷,请使用以下命令取消激活逻辑卷: # lvchange -a n /dev/VolumeGroupName1/LogicalVolumeName
- 列表:查看两个卷组的属性: # vgs VG #PV #LV #SN Attr VSize VFree VolumeGroupName1 2 1 0 wz--n- 34.30G 10.80G VolumeGroupName2 1 0 0 wz--n- 17.15G 17.15G
- 列表:验证新创建的卷组 VolumeGroupName2 是否由 /dev/vdb3 物理卷组成: # pvs PV VG Fmt Attr PSize PFree Used /dev/vdb1 VolumeGroupName1 lvm2 a-- 1020.00m 0 1020.00m /dev/vdb2 VolumeGroupName1 lvm2 a-- 1020.00m 0 1020.00m /dev/vdb3 VolumeGroupName2 lvm2 a-- 1020.00m 1008.00m 12.00m
- 命令/配置摘录:
# vgsplit VolumeGroupName1 VolumeGroupName2 /dev/vdb3
Volume group "VolumeGroupName2" successfully split from "VolumeGroupName1"- 注意:注意 如果您使用现有卷组创建了逻辑卷,请使用以下命令取消激活逻辑卷: # lvchange -a n /dev/VolumeGroupName1/LogicalVolumeName
3.8. 将卷组移动到另一个系统中
- 要点:您可以使用 vgexport 和 vgimport 命令将整个 LVM 卷组(VG)移动到另一个系统。此过程会保留 VG 中的所有逻辑卷和数据。
- 要点:要在系统间移动 LVM 卷组,请使用以下命令:
- 列表:没有用户正在访问您要移动的卷组中活动卷上的文件。
- 列表:卸载 LogicalVolumeName 逻辑卷: # umount /mnt/LogicalVolumeName
- 列表:停用激活卷组中的所有逻辑卷,这可防止卷组上的任何进一步活动: # vgchange -an VolumeGroupName 0 logical volume(s) in volume group "VolumeGroupName" now active
- 列表:导出卷组,以防止其被您要删除它的系统访问: # vgexport VolumeGroupName Volume group "VolumeGroupName" successfully exported
- 列表:查看导出的卷组: # pvscan PV /dev/sda1 is in exported VG VolumeGroupName [17.15 GB / 7.15 GB free] PV /dev/sdc1 is in exported VG VolumeGroupName [17.15 GB / 15.15 GB free] PV /dev/sdd1 is in exported VG VolumeGroupName [17.15 GB / 15.15 GB free] ...
- 列表:关闭您的系统,拔出组成卷组的磁盘,并将其连接到新系统。
- 命令/配置摘录:
# umount /mnt/LogicalVolumeName
# vgchange -an VolumeGroupName- 注意:注意 您可以使用 vgimport 命令的 --force 参数导入缺少物理卷的卷组,然后运行 vgreduce --removemissing 命令。
3.9. 删除 LVM 卷组
- 要点:您可以使用 vgremove 命令删除现有卷组。只有不包含逻辑卷的卷组才能被删除。
- 要点:先决条件
- 列表:管理访问权限.
- 列表:确定卷组不包含逻辑卷: # vgs -o vg_name,lv_count VolumeGroupName VG #LV VolumeGroupName 0 将 VolumeGroupName 替换为卷组的名称。
- 列表:删除卷组: # vgremove VolumeGroupName 将 VolumeGroupName 替换为卷组的名称。
- 命令/配置摘录:
# vgs -o vg_name,lv_count VolumeGroupName
VG #LV VolumeGroupName 03.10. 在集群环境中删除 LVM 卷组
- 要点:在集群环境中,LVM 使用 lockspace <qualifier> 协调对在多个机器之间共享的卷组的访问。在删除卷组前您必须停止 lockspace,以确保在删除过程中没有其他节点尝试访问或修改它。
- 要点:先决条件
- 列表:管理访问权限.
- 列表:卷组没有包含逻辑卷。
- 列表:确定卷组不包含逻辑卷: # vgs -o vg_name,lv_count VolumeGroupName VG #LV VolumeGroupName 0 将 VolumeGroupName 替换为卷组的名称。
- 列表:停止所有节点上的 lockspace,但您要删除卷组的节点除外: # vgchange --lockstop VolumeGroupName 将 VolumeGroupName 替换为卷组的名称,并等待锁停止。
- 列表:删除卷组: # vgremove VolumeGroupName 将 VolumeGroupName 替换为卷组的名称。
- 命令/配置摘录:
# vgs -o vg_name,lv_count VolumeGroupName
VG #LV VolumeGroupName 0第 4 章 基本逻辑卷管理
- 要点:逻辑卷管理器(LVM)可让您使用逻辑卷而不是直接使用物理设备来管理磁盘存储。
- 要点:使用 LVM,您可以执行以下任务:
- 列表:创建新的逻辑卷,以扩展您系统的存储能力
- 列表:扩展现有卷和精简池,以容纳不断增长的数据
- 列表:重命名卷以便进行更好的组织
- 列表:缩减卷以释放未使用的空间
- 列表:在不再需要时安全地删除卷
- 列表:激活或停用卷,以控制系统对其数据的访问
4.1. 逻辑卷功能的概述
- 要点:使用逻辑卷管理器(LVM),您可以以灵活有效的方式管理磁盘存储,使传统分区无法提供。以下是用于存储管理和优化的关键 LVM 功能概述。
4.2. 创建逻辑卷
- 要点:LVM 通过将物理层抽象为可根据您的需要创建和调整的逻辑卷,来提供一种灵活的处理磁盘存储的方法。
4.2.1. 创建线性(厚)逻辑卷
- 要点:使用线性逻辑卷(LV),您可以将多个物理存储单元合并到一个虚拟存储空间中。您可以轻松地扩展或减少线性 LV,以容纳数据要求。
- 要点:先决条件
- 列表:管理访问权限.
- 列表:lvm2 软件包已安装。
- 列表:已创建卷组。如需更多信息,请参阅创建 LVM 卷组。
- 列表:列出卷组的名称及其大小: # vgs -o vg_name,vg_size VG VSize VolumeGroupName 30.75g
- 列表:创建线性 LV: # lvcreate --name LogicalVolumeName --size VolumeSize VolumeGroupName 使用 LV 的名称替换 LogicalVolumeName。使用 LV 的大小替换 VolumeSize。如果没有大小的后缀,命令默认使用 MB。将 VolumeGroupName 替换为卷组的名称。
- 列表:验证线性 LV 是否已创建: # lvs -o lv_name,seg_type LV Type LogicalVolumeName linear
- 命令/配置摘录:
# vgs -o vg_name,vg_size
VG VSize VolumeGroupName 30.75g4.2.2. 使用 storage RHEL 系统角色创建或者调整逻辑卷大小
- 要点:您可以使用 storage RHEL 系统角色来创建和调整逻辑卷管理器(LVM)逻辑卷。如果卷组不存在,该角色会自动创建卷组。
- 要点:使用 storage 角色执行以下任务:
- 列表:在由多个磁盘组成的卷组中创建 LVM 逻辑卷
- 列表:调整 LVM 上现有文件系统的大小
- 列表:以池总大小的百分比表示 LVM 卷大小
- 列表:您已准备好控制节点和受管节点。
- 列表:以可在受管主机上运行 playbook 的用户登录到控制节点。
- 列表:用于连接到受管节点的帐户具有这些节点的 sudo 权限。
- 命令/配置摘录:
--- - name: Manage local storage hosts: managed-node-01.example.com tasks: - name: Create logical volume ansible.builtin.include_role: name: redhat.rhel_system_roles.storage vars: storage_safe_mode: false storage_pools: - name: myvg disks: - sda - sdb - sdc volumes: - name: mylv size: 2G fs_type: ext4 mount_point: /mnt/data
$ ansible-playbook --syntax-check ~/playbook.yml4.2.3. 创建条带逻辑卷
- 要点:使用条状逻辑卷(LV),您可以在多个物理卷(PV)之间分发数据。这可能会同时利用多个磁盘的带宽来提高读写速度。
- 要点:在创建条带 LV 时,务必要考虑条带的数量和大小。条带数是数据分布的 PV 的数量。增加条带数可以通过同时使用多个磁盘来提高性能。
- 列表:管理访问权限.
- 列表:列出卷组的名称及其大小: # vgs -o vg_name,vg_size VG VSize VolumeGroupName 30.75g
- 列表:创建条带 LV: # lvcreate --stripes NumberOfStripes --stripesize StripeSize --size LogicalVolumeSize --name LogicalVolumeName VolumeGroupName 用条带数替换 NumberOfStripes。将 StripeSize 替换为条带大小(以 KB 为单位)。--stripesize 不是一个必需的选项。如果没有指定条带大小,则默认为 64KB。使用 LV 的名称替换 LogicalVolumeName。将 VolumeGroupName 替换为卷组的名称。
- 列表:验证条状 LV 是否已创建: # lvs -o lv_name,seg_type LV Type LogicalVolumeName striped
- 命令/配置摘录:
# vgs -o vg_name,vg_size
VG VSize VolumeGroupName 30.75g4.2.4. 创建 RAID 逻辑卷
- 要点:RAID 逻辑卷可让您使用多个磁盘来实现冗余和性能。LVM 支持各种 RAID 级别,包括 RAID0、RAID1、RAID4、RAID5、RAID6 和 RAID10。
- 要点:通过 LVM,您可以创建条带 RAID (RAID0、RAID4、RAID5、RAID6)、镜像 RAID (RAID1)或两者的组合(RAID10)。RAID 4、RAID 5 和 RAID 6 通过存储奇偶校验数据来提供容错功能,您可以在磁盘失败时重新构建丢失的信息。
- 列表:管理访问权限.
- 列表:列出卷组的名称及其大小: # vgs -o vg_name,vg_size VG VSize VolumeGroupName 30.75g
- 列表:创建一个 RAID LV: 要创建一个条带 raid,请使用: # lvcreate --type raidlevel --stripes NumberOfStripes --stripesize StripeSize --size Size --name LogicalVolumeName VolumeGroupName 使用 RAID 级别 0、4、5 或 6 替换 level。用条带数替换 NumberOfStripes。将 StripeSize 替换为条带大小(以 KB 为单位)。使用 LV 的大小替换 Size。使用 LV 的名称替换 LogicalVolumeName。 要创建镜像的 RAID,请使用: # lvcre…
- 列表:要创建一个条带 raid,请使用: # lvcreate --type raidlevel --stripes NumberOfStripes --stripesize StripeSize --size Size --name LogicalVolumeName VolumeGroupName 使用 RAID 级别 0、4、5 或 6 替换 level。用条带数替换 NumberOfStripes。将 StripeSize 替换为条带大小(以 KB 为单位)。使用 LV 的大小替换 Size。使用 LV 的名称替换 LogicalVolumeName。
- 列表:要创建镜像的 RAID,请使用: # lvcreate --type raid1 --mirrors MirrorsNumber --size Size --name LogicalVolumeName VolumeGroupName 将 MirrorsNumber 替换为镜像的数量。使用 LV 的大小替换 Size。使用 LV 的名称替换 LogicalVolumeName。
- 列表:要创建一个镜像的和条带的 RAID,请使用: # lvcreate --type raid10 --mirrors MirrorsNumber --stripes NumberOfStripes --stripesize StripeSize --size Size --name LogicalVolumeName VolumeGroupName 将 MirrorsNumber 替换为镜像的数量。用条带数替换 NumberOfStripes。将 StripeSize 替换为条带大小(以 KB 为单位)。使用 LV 的大小替换 Size。使用 LV 的名称替换 LogicalVolumeName。
- 命令/配置摘录:
# vgs -o vg_name,vg_size
VG VSize VolumeGroupName 30.75g- 表格样本(共 7 行):
- RAID 级别 | 类型 | 奇偶校验 | 最小设备数 | 最小条带号
- RAID0 | Striping | None | 2 | 2
- RAID1 | Mirroring | None | 2 | -
- RAID4 | Striping | 使用第一个设备来存储奇偶校验 | 3 | 2
4.2.5. 创建精简逻辑卷
- 要点:精简配置将卷组(VG)物理扩展(PE)分配给精简池,并使用虚拟大小创建精简 LV。精简 LV 大小可能会超过池容量,从而启用过度配置。监控逻辑和物理使用情况,以防止空间耗尽和中断。
- 要点:精简配置可根据需要分配空间来优化存储效率,降低了初始成本并提高了资源利用率。但是,在使用精简 LV 时,请注意以下缺点:
- 列表:不当的丢弃处理可能会阻止释放未使用的存储空间,从而导致空间随着时间的推移被全部分配。
- 列表:在带有快照的文件系统上,写时复制(CoW)操作可能会较慢。
- 列表:数据块可以在多个文件系统之间混合,导致随机访问限制。
- 列表:管理访问权限.
- 列表:您已创建了一个物理卷。如需更多信息,请参阅创建 LVM 物理卷。
- 列表:您已创建了一个卷组。如需更多信息,请参阅创建 LVM 卷组。
- 命令/配置摘录:
# vgs -o vg_name,vg_size
VG VSize VolumeGroupName 30.75g- 注意:注意 您可以在同一精简池中创建其他精简 LV。
4.2.6. 创建一个 VDO 逻辑卷
- 要点:VDO 逻辑卷(LV)使用 Virtual Data Optimizer (VDO)技术来提高存储效率。VDO LV 同时具有虚拟大小和物理大小。虚拟大小指的是呈现给用户的总存储量。
- 要点:物理大小是从 VG 分配的并被 VDO 池使用的实际物理存储量。VDO LV 的虚拟大小通常大于 VDO 池的物理大小,使其过度配置。由于过度配置,需要密切监控 VDO 池中的物理空间,并在需要时进行扩展。VDO LV 和 VDO 池作为一对被创建,并总是作为一对存在。
- 列表:管理访问权限.
- 列表:列出卷组的名称及其大小: # vgs -o vg_name,vg_size VG VSize VolumeGroupName 30.75g
- 列表:创建一个 VDO LV: # lvcreate --type vdo --virtualsize VolumeSize --size PhysicalPoolSize --name VDOVolumeName --vdopool VDOPoolName VolumeGroupName 将 VolumeSize 替换为卷的大小。将 PhysicalPoolSize 替换为池的大小。将 VDOVolumeName 替换为 VDO 卷的名称。将 VDOPoolName 替换为 VDO 池的名称。将 VolumeGroupName 替换为卷组的名称。
- 列表:验证 VDO LV 是否已创建: # lvs -o name,seg_type,size LV Type LSize VDOPoolName vdo-pool 5.00g VDOVolumeName vdo 5.00g
- 命令/配置摘录:
# vgs -o vg_name,vg_size
VG VSize VolumeGroupName 30.75g4.3. 重新调整逻辑卷大小
- 要点:使用逻辑卷管理器(LVM),您可以根据需要重新调整逻辑卷(LV)大小,而不影响其上存储的数据。
4.3.1. 扩展线性逻辑卷
- 要点:您可以使用 lvextend 命令扩展线性(厚)LV 及其快照。
- 要点:先决条件
- 列表:管理访问权限.
- 列表:您要扩展的 LV 在其上面有一个文件系统。
- 列表:确保您的卷组有足够的空间来扩展 LV: # lvs -o lv_name,lv_size,vg_name,vg_size,vg_free LV LSize VG VSize VFree LogicalVolumeName 1.49g VolumeGroupName 30.75g 29.11g
- 列表:扩展线性 LV 并调整文件系统大小: # lvextend --size +AdditionalSize --resizefs VolumeGroupName/LogicalVolumeName 使用要添加到 LV 的空间量来替换 AdditionalSize。默认测量单位是 MB,但您也可以指定其他单位。将 VolumeGroupName 替换为卷组的名称。使用精简卷的名称替换 LogicalVolumeName。
- 列表:验证线性 LV 是否已扩展: # lvs -o lv_name,lv_size LV LSize LogicalVolumeName 6.49g
- 命令/配置摘录:
# lvs -o lv_name,lv_size,vg_name,vg_size,vg_free
LV LSize VG VSize VFree LogicalVolumeName 1.49g VolumeGroupName 30.75g 29.11g4.3.2. 扩展精简逻辑卷
- 要点:您可以使用 lvextend 命令扩展精简逻辑卷(LV)。
- 要点:先决条件
- 列表:管理访问权限.
- 列表:确保精简池对要写入的任何新数据有足够的空间: # lvs -o lv_name,lv_size,data_percent LV LSize Data% MyThinPool 20.10g 3.21 ThinVolumeName 1.10g 4.88
- 列表:扩展 thin LV 并调整文件系统大小: # lvextend --size +AdditionalSize --resizefs VolumeGroupName/ThinVolumeName 使用要添加到 LV 的空间量来替换 AdditionalSize。默认测量单位是 MB,但您也可以指定其他单位。将 VolumeGroupName 替换为卷组的名称。将 ThinVolumeName 替换为精简卷的名称。
- 列表:验证精简 LV 是否已扩展: # lvs -o lv_name,lv_size,data_percent LV LSize Data% MyThinPool 20.10g 3.21 ThinVolumeName 6.10g 0.43
- 命令/配置摘录:
# lvs -o lv_name,lv_size,data_percent
LV LSize Data% MyThinPool 20.10g 3.21 ThinVolumeName 1.10g 4.884.3.3. 扩展精简池
- 要点:精简逻辑卷的虚拟大小可以超过精简池的物理容量,导致过度配置。要防止空间不足,您必须监控并定期扩展精简池的容量。
- 要点:data_percent 指标表示精简池当前使用的已分配的数据空间的百分比。metadata_percent 指标反映了用于存储元数据的空间d 百分比,这对于在精简池中管理映射非常重要。
- 列表:管理访问权限.
- 列表:显示使用的数据和元数据空间: # lvs -o lv_name,seg_type,data_percent,metadata_percent LV Type Data% Meta% ThinPoolName thin-pool 97.66 26.86 ThinVolumeName thin 48.80
- 列表:扩展精简池: # lvextend -L Size VolumeGroupName/ThinPoolName 使用精简池的新大小替换 Size。将 VolumeGroupName 替换为卷组的名称。将 ThinPoolName 替换为精简池的名称。 数据大小将被扩展。如果需要,元数据大小将被扩展。
- 列表:验证精简池是否已扩展: # lvs -o lv_name,seg_type,data_percent,metadata_percent LV Type Data% Meta% ThinPoolName thin-pool 24.41 16.93 ThinVolumeName thin 24.41
- 列表:显示 data_percent 段: # lvs -o lv_name,seg_type,data_percent LV Type Data% ThinPoolName thin-pool 93.87
- 列表:扩展 data_percent 段: # lvextend -L Size VolumeGroupName/ThinPoolName_tdata 将 Size 替换为数据段的大小。将 VolumeGroupName 替换为卷组的名称。将 ThinPoolName 替换为精简池的名称。
- 命令/配置摘录:
# lvs -o lv_name,seg_type,data_percent,metadata_percent
LV Type Data% Meta% ThinPoolName thin-pool 97.66 26.86 ThinVolumeName thin 48.804.3.4. 扩展 VDO 池
- 要点:监控并定期扩展 VDO 池的容量以防止耗尽空间非常重要。
- 要点:逻辑卷管理器(LVM)提供了选项,来根据需要手动扩展 VDO 池容量。另外,您可以启用监控并自动化 VDO 池的扩展。
- 列表:管理访问权限.
- 列表:显示当前 VDO 使用情况: # lvs -o lv_name,vg_name,lv_size,data_percent VolumeGroupName/VDOPoolName LV VG LSize Data% VDOPoolName VolumeGroupName 5.00g 60.03 将 VolumeGroupName 替换为卷组的名称。将 VDOPoolName 替换为 VDO 池的名称。
- 列表:扩展 VDO 池: # lvextend --size PhysicalSize VolumeGroupName/VDOPoolName 使用新的物理大小替换 PhysicalSize。将 VolumeGroupName 替换为卷组的名称。将 VDOPoolName 替换为 VDO 池的名称。
- 列表:验证 VDO 池是否已扩展: # lvs -o lv_name,vg_name,lv_size,data_percent VolumeGroupName/VDOPoolName LV VG LSize Data% VDOPoolName VolumeGroupName 10.00g 30.02
- 列表:检查 VDO 池是否已被监控: # lvs -o name,seg_monitor VolumeGroupName/VDOPoolName LV VG Monitor VDOPoolName VolumeGroupName not monitored 将 VolumeGroupName 替换为卷组的名称。将 VDOPoolName 替换为 VDO 池的名称。
- 列表:使用 dmeventd 守护进程启用 VDO 池监控: # lvchange --monitor y VolumeGroupName/VDOPoolName 将 VolumeGroupName 替换为卷组的名称。将 VDOPoolName 替换为 VDO 池的名称。
- 命令/配置摘录:
# lvs -o lv_name,vg_name,lv_size,data_percent VolumeGroupName/VDOPoolName
LV VG LSize Data% VDOPoolName VolumeGroupName 5.00g 60.034.3.5. 缩小逻辑卷
- 要点:当 LV 的大小缩小时,释放的逻辑扩展将返回到卷组,然后可被其他 LV 使用。
- 要点:先决条件
- 列表:管理访问权限.
- 列表:列出逻辑卷及其卷组: # lvs -o lv_name,vg_name,lv_size LV VG LSize LogicalVolumeName VolumeGroupName 6.49g
- 列表:检查挂载逻辑卷的位置: # findmnt -o SOURCE,TARGET /dev/VolumeGroupName/LogicalVolumeName SOURCE TARGET /dev/mapper/VolumeGroupName-LogicalVolumeName /MountPoint 将 /dev/VolumeGroupName/LogicalVolumeName 替换为逻辑卷的路径。
- 列表:卸载逻辑卷: # umount /MountPoint 将 /MountPoint 替换为您的逻辑卷的挂载点。
- 列表:检查并修复任何文件系统错误: # e2fsck -f /dev/VolumeGroupName/LogicalVolumeName
- 列表:重新调整 LV 和文件系统大小: # lvreduce --size TargetSize --resizefs VolumeGroupName/LogicalVolumeName 使用 LV 的新大小替换 TargetSize。将 VolumeGroupName/LogicalVolumeName 替换为逻辑卷的路径。
- 命令/配置摘录:
# lvs -o lv_name,vg_name,lv_size
LV VG LSize LogicalVolumeName VolumeGroupName 6.49g- 注意:警告 存储在减少的区域中的数据会丢失。在继续操作前,始终备份数据并调整文件系统的大小。
4.4. 重命名逻辑卷
- 要点:您可以使用 lvrename 命令重命名现有逻辑卷,包括快照。
- 要点:先决条件
- 列表:管理访问权限.
- 列表:列出逻辑卷及其卷组: # lvs -o lv_name,vg_name LV VG LogicalVolumeName VolumeGroupName
- 列表:重命名逻辑卷: # lvrename VolumeGroupName/LogicalVolumeName VolumeGroupName/NewLogicalVolumeName 将 VolumeGroupName 替换为卷组的名称。使用逻辑卷的名称替换 LogicalVolumeName。使用新逻辑卷名称替换 NewLogicalVolumeName。
- 列表:验证逻辑卷是否已被重命名: # lvs -o lv_name LV NewLogicalVolumeName
- 命令/配置摘录:
# lvs -o lv_name,vg_name
LV VG LogicalVolumeName VolumeGroupName4.5. 删除逻辑卷
- 要点:您可以使用 lvremove 命令删除现有逻辑卷,包括快照。
- 要点:先决条件
- 列表:管理访问权限.
- 列表:列出逻辑卷及其路径: # lvs -o lv_name,lv_path LV Path LogicalVolumeName /dev/VolumeGroupName/LogicalVolumeName
- 列表:检查挂载逻辑卷的位置: # findmnt -o SOURCE,TARGET /dev/VolumeGroupName/LogicalVolumeName SOURCE TARGET /dev/mapper/VolumeGroupName-LogicalVolumeName /MountPoint 将 /dev/VolumeGroupName/LogicalVolumeName 替换为逻辑卷的路径。
- 列表:卸载逻辑卷: # umount /MountPoint 将 /MountPoint 替换为您的逻辑卷的挂载点。
- 列表:删除逻辑卷: # lvremove VolumeGroupName/LogicalVolumeName 将 VolumeGroupName/LogicalVolumeName 替换为逻辑卷的路径。
- 命令/配置摘录:
# lvs -o lv_name,lv_path
LV Path LogicalVolumeName /dev/VolumeGroupName/LogicalVolumeName4.6. 激活逻辑卷
- 要点:您可以使用 lvchange 命令激活逻辑卷。
- 要点:先决条件
- 列表:管理访问权限.
- 列表:列出逻辑卷、其卷组及其路径: # lvs -o lv_name,vg_name,lv_path LV VG Path LogicalVolumeName VolumeGroupName VolumeGroupName/LogicalVolumeName
- 列表:激活逻辑卷: # lvchange --activate y VolumeGroupName/LogicalVolumeName 将 VolumeGroupName 替换为卷组的名称。使用逻辑卷的名称替换 LogicalVolumeName。 注意 当激活作为另一个 LV 的快照创建的精简 LV 时,您可能需要使用- ignoreactivationskip 选项来激活它。
- 列表:验证 LV 是否活跃: # lvdisplay VolumeGroupName/LogicalVolumeName ... LV Status available 将 VolumeGroupName 替换为卷组的名称。使用逻辑卷的名称替换 LogicalVolumeName。
- 命令/配置摘录:
# lvs -o lv_name,vg_name,lv_path
LV VG Path LogicalVolumeName VolumeGroupName VolumeGroupName/LogicalVolumeName- 注意:注意 当激活作为另一个 LV 的快照创建的精简 LV 时,您可能需要使用- ignoreactivationskip 选项来激活它。
4.7. 停用逻辑卷
- 要点:默认情况下,当您创建逻辑卷时,它处于活动状态。您可以使用 lvchange 命令停用逻辑卷。
- 要点:先决条件
- 列表:管理访问权限.
- 列表:列出逻辑卷、其卷组及其路径: # lvs -o lv_name,vg_name,lv_path LV VG Path LogicalVolumeName VolumeGroupName /dev/VolumeGroupName/LogicalVolumeName
- 列表:检查挂载逻辑卷的位置: # findmnt -o SOURCE,TARGET /dev/VolumeGroupName/LogicalVolumeName SOURCE TARGET /dev/mapper/VolumeGroupName-LogicalVolumeName /MountPoint 将 /dev/VolumeGroupName/LogicalVolumeName 替换为逻辑卷的路径。
- 列表:卸载逻辑卷: # umount /MountPoint 将 /MountPoint 替换为您的逻辑卷的挂载点。
- 列表:取消激活逻辑卷: # lvchange --activate n VolumeGroupName/LogicalVolumeName 将 VolumeGroupName 替换为卷组的名称。使用逻辑卷的名称替换 LogicalVolumeName。
- 列表:验证 LV 是否未激活: # lvdisplay VolumeGroupName/LogicalVolumeName ... LV Status NOT available 将 VolumeGroupName 替换为卷组的名称。使用逻辑卷的名称替换 LogicalVolumeName。
- 命令/配置摘录:
# lvs -o lv_name,vg_name,lv_path
LV VG Path LogicalVolumeName VolumeGroupName /dev/VolumeGroupName/LogicalVolumeName- 注意:警告 停用带有活跃挂载或正在使用的逻辑卷可能导致数据不一致和系统错误。
第 5 章 高级逻辑卷管理
- 要点:LVM 提供高级功能,如逻辑卷时间副本中的快照。它支持缓存,以使用更快的设备加快较慢的存储。它还启用了自定义精简池和 VDO 逻辑卷,以提高存储效率。
5.1. 管理逻辑卷快照
- 要点:快照是一个在特定时间点镜像另一个 LV 的内容的逻辑卷(LV)。
5.1.1. 了解逻辑卷快照
- 要点:当您创建快照时,您在创建一个作为另一个 LV 的时间点副本的新 LV。最初,快照 LV 不包含实际数据。而它会在创建快照时引用原始 LV 的数据块。
- 要点:精简快照是从现有精简置备 LV 创建的一种 LV 。精简快照不需要预先分配额外的空间。最初,原始 LV 及其快照共享同样的数据块。当更改原始 LV 时,它会将新数据写入不同的块。快照继续引用原始块,在创建快照时保留 LV 数据的时点视图。
- 注意:警告 定期监控快照的存储使用情况非常重要。如果快照达到其分配空间的 100%,则它将无效。 必须在完全填满快照之前扩展快照。这可以通过使用 lvextend 命令手动完成,也可以使用 /etc/lvm/lvm.conf 文件自动完成。
5.1.2. 管理厚逻辑卷快照
- 要点:当您创建厚 LV 快照时,务必要考虑存储要求和快照的预期寿命。您需要根据原始卷的预期变化来为其分配足够的存储。
- 要点:快照必须有足够的大小来捕获其预期生命周期期间的更改。但是,它不能超过原始 LV 的大小。如果您预期更改率较低,则 10%-15% 的快照大小可能就足够了。对于高更改率的 LV,您可能需要分配 30% 或更多的空间。
- 列表:管理访问权限.
- 列表:您已创建了一个物理卷。如需更多信息,请参阅创建 LVM 物理卷。
- 列表:您已创建了一个卷组。如需更多信息,请参阅创建 LVM 卷组。
- 列表:您已创建了一个逻辑卷。如需更多信息,请参阅 创建逻辑卷。
- 列表:确定您要创建快照的 LV: # lvs -o vg_name,lv_name,lv_size VG LV LSize VolumeGroupName LogicalVolumeName 10.00g 快照的大小不能超过 LV 的大小。
- 列表:创建厚 LV 快照: # lvcreate --snapshot --size SnapshotSize --name SnapshotName VolumeGroupName/LogicalVolumeName 使用您要为快照分配的大小(例如 10G)替换 SnapshotSize。使用您要给快照逻辑卷取的名称替换 SnapshotName。使用包含原始逻辑卷的卷组的名称替换 VolumeGroupName。使用您要为其创建快照的逻辑卷的名称替换 LogicalVolumeName。
- 命令/配置摘录:
# lvs -o vg_name,lv_name,lv_size
VG LV LSize VolumeGroupName LogicalVolumeName 10.00g- 注意:重要 必须在完全填满快照之前扩展快照。如果快照达到其分配空间的 100%,则其变为无效。您可以使用 lvs -o lv_name,data_percent,origin 命令监控快照容量。
- 注意:注意 如果原始 LV 和快照 LV 中的任何一个处于活动状态,则它们之间的合并会被推迟。只有在 LV 被重新激活且没有使用时,才会继续。
5.1.3. 管理精简逻辑卷快照
- 要点:当存储效率是优先考虑因素时,精简置备是合适的。存储空间动态分配减少了初始存储成本,并最大限度地利用了可用的存储资源。
- 要点:在具有动态工作负载或存储随时间而增长的环境中,精简配置允许灵活性。它使存储系统能够适应变化的需求,而无需预先分配大量的存储空间。使用动态分配时,有可能进行过度置备。所有逻辑卷(LV)的总大小可能会超过精简池的物理大小。这可能会造成假设不会同时使用所有空间。
- 列表:管理访问权限.
- 列表:您已创建了一个物理卷。如需更多信息,请参阅创建 LVM 物理卷。
- 列表:您已创建了一个卷组。如需更多信息,请参阅创建 LVM 卷组。
- 列表:您已创建了一个逻辑卷。如需更多信息,请参阅 创建逻辑卷。
- 列表:确定您要创建快照的 LV: # lvs -o lv_name,vg_name,pool_lv,lv_size LV VG Pool LSize PoolName VolumeGroupName 152.00m ThinVolumeName VolumeGroupName PoolName 100.00m
- 列表:创建精简 LV 快照: # lvcreate --snapshot --name ThinSnapshotName VolumeGroupName/ThinVolumeName 使用您要提供给快照逻辑卷的名称替换 ThinSnapshotName。使用包含原始逻辑卷的卷组的名称替换 VolumeGroupName。使用您要为其创建快照的精简逻辑卷的名称替换 ThinVolumeName。
- 命令/配置摘录:
# lvs -o lv_name,vg_name,pool_lv,lv_size
LV VG Pool LSize PoolName VolumeGroupName 152.00m ThinVolumeName VolumeGroupName PoolName 100.00m5.2. 缓存逻辑卷
- 要点:您可以使用 dm-cache 或 dm-writecache 目标缓存逻辑卷。
- 要点:DM-cache 使用固态磁盘(SSD)作为较慢的硬盘(HDD)的缓存。它缓存读和写数据,优化频繁使用的数据的访问时间。它在混合工作负载环境中非常有用,其中增强读写操作可带来显著的性能改进。
5.2.1. 使用 dm-cache 缓存逻辑卷
- 要点:当使用 dm-cache 缓存 LV 时,缓存池会存储缓存数据和元数据。缓存池与特定 LV 关联。频繁访问的块会被缓存,而不太频繁访问的块保留在较慢的存储中。
- 要点:先决条件
- 列表:管理访问权限.
- 列表:显示您要缓存的 LV 及其卷组: # lvs -o lv_name,vg_name LV VG LogicalVolumeName VolumeGroupName
- 列表:创建缓存池: # lvcreate --type cache-pool --name CachePoolName --size Size VolumeGroupName /FastDevicePath 将 CachePoolName 替换为缓存池的名称。使用缓存池的大小替换 Size。将 VolumeGroupName 替换为卷组的名称。将 /FastDevicePath 替换为快速设备(如 SSD 或 NVME)的路径。
- 列表:将缓存池附加到 LV: # lvconvert --type cache --cachepool VolumeGroupName/CachePoolName VolumeGroupName/LogicalVolumeName
- 列表:验证 LV 现在是否被缓存了: # lvs -o lv_name,pool_lv LV Pool LogicalVolumeName [CachePoolName_cpool]
- 命令/配置摘录:
# lvs -o lv_name,vg_name
LV VG LogicalVolumeName VolumeGroupName5.2.2. 使用 dm-writecache 缓存逻辑卷
- 要点:当使用 dm-writecache 缓存 LV 时,会在逻辑卷和存储设备之间创建一个缓存层。DM-writecache 在更快速的介质(如 SSD)上存储写入,然后再将它们写入主存储。这提高了写入密集型工作负载性能。
- 要点:先决条件
- 列表:管理访问权限.
- 列表:显示您要缓存的逻辑卷及其卷组: # lvs -o lv_name,vg_name LV VG LogicalVolumeName VolumeGroupName
- 列表:创建缓存卷: # lvcreate --name CacheVolumeName --size Size VolumeGroupName /FastDevicePath 将 CacheVolumeName 替换为缓存卷的名称。使用缓存池的大小替换 Size。将 VolumeGroupName 替换为卷组的名称。将 /FastDevicePath 替换为快速设备(如 SSD 或 NVME)的路径。
- 列表:停用缓存卷: # lvchange -an VolumeGroupName/CacheVolumeName 将 VolumeGroupName 替换为卷组的名称。将 CacheVolumeName 替换为缓存卷的名称。
- 列表:将缓存卷附加到 LV: # lvconvert --type writecache --cachevol CacheVolumeName VolumeGroupName/LogicalVolumeName 将 CacheVolumeName 替换为缓存卷的名称。将 VolumeGroupName 替换为卷组的名称。使用逻辑卷的名称替换 LogicalVolumeName。
- 列表:验证 LV 现在是否被缓存了: # lvs -o lv_name,pool_lv LV Pool LogicalVolumeName [CacheVolumeName_cvol]
- 命令/配置摘录:
# lvs -o lv_name,vg_name
LV VG LogicalVolumeName VolumeGroupName5.2.3. 取消逻辑卷的缓存
- 要点:您可以从逻辑卷中删除缓存,可以在保留其数据时分离缓存,或者完全取消缓存并删除缓存,从而释放存储空间。
- 要点:使用两种主要方法从 LV 中删除缓存。
- 列表:管理访问权限.
- 列表:显示缓存的 LV: # lvs -o lv_name,pool_lv,vg_name LV Pool VG LogicalVolumeName [CacheVolumeName_cvol] VolumeGroupName
- 列表:分离或删除缓存的卷: 要分离缓存的卷,请使用: # lvconvert --splitcache VolumeGroupName/LogicalVolumeName 要分离和删除缓存的卷,请使用: # lvconvert --uncache VolumeGroupName/LogicalVolumeName 将 VolumeGroupName 替换为卷组的名称。使用逻辑卷的名称替换 LogicalVolumeName。
- 列表:要分离缓存的卷,请使用: # lvconvert --splitcache VolumeGroupName/LogicalVolumeName
- 列表:要分离和删除缓存的卷,请使用: # lvconvert --uncache VolumeGroupName/LogicalVolumeName 将 VolumeGroupName 替换为卷组的名称。使用逻辑卷的名称替换 LogicalVolumeName。
- 列表:验证 LV 是否没有被缓存: # lvs -o lv_name,pool_lv
- 命令/配置摘录:
# lvs -o lv_name,pool_lv,vg_name
LV Pool VG LogicalVolumeName [CacheVolumeName_cvol] VolumeGroupName5.3. 创建自定义精简池
- 要点:您可以创建自定义精简池来更好地控制存储。
- 要点:先决条件
- 列表:管理访问权限.
- 列表:显示可用的卷组: # vgs -o vg_name VG VolumeGroupName
- 列表:列出可用的设备: # lsblk
- 列表:创建 LV 来保存精简池数据: # lvcreate --name ThinPoolDataName --size Size VolumeGroupName /DevicePath 将 ThinPoolDataName 替换为您的精简池 data LV 的名称。使用 LV 的大小替换 Size。将 VolumeGroupName 替换为您的卷组的名称。使用您的设备路径替换 /DevicePath。
- 列表:创建 LV 来保存精简池元数据: # lvcreate --name ThinPoolMetadataName --size Size VolumeGroupName /DevicePath
- 列表:将 LV 合并到精简池中: # lvconvert --type thin-pool --poolmetadata ThinPoolMetadataName VolumeGroupName/ThinPoolDataName
- 命令/配置摘录:
# vgs -o vg_name
VG VolumeGroupName5.4. 创建自定义 VDO 逻辑卷
- 要点:使用逻辑卷管理器(LVM),您可以创建一个自定义 LV,该 LV 使用 Virtual Data Optimizer (VDO)池进行数据存储。
- 要点:先决条件
- 列表:管理访问权限.
- 列表:显示 VG: # vgs VG #PV #LV #SN Attr VSize VFree VolumeGroupName 1 0 0 wz--n- 28.87g 28.87g
- 列表:创建一个要转换为 VDO 池的 LV : # lvcreate --name VDOPoolName --size Size VolumeGroupName /DevicePath 将 VDOPoolName 替换为 VDO 池的名称。使用 VDO 池的大小替换 Size。将 VolumeGroupName 替换为 VG 的名称。使用您的设备路径替换 /DevicePath。
- 列表:将此 LV 转换为 VDO 池。在这个转换中,您要创建一个使用 VDO 池的新 VDO LV。由于 lvcreate 正在创建新的 VDO LV,因此您必须为新 VDO LV 指定参数。使用 --name|-n 指定新 VDO LV 的名称,并使用 --virtualsize|-V 指定新 VDO LV 的大小。 # lvconvert --type vdo-pool --name VDOVolumeName --virtualsize VDOVolumeSize VolumeGroupName/VDOPoolName 将 VDOVolumeName 替换为 VDO 卷的名称。将 VDOVolumeSize 替换为 VDO 卷的大…
- 列表:验证 LV 是否已转换为 VDO 池: # lvs -o lv_name,vg_name,seg_type LV VG Type VDOPoolName VolumeGroupName vdo-pool VDOVolumeName VolumeGroupName vdo
- 命令/配置摘录:
# vgs
VG #PV #LV #SN Attr VSize VFree VolumeGroupName 1 0 0 wz--n- 28.87g 28.87g第 6 章 使用快照管理系统升级
- 要点:执行可恢复的 Red Hat Enterprise Linux 系统升级,以返回到操作系统的早期版本。您可以使用 快照管理器 (snapm)、Boom 引导管理器 (boom)和 Leapp 操作系统现代化框架。
- 要点:快照管理器提供一个易于使用的前端,来使用 LVM2 或 Stratis 存储快照。快照管理器使用插件设计来为挂载点的列表或块设备路径自动找到快照提供商。
- 列表:如果满足以下条件,使用快照的系统升级支持还原保护的升级: 系统(以及要包含在快照进程中的所有文件系统)被安装到 LVM2 逻辑卷或 Stratis 存储文件系统。LVM2 支持包括线性(厚)卷和精简置备的卷。 在升级过程中,要有足够的可用空间来维护快照。 您至少运行 Red Hat Enterprise Linux 9.6。
- 列表:系统(以及要包含在快照进程中的所有文件系统)被安装到 LVM2 逻辑卷或 Stratis 存储文件系统。LVM2 支持包括线性(厚)卷和精简置备的卷。
- 列表:在升级过程中,要有足够的可用空间来维护快照。
- 列表:您至少运行 Red Hat Enterprise Linux 9.6。
- 列表:还原发生在文件系统挂载的粒度上。如果以下目录是 /var 或 root 文件系统的一部分,则还原升级也会还原这些目录的内容: /var/log /var/lib/libvirt/images /var/lib/containers 如果这不满足您的要求,请考虑将系统安装到独立卷,以便根据需要保存日志、镜像和容器目录的内容。
- 列表:/var/log
6.1. 快照管理器进程的概述
- 要点:使用 snapm 命令创建一个 快照集,以便您可以访问、使用和恢复到操作系统的早期版本。
- 要点:快照管理器可以自动创建可以从 GRand Unified Bootloader (GRUB)引导装载程序菜单选择和访问的引导条目。使用 快照条目,您可以引导和访问操作系统的早期版本。将 恢复条目 与 snapm snapset revert 命令结合使用时,您可以恢复系统的状态,因为它在更新尝试前已存在。
6.2. 大小策略
- 要点:使用 Snapshot Manager 时,在创建快照集合时提供 大小策略。大小策略提示了需要多少空间快照内容。不同的快照后端根据供应商要求应用大小策略。
- 要点:要使快照数据在整个升级过程中保持有效,请确保对于所有类型的快照,有足够的空间可用。
- 列表:lvm2cow: 大小策略决定为快照卷分配的异常存储的大小。这是一个固定大小,可在创建后扩展,并反映快照可以存储的最大更改量。如果快照可用的空间用尽,则会被内核视为无效,且无法再使用。如需更多信息,请参阅您系统上的 snapm (8) 和 lvcreate (8) 手册页。
- 列表:lvm2thin 和 stratis :在创建快照时,会根据相应精简池中的可用空间检查大小策略。随着原始卷内容的变化,会从精简池中动态消耗空间。如需更多信息,请参阅您系统上的 lvmthin (7) 和 stratis (8) 手册页。
- 列表:FIXED :带有可选单元后缀的固定大小,如 MiB、GiB、TiB 等等。例如,10GiB。
- 列表:%FREE: 从 0 到 100% 的可用空间的百分比。例如,50%FREE。
- 列表:%USED: 当前在挂载点消耗的空间的百分比,如 df 命令所报告的。您可以使用大于 100% 的值来允许现有内容被完全覆盖,不会耗尽空间。此策略只能应用到与挂载的文件系统相对应的快照源。例如,200%USED。
- 列表:%SIZE: 从 0 到 100% 的原始卷大小的百分比。例如: 75%SIZE.
6.3. 使用快照管理器升级到另一个版本
- 要点:使用快照管理器 Red Hat Enterprise Linux 操作系统的升级。
- 要点:先决条件
- 列表:您正在运行 Red Hat Enterprise Linux 9.6。
- 列表:您已安装了 snapm 和 boom-boot 软件包的当前版本。使用 dnf -y install snapm 安装快照管理器及其依赖项。
- 列表:您有足够的空间用于快照集。根据原始安装的大小进行大小估计。列出所有挂载的逻辑卷,并确保有足够的空间用于每个卷。
- 列表:您已安装了 leapp 和 leapp-upgrade-el9toel10 软件包。
- 列表:使用引导和恢复引导条目,创建系统卷的命名的快照集。例如,如果您的系统由单独的 root 和 /var 文件系统组成,并且您希望将快照命名为 before-upgrade : # snapm snapset create --boot --revert before-upgrade / /var SnapsetName: before-upgrade Sources: /, /var NrSnapshots: 2 Time: 2025-04-23 20:41:53 UUID: 5e56c455-6285-5f2d-a640-1595eac8381a Status: Active Autoactivate: yes Bootable:…
- 列表:create 创建快照集。
- 命令/配置摘录:
# snapm snapset create --boot --revert before-upgrade / /var
SnapsetName: before-upgrade Sources: /, /var NrSnapshots: 2 Time: 2025-04-23 20:41:53 UUID: 5e56c455-6285-5f2d-a640-1595eac8381a Status: Active Autoactivate: yes Bootable: yes BootEntries: SnapshotEntry: 178e20f RevertEntry: 6703c586.4. 在 Red Hat Enterprise Linux 版本间切换
- 要点:访问您计算机上的当前和早期的 Red Hat Enterprise Linux 版本。快照管理器和 GRUB 引导菜单条目提供对不同操作系统版本的访问。这降低了升级风险,帮助最大程度缩短停机时间。
- 要点:快照管理器和 GRUB 引导条目提供以下优点:
- 列表:快速比较这两个环境。
- 列表:在评估升级结果时在环境之间切换。
- 列表:恢复文件系统的较早内容。
- 列表:在升级的主机运行期间,继续访问旧系统。
- 列表:随时停止和恢复更新过程,即使升级本身失败了。
- 列表:重启系统: # reboot
- 命令/配置摘录:
# reboot
# uname -r6.5. 在成功升级后删除快照集
- 要点:如果您使用快照管理器成功升级了您的系统,您可以删除快照集。删除快照集会自动删除任何相应的引导条目。
- 要点:先决条件
- 列表:您已使用 Snapshot Manager 和 Leapp 将 Red Hat Enterprise Linux 成功升级到更新的版本。
- 列表:从 GRUB 引导装载程序屏幕引导到 Red Hat Enterprise Linux 10。
- 列表:系统加载后,查看可用的快照集。以下输出显示了快照集列表中的 before-upgrade 快照集: # snapm snapset list SnapsetName Time NrSnapshots Status Sources before-upgrade 2025-04-23 21:47:17 2 Active /, /var
- 列表:按名称删除快照集: # snapm snapset delete before-upgrade
- 列表:完成剩余的升级后任务。
- 列表:从 RHEL 9 升级到 RHEL 10
- 命令/配置摘录:
# snapm snapset list
SnapsetName Time NrSnapshots Status Sources before-upgrade 2025-04-23 21:47:17 2 Active /, /var- 注意:重要 您不能在删除快照后执行任何带有快照集的进一步操作。
6.6. 在更新失败后恢复
- 要点:使用 snapm snapset 在操作系统失败后恢复系统。它还可以解决升级环境中的问题,如软件不兼容。从快照引导环境开始恢复。
- 要点:先决条件
- 列表:您有一个快照集。有关创建快照的说明,请参阅使用快照 管理器升级到另一个版本。
- 列表:启动恢复操作: # snapm snapset revert before-upgrade Delaying merge since origin is open. Merging of snapshot rhel/root-snapset_before-upgrade_1745441237_- will occur on next activation of rhel/root. Delaying merge since origin is open. Merging of snapshot rhel/var-snapset_before-upgrade_1745441237_-var will occur on nex…
- 列表:重启机器以恢复操作系统状态: # reboot
- 列表:从 GRUB 屏幕中选择 Revert 引导条目。当系统卷处于活跃状态时,系统会自动启动快照恢复操作。 重要 当合并操作启动时,快照卷不再可用。启动恢复操作会自动删除快照引导条目。
- 列表:完成合并操作后,删除不用的条目: # rm -f /boot/loader/entries/.el10 # rm -f /boot/.el10
- 列表:成功恢复系统后,使用 boom 命令删除恢复引导条目: # boom list -o+title BootID Version Name RootDevice Title 34d576e 5.14.0-546.el9.x86_64 Red Hat Enterprise Linux /dev/mapper/rhel-root Red Hat Enterprise Linux (5.14.0-546.el9.x86_64) 9.6 (Plow) b737685 5.14.0-558.el9.x86_64 Red Hat Enterprise Linux /dev/mapper/rhel-root Red Hat Enterprise …
- 命令/配置摘录:
# snapm snapset revert before-upgrade
Delaying merge since origin is open. Merging of snapshot rhel/root-snapset_before-upgrade_1745441237_- will occur on next activation of rhel/root. Delaying merge since origin is open. Merging of snapshot rhel/var-snapset_before-upgrade_1745441237_-var will occur on next activation of rhel/var. WARNING - Snaphot set before-upgrade is in use: reboot required to complete revert WARNING - Boot into 'Revert before-upgrade 2025-04-23 21:47:17 (5.14.0-558.el9.x86_64)' to continue- 注意:警告 恢复快照集后,您必须继续此流程中的所有剩余步骤,以防止数据丢失。
- 注意:重要 当合并操作启动时,快照卷不再可用。启动恢复操作会自动删除快照引导条目。
第 7 章 自定义 LVM 报告
- 要点:LVM 提供了广泛的配置和命令行选项来生成自定义报告。您可以对输出进行排序,指定单元、使用选择条件,并更新 lvm.conf 文件以自定义 LVM 报告。
7.1. 控制 LVM 显示的格式
- 要点:可以通过使用特定参数控制 pvs、lvs 和 vgs 命令的显示字段、排序选项和格式来自定义 LVM 命令输出。
- 要点:当您使用没有额外选项的 pvs、lvs 或 vgs 命令时,您会看到以默认排序顺序显示的默认字段集合。pvs 命令的默认字段包括以下按物理卷名称排序的信息:
- 列表:PV :物理卷名称。
- 列表:VG :卷组名称。
- 列表:Fmt: 物理卷的元数据格式:lvm2 或 lvm1。
- 列表:Attr :物理卷的状态:(a)- 可分配或(x)- 导出的。
- 列表:PSize :物理卷的大小。
- 列表:PFree :物理卷上剩余的可用空间。 显示自定义字段 要显示与默认字段不同的字段,请使用 -o 选项。下面的例子只显示物理卷的名称、大小和可用空间: # pvs -o pv_name,pv_size,pv_free PV PSize PFree /dev/vdb1 17.14G 17.14G /dev/vdb2 17.14G 17.09G /dev/vdb3 17.14G 17.14G 对 LVM 的显示进行排序 要根据特定条件对结果进行排序,请使用 -O 选项。以下示例按其物理卷的空闲以升序排序条目: # pvs -o pv_name,pv_size,pv_free -O pv_free PV PSize PFree…
- 命令/配置摘录:
# pvs
PV VG Fmt Attr PSize PFree /dev/vdb1 VolumeGroupName lvm2 a-- 17.14G 17.14G /dev/vdb2 VolumeGroupName lvm2 a-- 17.14G 17.09G /dev/vdb3 VolumeGroupName lvm2 a-- 17.14G 17.14G7.2. 为 LVM 显示指定单位
- 要点:LVM 显示命令支持使用基本 2、基础 10 或自定义单元(使用- units 参数)自定义大小单元输出,以便灵活格式化。
- 要点:请查看下表以了解所有参数:
- 列表:如果您没有指定单位的值,则默认使用人类可读的格式(r)。以下 vgs 命令以人类可读的格式显示 VG 的大小。使用最合适的单位,并且舍入指示符 < 显示实际大小是一个大概值,其小于 931 gibibytes。 # vgs myvg VG #PV #LV #SN Attr VSize VFree myvg 1 1 0 wz-n <931.00g <930.00g
- 列表:以下 pvs 命令以基数 2 gibibyte 单位显示 /dev/vdb 物理卷的输出: # pvs --units g /dev/vdb PV VG Fmt Attr PSize PFree /dev/vdb myvg lvm2 a-- 931.00g 930.00g
- 列表:以下 pvs 命令以基数 10GB 单位显示 /dev/vdb 物理卷的输出: # pvs --units G /dev/vdb PV VG Fmt Attr PSize PFree /dev/vdb myvg lvm2 a-- 999.65G 998.58G
- 列表:以下 pvs 命令以 512 字节扇区显示输出: # pvs --units s PV VG Fmt Attr PSize PFree /dev/vdb myvg lvm2 a-- 1952440320S 1950343168S
- 列表:您可以为 LVM 显示命令指定自定义单位。下面的例子以 4MB 为单位显示 pvs 命令的输出: # pvs --units 4m PV VG Fmt Attr PSize PFree /dev/vdb myvg lvm2 a-- 238335.00U 238079.00U
- 命令/配置摘录:
# vgs myvg
VG #PV #LV #SN Attr VSize VFree myvg 1 1 0 wz-n <931.00g <930.00g- 表格样本(共 4 行):
- 单元类型 | 描述 | 可用选项 | default
- 基数 2 单位 | 单位以 2 的幂(1024 的倍数)显示。 | b: 字节 s: 扇区, 每个扇区 512 字节。 k: Kibibytes 。 m: Mebibytes 。 g :Gibibytes 。 t: Tebibytes 。 p: Pebibytes 。 e :Exbibytes 。 H :人类可读的,使用的最合适的单位。 r :带舍入指示符的人类可读的,与带舍入前缀 < 或 > 的 h 类似,以指示 LVM 如何将显示的大小舍入到最接近的单位。 | r (当未指定 --units 时)。您可以通过在 /etc/lvm/lvm.conf 文件的全局部分中设置 units 参数来覆盖默认设置。
- 基数 10 单位 | 以 1000 的倍数显示的单位。 | b: 字节 s: 扇区, 每扇区 512 字节。 K: Kilobytes 。 M :Megabytes 。 G :Gigabytes 。 T: Terabytes。 P: Petabytes。 e: Exabytes 。 H :人类可读的,使用最合适的单位。 r :带有舍入指示符的人类可读的,与带舍入前缀 < 或 > 的 H 类似,来指示 LVM 如何将显示的大小舍入到最接近的单位。 | N/A
- 自定义单位 | 数量与 2 或 10 基数单位的组合。例如,若要以 4MB 为单位显示结果,可使用 4m。 | N/A | N/A
7.3. 自定义 LVM 配置文件
- 要点:您可以通过编辑 lvm.conf 文件,根据具体的存储和系统要求自定义 LVM 配置。例如,您可以编辑 lvm.conf 文件来修改过滤设置、配置卷组自动激活、管理精简池或自动扩展快照。
- 要点:流程
- 列表:在您选择的编辑器中打开 lvm.conf 文件。
- 列表:通过取消要修改默认显示值的设置的注释并进行修改来自定义 lvm.conf 文件。 要自定义您在 lvs 输出中看到的字段,请取消 lvs_cols 参数的注释并进行修改: lvs_cols="lv_name,vg_name,lv_attr" 要隐藏 pvs、vgs 和 lvs 命令的空字段,请取消 compact_output=1 设置的注释: compact_output = 1 要将 gigabytes 设置为 pvs、vgs 和 lvs 命令的默认单位,请将 units = "r" 设置替换为 units = "G" : units = "G"
- 列表:要自定义您在 lvs 输出中看到的字段,请取消 lvs_cols 参数的注释并进行修改: lvs_cols="lv_name,vg_name,lv_attr"
- 列表:要隐藏 pvs、vgs 和 lvs 命令的空字段,请取消 compact_output=1 设置的注释: compact_output = 1
- 列表:要将 gigabytes 设置为 pvs、vgs 和 lvs 命令的默认单位,请将 units = "r" 设置替换为 units = "G" : units = "G"
- 列表:确保已取消了 lvm.conf 文件的相应部分的注释。例如,要修改 lvs_cols 参数,必须取消 report 部分的注释: report { ... }
- 命令/配置摘录:
lvs_cols="lv_name,vg_name,lv_attr"
compact_output = 17.4. 定义 LVM 选择标准
- 要点:LVM 选择标准使用 -S 选项根据特定字段值和运算符过滤和处理物理卷、卷组和逻辑卷。
- 要点:选择标准是 <field> <operator> <value> 形式的一组语句,它使用比较运算符来定义特定字段的值。然后,处理或显示与选择条件匹配的对象。对象可以是物理卷(PV)、卷组(VG)或逻辑卷(LV)。语句通过逻辑和分组运算符进行组合。
- 列表:报告命令包括 pvs,vgs,lvs,pvdisplay,vgdisplay,lvdisplay 和 dmsetup info -c。
- 列表:处理命令包括 pvchange,vgchange,lvchange,vgimport,vgexport,vgremove 和 lvremove。 使用 pvs 命令的选择条件的示例 以下 pvs 命令示例只显示名称包含字符串 nvme 的物理卷: # pvs -S name=~nvme PV Fmt Attr PSize PFree /dev/nvme2n1 lvm2 --- 1.00g 1.00g 以下 pvs 命令示例只显示 myvg 卷组中的物理设备: # pvs -S vg_name=myvg PV VG Fmt Attr PSize PFree /dev/vdb1 myvg lvm2 a-- 1020.00m 3…
- 列表:以下 pvs 命令示例只显示名称包含字符串 nvme 的物理卷: # pvs -S name=~nvme PV Fmt Attr PSize PFree /dev/nvme2n1 lvm2 --- 1.00g 1.00g
- 列表:以下 pvs 命令示例只显示 myvg 卷组中的物理设备: # pvs -S vg_name=myvg PV VG Fmt Attr PSize PFree /dev/vdb1 myvg lvm2 a-- 1020.00m 396.00m /dev/vdb2 myvg lvm2 a-- 1020.00m 896.00m
- 列表:以下 lvs 命令示例只显示大小大于 100m 但小于 200m 的逻辑卷: # lvs -S 'size > 100m && size < 200m' LV VG Attr LSize Cpy%Sync rr myvg rwi-a-r--- 120.00m 100.00
- 列表:以下 lvs 命令示例只显示名称包含 lvol 和 0 到 2 之间任何数字的逻辑卷: # lvs -S name=~lvol[02] LV VG Attr LSize lvol0 myvg -wi-a----- 100.00m lvol2 myvg -wi------- 100.00m
- 命令/配置摘录:
# pvs -S name=~nvme
PV Fmt Attr PSize PFree /dev/nvme2n1 lvm2 --- 1.00g 1.00g第 8 章 在共享存储上配置 LVM
- 要点:共享存储可以被多个节点同时访问。您可以使用 LVM 管理共享存储。它通常用于群集和高可用性设置。
- 要点:在系统中显示共享存储的两个常见场景:
- 列表:LVM 设备被附加到主机,并传给客户机虚拟机使用。在这种情况下,设备永远不会被主机使用,只被客户机虚拟机使用。
- 列表:机器连接到存储区域网络(SAN)。例如,使用光纤通道和 SAN 逻辑单元号(LUN)对于多个机器可见:
8.1. 为虚拟机磁盘配置 LVM
- 要点:要防止虚拟机存储暴露,请配置 LVM 设备访问和 LVM 系统 ID。从主机中排除 VM 设备,以便主机 LVM 无法看到或使用它们。将卷组 的系统 ID 设置为与 客户虚拟机匹配,并帮助防止意外主机访问。
- 要点:流程
- 列表:在 lvm.conf 文件中,检查是否 system.devices 文件已启用: use_devicesfile=1
- 列表:从主机的设备文件中排除有问题的设备: $ lvmdevices --deldev <device>
- 列表:可选:您可以进一步保护 LVM 设备: 在主机和虚拟机的 lvm.conf 文件中设置 LVM 系统 ID 功能: system_id_source = "uname" 设置 VG 的系统 ID 以匹配虚拟机 系统 ID。这样可确保只有客户虚拟机能够激活 VG: $ vgchange --systemid <VM_system_id> <VM_vg_name>
- 列表:在主机和虚拟机的 lvm.conf 文件中设置 LVM 系统 ID 功能: system_id_source = "uname"
- 列表:设置 VG 的系统 ID 以匹配虚拟机 系统 ID。这样可确保只有客户虚拟机能够激活 VG: $ vgchange --systemid <VM_system_id> <VM_vg_name>
- 命令/配置摘录:
use_devicesfile=1
$ lvmdevices --deldev <device>8.2. 将 LVM 配置为在一台机器上使用 SAN 磁盘
- 要点:要防止 SAN LUN 被错误的机器使用,请从所有机器上的设备文件中排除 LUN,但要使用它们的机器除外。
- 要点:流程
- 列表:在 lvm.conf 文件中,检查是否 system.devices 文件已启用: use_devicesfile=1
- 列表:从主机的设备文件中排除有问题的设备: $ lvmdevices --deldev <device>
- 列表:在 lvm.conf 文件中设置 LVM 系统 ID 功能: system_id_source = "uname"
- 列表:设置 VG 的系统 ID,以匹配使用此 VG 的机器的 系统 ID : $ vgchange --systemid <system_id> <vg_name>
- 命令/配置摘录:
use_devicesfile=1
$ lvmdevices --deldev <device>8.3. 配置 LVM ,以使用 SAN 磁盘进行故障转移
- 要点:您可以配置在机器间移动的 LUN ,例如用于故障转移目的。您可以通过配置 LVM 设备文件并在所有机器上使用设备文件中包括 LUN 来配置 LVM,并在每台机器中配置 LVM 系统 ID。
- 要点:流程
- 列表:在 lvm.conf 文件中,检查是否 system.devices 文件已启用: use_devicesfile=1
- 列表:在主机的设备文件中包括有问题的设备: $ lvmdevices --adddev <device>
- 列表:在所有机器的 lvm.conf 文件中设置 LVM 系统 ID 功能: system_id_source = "uname"
- 列表:配置和管理高可用性集群
- 命令/配置摘录:
use_devicesfile=1
$ lvmdevices --adddev <device>8.4. 配置 LVM ,来在多台机器间共享 SAN 磁盘
- 要点:使用 lvmlockd 守护进程和锁管理器(如 sanlock ),您可以从多台机器启用对 SAN 磁盘上的共享 VG 的访问。具体命令可能会因使用的锁管理器和操作系统而异。
- 要点:流程
- 列表:在 lvm.conf 文件中,检查是否 system.devices 文件已启用: use_devicesfile=1
- 列表:对于将使用共享 LUN 的每台机器,在机器设备文件中添加 LUN: $ lvmdevices --adddev <device>
- 列表:配置 lvm.conf 文件,以便在所有机器上使用 lvmlockd 守护进程: use_lvmlockd=1
- 列表:在所有机器上启动 lvmlockd 守护进程文件。
- 列表:在所有机器上使用 lvmlockd 启动锁管理器,如 sanlock。
- 列表:使用命令 vgcreate --shared 创建一个新的共享 VG。
- 命令/配置摘录:
use_devicesfile=1
$ lvmdevices --adddev <device>- 注意:警告 在使用 pacemaker 时,必须使用 配置和管理高可用性集群 中显示的 pacemaker 步骤来配置和启动系统。
8.5. 使用 storage RHEL 系统角色创建共享 LVM 设备
- 要点:如果您希望多个系统同时访问同一个存储,则您可以使用 storage RHEL 系统角色创建共享的 LVM 设备。
- 要点:共享LVM设备具有以下显著优势:
- 列表:资源共享
- 列表:管理存储资源方面的灵活性
- 列表:存储管理任务的简化
- 列表:您已准备好控制节点和受管节点。
- 列表:以可在受管主机上运行 playbook 的用户登录到控制节点。
- 列表:用于连接到受管节点的帐户具有这些节点的 sudo 权限。
- 命令/配置摘录:
--- - name: Manage local storage hosts: managed-node-01.example.com become: true tasks: - name: Create shared LVM device ansible.builtin.include_role: name: redhat.rhel_system_roles.storage vars: storage_pools: - name: vg1 disks: /dev/vdb type: lvm shared: true state: present volumes: - name: lv1 size: 4g mount_point: /opt/test1 fs_type: gfs2 storage_safe_mode: false storage_use_partitions: true
$ ansible-playbook --syntax-check ~/playbook.yml第 9 章 配置 RAID 逻辑卷
- 要点:您可以使用逻辑卷管理器(LVM)创建和管理 Redundant Array of Independent Disks (RAID)卷。
- 要点:LVM 支持 RAID 0、1、4、5、6 和 10。LVM RAID 卷有以下特征:
- 列表:LVM 会创建和管理利用多设备 (MD) 内核驱动程序的 RAID 逻辑卷。
- 列表:您可以从阵列中临时分割 RAID1 镜像,并在之后将其合并到阵列中。
- 列表:LVM RAID 卷支持快照。
- 列表:RAID 逻辑卷不是集群感知的。您可以只在一台机器中创建和激活 RAID 逻辑卷,但不能在多台机器中同时激活它们。
- 列表:当您创建 RAID 逻辑卷(LV)时,LVM 会创建一个元数据子卷,它是阵列中的每个数据或奇偶校验子卷的大小的一个区块。例如,创建一个双向 RAID1 阵列会导致两个元数据子卷(lv_rmeta_0 和 lv_rmeta_1)以及两个数据子卷(lv_rimage_0 和 lv_rimage_1)。
- 列表:在 RAID LV 中添加完整性可减少或防止软损坏。
9.1. RAID 级别和线性支持
- 要点:RAID 和线性存储级别提供各种数据保护、性能和容量选项。比较 RAID 级别 0、1、4、5、6、10 和线性阵列,以确定最佳的 Linux 存储配置。
- 要点:以下是 RAID 支持的配置,包括级别 0、1、4、5、6、10 和线性:
9.2. LVM RAID 片段类型
- 要点:LVM 支持 lvcreate- type 参数的各种 RAID 片段类型,包括 RAID1、RAID4、RAID5、RAID6 和 RAID10 配置。
- 要点:下表描述了可能的 RAID 片段类型。
- 表格样本(共 12 行):
- 片段类型 | 描述
- raid1 | RAID1 镜像。当您指定 -m 参数而不指定条带时,这是 lvcreate 命令的 --type 参数的默认值。
- raid4 | RAID4 专用奇偶校验磁盘。
- raid5_la | RAID5 左非对称。 轮转奇偶校验 0 并分配数据。
9.3. 创建 RAID0 的参数
- 要点:您可以使用 lvcreate --type raid0[meta] --stripes _Stripes --stripesize StripeSize VolumeGroup [PhysicalVolumePath] 命令创建 RAID0 条状逻辑卷。
- 要点:下表描述了不同的参数,您可以在创建 RAID0 条状逻辑卷时使用它们。
- 表格样本(共 6 行):
- 参数 | 描述
- --type raid0[_meta] | 指定 raid0 创建一个没有元数据卷的 RAID0 卷。指定 raid0_meta 创建一个具有元数据卷的 RAID0 卷。因为 RAID0 是不方便的,因此它不会存储任何镜像数据块作为 RAID1/10,或者计算并存储任何奇偶校验块,因为 RAID4/5/6。因此,它不需要元数据卷来保持有关镜像或奇偶校验块重新同步进度的状态。在从 RAID0 转换到 RAID4/5/6/10 时,元数据卷是强制的。指定 raid0_meta 预先分配这些元数据卷,以防止相应的分配失败。
- --stripes Stripes | 指定在其中分割逻辑卷的设备数。
- --stripesize StripeSize | 以 KB 为单位指定每个条的大小。这是在移动到下一个设备前写入一个设备的数据量。
9.4. 创建 RAID 逻辑卷
- 要点:在创建 RAID 逻辑卷时,使用 -m 参数指定 RAID1 副本。use -i 为 RAID 0、4、5、6 和 10 卷设置条带。use -I 指定条带大小。
- 要点:流程
- 列表:创建一个双向 RAID。以下命令在卷组 my_vg 中创建一个名为 my_lv 的双向 RAID1 阵列,大小为 1G : # lvcreate --type raid1 -m 1 -L 1G -n my_lv my_vg Logical volume "my_lv" created.
- 列表:使用条带创建 RAID5 阵列。以下命令在卷组 my_vg 中创建具有三个条带的 RAID5 阵列和一个隐式奇偶校验驱动器,名为 my_lv,大小为 1G。请注意,您可以指定与 LVM 条带卷类似的条带数。自动添加正确奇偶校验驱动器数。 # lvcreate --type raid5 -i 3 -L 1G -n my_lv my_vg
- 列表:使用条带创建 RAID6 阵列。以下命令在卷组 my_vg 中创建具有三个 3 个条带的 RAID6 阵列,以及名为 my_lv 的两个隐式奇偶校验驱动器,大小为 1G : # lvcreate --type raid6 -i 3 -L 1G -n my_lv my_vg
- 列表:显示 LVM 设备 my_vg/my_lv,它是一个双向 RAID1 阵列: # lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 6.25 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sde1(0) [my_lv_rimage_1] /dev/sdf1(1) [my_lv_rmeta_0] /dev/sde1(256) [my_lv_rmeta_1] /dev/sdf1(0)
- 命令/配置摘录:
# lvcreate --type raid1 -m 1 -L 1G -n my_lv my_vg
Logical volume "my_lv" created.9.5. 使用 storage RHEL 系统角色在 RAID 上配置 LVM 卷组
- 要点:您可以使用 storage RHEL 系统角色在 RAID 阵列上配置 LVM 卷组。
- 要点:先决条件
- 列表:您已准备好控制节点和受管节点。
- 列表:以可在受管主机上运行 playbook 的用户登录到控制节点。
- 列表:用于连接到受管节点的帐户具有这些节点的 sudo 权限。
- 列表:创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml : --- - name: Manage local storage hosts: managed-node-01.example.com tasks: - name: Configure LVM pool with RAID ansible.builtin.include_role: name: redhat.rhel_system_roles.storage vars: storage_safe_mode: false storage_pools: - name: my_pool type: lvm disks: [sdh,…
- 列表:验证 playbook 语法: $ ansible-playbook --syntax-check ~/playbook.yml 请注意,这个命令只验证语法,不能防止错误的、但有效的配置。
- 列表:运行 playbook: $ ansible-playbook ~/playbook.yml
- 命令/配置摘录:
--- - name: Manage local storage hosts: managed-node-01.example.com tasks: - name: Configure LVM pool with RAID ansible.builtin.include_role: name: redhat.rhel_system_roles.storage vars: storage_safe_mode: false storage_pools: - name: my_pool type: lvm disks: [sdh, sdi] raid_level: raid1 volumes: - name: my_volume size: "1 GiB" mount_point: "/mnt/app/shared" fs_type: xfs state: present
$ ansible-playbook --syntax-check ~/playbook.yml- 注意:注意 在 storage_pool 级别设置 raid_level 会首先创建一个 MD RAID 阵列,然后在其上构建 LVM 卷组。
9.6. 创建 RAID0 条带化逻辑卷
- 要点:RAID0 逻辑卷以条的大小为单位,将逻辑卷数据分散到多个数据子卷中。下面的步骤创建了一个名为 mylv 的 LVM RAID0 逻辑卷,该逻辑卷在磁盘间条状分布数据。
- 要点:先决条件
- 列表:您已创建了三个或者多个物理卷。有关创建物理卷的详情,请参考 创建 LVM 物理卷。
- 列表:您已创建了卷组。如需更多信息,请参阅创建 LVM 卷组。
- 列表:从现有卷组中创建 RAID0 逻辑卷。以下命令从卷组 myvg 中创建 RAID0 卷 mylv,大小为 2G,有三个条带,条带大小为 4kB : # lvcreate --type raid0 -L 2G --stripes 3 --stripesize 4 -n mylv my_vg Rounding size 2.00 GiB (512 extents) up to stripe boundary size 2.00 GiB(513 extents). Logical volume "mylv" created.
- 列表:在 RAID0 逻辑卷中创建文件系统。以下命令在逻辑卷中创建 ext4 文件系统: # mkfs.ext4 /dev/my_vg/mylv
- 列表:挂载逻辑卷并报告文件系统磁盘空间使用情况: # mount /dev/my_vg/mylv /mnt # df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/my_vg-mylv 2002684 6168 1875072 1% /mnt
- 列表:查看创建的 RAID0 剥离的逻辑卷: # lvs -a -o +devices,segtype my_vg LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices Type mylv my_vg rwi-a-r--- 2.00g mylv_rimage_0(0),mylv_rimage_1(0),mylv_rimage_2(0) raid0 [mylv_rimage_0] my_vg iwi-aor--- 684.00m /dev/sdf1(0) linear [mylv_rimage_1] my_vg iwi-aor--- 6…
- 命令/配置摘录:
# lvcreate --type raid0 -L 2G --stripes 3 --stripesize 4 -n mylv my_vg
Rounding size 2.00 GiB (512 extents) up to stripe boundary size 2.00 GiB(513 extents). Logical volume "mylv" created.9.7. 使用 storage RHEL 系统角色为 RAID LVM 卷配置条带大小
- 要点:您可以使用 storage RHEL 系统角色为 RAID LVM 卷配置条带大小。
- 要点:先决条件
- 列表:您已准备好控制节点和受管节点。
- 列表:以可在受管主机上运行 playbook 的用户登录到控制节点。
- 列表:用于连接到受管节点的帐户具有这些节点的 sudo 权限。
- 列表:创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml : --- - name: Manage local storage hosts: managed-node-01.example.com tasks: - name: Configure stripe size for RAID LVM volumes ansible.builtin.include_role: name: redhat.rhel_system_roles.storage vars: storage_safe_mode: false storage_pools: - name: my_pool type: lvm…
- 列表:验证 playbook 语法: $ ansible-playbook --syntax-check ~/playbook.yml 请注意,这个命令只验证语法,不能防止错误的、但有效的配置。
- 列表:运行 playbook: $ ansible-playbook ~/playbook.yml
- 命令/配置摘录:
--- - name: Manage local storage hosts: managed-node-01.example.com tasks: - name: Configure stripe size for RAID LVM volumes ansible.builtin.include_role: name: redhat.rhel_system_roles.storage vars: storage_safe_mode: false storage_pools: - name: my_pool type: lvm disks: [sdh, sdi] volumes: - name: my_volume size: "1 GiB" mount_point: "/mnt/app/shared" fs_type: xfs raid_level: raid0 raid_stripe_size: "256 KiB" state: present
$ ansible-playbook --syntax-check ~/playbook.yml- 注意:注意 在 volumes 级别设置 raid_level 会创建 LVM RAID 逻辑卷。
9.8. 软数据崩溃
- 要点:数据存储中的软崩溃意味着从存储设备中检索的数据与写入该设备的数据不同。错误的数据可以在存储设备中无限期存在。在检索并尝试使用此数据之前,您可能不会发现此损坏数据。
- 要点:根据配置类型,独立磁盘的冗余阵列(RAID)逻辑卷(LV)可防止设备失败时数据丢失。如果由 RAID 阵列组成的设备失败,可以从该 RAID LV 中的其他设备中恢复数据。但是 RAID 配置不能保证数据本身的完整性。软崩溃、静默崩溃、软错误和静默错误描述已损坏的数据。即使系统设计和软件继续按预期工作,也会发生这种情况。
- 列表:完整性元数据需要额外的存储空间。对于每个 RAID 镜像,每个 500MB 数据都需要 4MB 的额外存储空间,因为校验和被添加到数据中。
- 列表:添加 DM 完整性会因为访问数时延迟而影响到性能,有些 RAID 的配置会比其他 RAID 配置受到的影响更大。RAID1 配置通常比 RAID5 或其变体提供更好的性能。
- 列表:RAID 完整性块的大小也会影响性能。配置更大的 RAID 完整块可提供更好的性能。但是,一个较小的 RAID 完整性块可以提供更好的兼容性。
- 列表:完整性有两种模式:位图(bitmap)或日志(journal)。bitmap 完整性模式通常比journal 模式提供更好的性能。
- 注意:提示 如果您遇到性能问题,请使用带有完整性的 RAID1,或者测试满足您的要求的特定 RAID 配置。
9.9. 创建带有 DM 完整性的 RAID 逻辑卷
- 要点:在 RAID LV 中添加 DM 完整性有助于防止数据丢失。等待完整性同步和 RAID 元数据初始化完成。否则,后台初始化可能会降低 LV 性能。
- 要点:设备映射程序(DM)完整性与 RAID 级别 1、4、5、6 和 10 一起使用,用于缓解或防止软崩溃导致数据丢失。RAID 层可确保数据没有破坏的副本可以修复软崩溃错误。
- 列表:创建具有 DM 完整性的 RAID LV。以下示例在 my_vg 卷组中创建一个名为 test-lv 的 RAID LV,可用大小为 256M 和 RAID 级别 1: # lvcreate --type raid1 --raidintegrity y -L 256M -n test-lv my_vg Logical volume "test-lv" created. 注意 要在现有 RAID LV 中添加 DM 完整性,请使用以下命令: # lvconvert --raidintegrity y my_vg/test-lv 在 RAID LV 中添加完整性限制了您可以在那个 RAID LV 上执行的一些操作。
- 列表:可选:在执行某些操作前删除完整性。 # lvconvert --raidintegrity n my_vg/test-lv Logical volume my_vg/test-lv has removed integrity.
- 列表:查看有关添加的 DM 完整性的信息: 查看在 my_vg 卷组中创建的 test-lv RAID LV 的信息: # lvs -a my_vg LV VG Attr LSize Origin Cpy%Sync test-lv my_vg rwi-a-r--- 256.00m 2.10 [test-lv_rimage_0] my_vg gwi-aor--- 256.00m [test-lv_rimage_0_iorig] 93.75 [test-lv_rimage_0_imeta] my_vg ewi-ao---- 8.00m [test-lv_rimage_0_iorig] my_vg -wi-ao---- 256.00…
- 列表:查看在 my_vg 卷组中创建的 test-lv RAID LV 的信息: # lvs -a my_vg LV VG Attr LSize Origin Cpy%Sync test-lv my_vg rwi-a-r--- 256.00m 2.10 [test-lv_rimage_0] my_vg gwi-aor--- 256.00m [test-lv_rimage_0_iorig] 93.75 [test-lv_rimage_0_imeta] my_vg ewi-ao---- 8.00m [test-lv_rimage_0_iorig] my_vg -wi-ao---- 256.00m [test-lv_rimage_…
- 列表:显示每个 RAID LV 的类型: # lvs -a my_vg -o+segtype LV VG Attr LSize Origin Cpy%Sync Type test-lv my_vg rwi-a-r--- 256.00m 87.96 raid1 [test-lv_rimage_0] my_vg gwi-aor--- 256.00m [test-lv_rimage_0_iorig] 100.00 integrity [test-lv_rimage_0_imeta] my_vg ewi-ao---- 8.00m linear [test-lv_rimage_0_iorig] my_vg -wi-ao---- 256.…
- 列表:有一个增量的计数器,它计算在每个 RAID 镜像上检测到的不匹配数。查看 my_vg/test-lv 下的 rimage_0 检测到的数据不匹配: # lvs -o+integritymismatches my_vg/test-lv_rimage_0 LV VG Attr LSize Origin Cpy%Sync IntegMismatches [test-lv_rimage_0] my_vg gwi-aor--- 256.00m [test-lv_rimage_0_iorig] 100.00 0 在这个示例中,完整性还没有检测到任何不匹配的数据,因此 IntegMismatches 计数器会显示 0 (0)。
- 命令/配置摘录:
# lvcreate --type raid1 --raidintegrity y -L 256M -n test-lv my_vg
Logical volume "test-lv" created.- 注意:注意 要在现有 RAID LV 中添加 DM 完整性,请使用以下命令: # lvconvert --raidintegrity y my_vg/test-lv
9.10. 将 RAID 逻辑卷转换为另一个 RAID 级别
- 要点:LVM 支持 RAID 接管,这意味着将 RAID 逻辑卷从一个 RAID 级别转换为另一个 RAID 级别,例如从 RAID 5 转换到 RAID 6。您可以更改 RAID 级别,以增加或减少设备故障的恢复能力。
- 要点:流程
- 列表:创建 RAID 逻辑卷: # lvcreate --type raid5 -i 3 -L 500M -n my_lv my_vg Using default stripesize 64.00 KiB. Rounding size 500.00 MiB (125 extents) up to stripe boundary size 504.00 MiB (126 extents). Logical volume "my_lv" created.
- 列表:查看 RAID 逻辑卷: # lvs -a -o +devices,segtype LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices Type my_lv my_vg rwi-a-r--- 504.00m 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0),my_lv_rimage_3(0) raid5 [my_lv_rimage_0] my_vg iwi-aor--- 168.00m /dev/sda(1) linear [my_lv_rimage_1]…
- 列表:将 RAID 逻辑卷转换为另一个 RAID 级别: # lvconvert --type raid6 my_vg/my_lv Using default stripesize 64.00 KiB. Replaced LV type raid6 (same as raid6_zr) with possible type raid6_ls_6. Repeat this command to convert to raid6 after an interim conversion has finished. Are you sure you want to convert raid5 LV my_vg/my_lv to raid6_ls…
- 列表:可选:如果这个命令提示重复转换,请运行: # lvconvert --type raid6 my_vg/my_lv
- 列表:查看具有转换的 RAID 级别的 RAID 逻辑卷: # lvs -a -o +devices,segtype LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices Type my_lv my_vg rwi-a-r--- 504.00m 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0),my_lv_rimage_3(0),my_lv_rimage_4(0) raid6 [my_lv_rimage_0] my_vg iwi-aor--- 168.00m /dev…
- 命令/配置摘录:
# lvcreate --type raid5 -i 3 -L 500M -n my_lv my_vg
Using default stripesize 64.00 KiB. Rounding size 500.00 MiB (125 extents) up to stripe boundary size 504.00 MiB (126 extents). Logical volume "my_lv" created.9.11. 将线性设备转换为 RAID 逻辑卷
- 要点:您可以将现有的线性逻辑卷转换为 RAID 逻辑卷。要执行此操作,请使用 lvconvert 命令的 --type 参数。
- 要点:RAID 逻辑卷由元数据和数据子卷对组成。当您将线性设备转换为 RAID1 阵列时,它会创建一个新的元数据子卷,并将其与线性卷所在的同一物理卷中的原始逻辑卷相关联。其他镜像添加到 metadata/data 子卷对中。如果无法将与原始逻辑卷配对的元数据镜像放在同一个物理卷上,则 lvconvert 将失败。
- 列表:查看需要转换的逻辑卷设备: # lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv /dev/sde1(0)
- 列表:将线性逻辑卷转换为 RAID 设备。以下命令将卷组 __my_vg 中的线性逻辑卷 my_lv 转换为双向 RAID1 阵列: # lvconvert --type raid1 -m 1 my_vg/my_lv Are you sure you want to convert linear LV my_vg/my_lv to raid1 with 2 images enhancing resilience? [y/n]: y Logical volume my_vg/my_lv successfully converted.
- 列表:确定逻辑卷是否转换为 RAID 设备: # lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 6.25 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sde1(0) [my_lv_rimage_1] /dev/sdf1(1) [my_lv_rmeta_0] /dev/sde1(256) [my_lv_rmeta_1] /dev/sdf1(0)
- 命令/配置摘录:
# lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv /dev/sde1(0)9.12. 将 LVM RAID1 逻辑卷转换为 LVM 线性逻辑卷
- 要点:使用 lvconvert -m0 将现有的 RAID1 LVM 逻辑卷转换为线性逻辑卷。这会删除 RAID 数据和元数据子卷。顶级 RAID1 镜像保留并成为线性逻辑卷。
- 要点:流程
- 列表:显示现有 LVM RAID1 逻辑卷: # lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] /dev/sdf1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] /dev/sdf1(0)
- 列表:将现有的 RAID1 LVM 逻辑卷转换为 LVM 线性逻辑卷。以下命令将 LVM RAID1 逻辑卷 my_vg/my_lv 转换为 LVM 线性设备: # lvconvert -m0 my_vg/my_lv Are you sure you want to convert raid1 LV my_vg/my_lv to type linear losing all resilience? [y/n]: y Logical volume my_vg/my_lv successfully converted. 当您将 LVM RAID1 逻辑卷转换成 LVM 线性卷,,您可以指定要删除的物理卷。在以下示例中,lvconvert…
- 列表:验证 RAID1 逻辑卷是否转换为 LVM 线性设备: # lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv /dev/sdf1(1)
- 命令/配置摘录:
# lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] /dev/sdf1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] /dev/sdf1(0)9.13. 将镜像 LVM 设备转换为 RAID1 逻辑卷
- 要点:使用 lvconvert --type raid1 将镜像 LVM 设备转换为 RAID1。转换会将 mimage 子卷重命名为 rimage 子卷。它移除镜像日志并创建对应的 rmeta 元数据子卷。
- 要点:流程
- 列表:查看镜像逻辑卷 my_vg/my_lv 的布局: # lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 15.20 my_lv_mimage_0(0),my_lv_mimage_1(0) [my_lv_mimage_0] /dev/sde1(0) [my_lv_mimage_1] /dev/sdf1(0) [my_lv_mlog] /dev/sdd1(0)
- 列表:将镜像逻辑卷 my_vg/my_lv 转换为 RAID1 逻辑卷: # lvconvert --type raid1 my_vg/my_lv Are you sure you want to convert mirror LV my_vg/my_lv to raid1 type? [y/n]: y Logical volume my_vg/my_lv successfully converted.
- 列表:验证镜像逻辑卷是否转换为 RAID1 逻辑卷: # lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sde1(0) [my_lv_rimage_1] /dev/sdf1(0) [my_lv_rmeta_0] /dev/sde1(125) [my_lv_rmeta_1] /dev/sdf1(125)
- 命令/配置摘录:
# lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv 15.20 my_lv_mimage_0(0),my_lv_mimage_1(0) [my_lv_mimage_0] /dev/sde1(0) [my_lv_mimage_1] /dev/sdf1(0) [my_lv_mlog] /dev/sdd1(0)9.14. 更改现有 RAID1 设备中的镜像数
- 要点:您可以更改现有 RAID1 阵列中的镜像数量,类似于更改 LVM 镜像实现中的镜像数量。
- 要点:当您使用 lvconvert 命令将镜像添加到 RAID1 逻辑卷时,您可以执行以下操作:
- 列表:指定生成的设备的镜像总数,
- 列表:要添加到该设备的镜像数量,以及
- 列表:可以指定新元数据/数据镜像对所在的物理卷。
- 列表:显示 LVM 设备 my_vg/my_lv,它是一个双向 RAID1 阵列: # lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 6.25 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sde1(0) [my_lv_rimage_1] /dev/sdf1(1) [my_lv_rmeta_0] /dev/sde1(256) [my_lv_rmeta_1] /dev/sdf1(0) 元数据子卷(名为 rmeta)始终与它们的数据子卷 rimage 存在于同一物理设备上。元数…
- 列表:将双向 RAID1 逻辑卷 my_vg/my_lv 转换为三向 RAID1 逻辑卷: # lvconvert -m 2 my_vg/my_lv Are you sure you want to convert raid1 LV my_vg/my_lv to 3 images enhancing resilience? [y/n]: y Logical volume my_vg/my_lv successfully converted. 以下是更改现有 RAID1 设备中的镜像数的几个示例: 您还可以在 RAID 中添加镜像时要使用的物理卷。以下命令通过指定用于阵列的物理卷 /dev/sdd1 ,将双向 RAID1 逻辑卷 my_v…
- 列表:您还可以在 RAID 中添加镜像时要使用的物理卷。以下命令通过指定用于阵列的物理卷 /dev/sdd1 ,将双向 RAID1 逻辑卷 my_vg/my_lv 转换为三向 RAID1 逻辑卷: # lvconvert -m 2 my_vg/my_lv /dev/sdd1
- 命令/配置摘录:
# lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv 6.25 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sde1(0) [my_lv_rimage_1] /dev/sdf1(1) [my_lv_rmeta_0] /dev/sde1(256) [my_lv_rmeta_1] /dev/sdf1(0)9.15. 将 RAID 镜像分离为一个独立的逻辑卷
- 要点:您可以从 RAID 逻辑卷分割镜像,以创建新逻辑卷。当删除 RAID 镜像或数据子卷时,高数字的镜像会变为 down。RAID 镜像索引持续保留,但在分割前必须同步 RAID1 阵列。
- 要点:流程
- 列表:显示 LVM 设备 my_vg/my_lv,它是一个双向 RAID1 阵列: # lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 12.00 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] /dev/sdf1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] /dev/sdf1(0)
- 列表:将 RAID 镜像分成一个单独的逻辑卷: 以下示例将一个双向 RAID1 逻辑卷 my_lv 分成两个线性逻辑卷 my_lv 和 new: # lvconvert --splitmirror 1 -n new my_vg/my_lv Are you sure you want to split raid1 LV my_vg/my_lv losing all resilience? [y/n]: y 以下示例将一个三向 RAID1 逻辑卷 my_lv 分成一个双向 RAID1 逻辑卷 my_lv 以及一个线性逻辑卷 new : # lvconvert --splitmirror 1 -n new my_vg/my_lv
- 列表:以下示例将一个双向 RAID1 逻辑卷 my_lv 分成两个线性逻辑卷 my_lv 和 new: # lvconvert --splitmirror 1 -n new my_vg/my_lv Are you sure you want to split raid1 LV my_vg/my_lv losing all resilience? [y/n]: y
- 列表:以下示例将一个三向 RAID1 逻辑卷 my_lv 分成一个双向 RAID1 逻辑卷 my_lv 以及一个线性逻辑卷 new : # lvconvert --splitmirror 1 -n new my_vg/my_lv
- 列表:在分离 RAID 逻辑卷的镜像后查看逻辑卷: # lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv /dev/sde1(1) new /dev/sdf1(1)
- 命令/配置摘录:
# lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv 12.00 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] /dev/sdf1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] /dev/sdf1(0)9.16. 分割和合并 RAID 镜像
- 要点:使用 lvconvert --splitmirrors --trackchanges 临时分割 RAID1 镜像以供只读使用。跟踪镜像分离期间的更改。之后,合并镜像并只重新同步更改的阵列区域。
- 要点:当您使用 --trackchanges 参数分离 RAID 镜像时,您可以指定要分离哪个镜像,但您不能更改要分离的卷的名称。另外,得到的卷有以下限制:
- 列表:创建的新卷为只读。
- 列表:不能调整新卷的大小。
- 列表:不能重命名剩余的数组。
- 列表:不能调整剩余的数组大小。
- 列表:您可以独立激活新卷和剩余的阵列。
- 列表:创建 RAID 逻辑卷: # lvcreate --type raid1 -m 2 -L 1G -n my_lv my_vg Logical volume "my_lv" created
- 命令/配置摘录:
# lvcreate --type raid1 -m 2 -L 1G -n my_lv my_vg
Logical volume "my_lv" created9.17. 将 RAID 失败策略设置为 allocate
- 要点:您可以在 /etc/lvm/lvm.conf 文件中将 raid_fault_policy 字段设置为 allocate 参数。使用这个首选项,系统会尝试使用卷组中的备用设备替换失败的设备。如果没有备用设备,系统日志会包含此信息。
- 要点:流程
- 列表:查看 RAID 逻辑卷: # lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sdb1(1) [my_lv_rimage_1] /dev/sdc1(1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sdb1(0) [my_lv_rmeta_1] /dev/sdc1(0) [my_lv_rmeta_2] /dev/s…
- 列表:如果 /dev/sdb 设备失败,请查看 RAID 逻辑卷: # lvs --all --options name,copy_percent,devices my_vg /dev/sdb: open failed: No such device or address Couldn't find device with uuid A4kRl2-vIzA-uyCb-cci7-bOod-H5tX-IzH4Ee. WARNING: Couldn't find all devices for LV my_vg/my_lv_rimage_1 while checking used and assumed devices. WARNIN…
- 列表:在 lvm.conf 文件中,将 raid_fault_policy 字段设置为 allocate : # vi /etc/lvm/lvm.conf raid_fault_policy = "allocate" 注意 如果将 raid_fault_policy 设置为 allocate,但没有备用设备,则分配会失败,逻辑卷保留原样。如果分配失败,您可以使用 lvconvert --repair 命令修复和替换失败的设备。
- 列表:验证失败的设备现在是否被卷组中的新设备替换了: # lvs -a -o name,copy_percent,devices my_vg Couldn't find device with uuid 3lugiV-3eSP-AFAR-sdrP-H20O-wM2M-qdMANy. LV Copy% Devices lv 100.00 lv_rimage_0(0),lv_rimage_1(0),lv_rimage_2(0) [lv_rimage_0] /dev/sdh1(1) [lv_rimage_1] /dev/sdc1(1) [lv_rimage_2] /dev/sdd1(1) [lv_rmeta_0] /dev/sd…
- 列表:在逻辑卷中替换失败的 RAID 设备
- 命令/配置摘录:
# lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sdb1(1) [my_lv_rimage_1] /dev/sdc1(1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sdb1(0) [my_lv_rmeta_1] /dev/sdc1(0) [my_lv_rmeta_2] /dev/sdd1(0)- 注意:注意 如果将 raid_fault_policy 设置为 allocate,但没有备用设备,则分配会失败,逻辑卷保留原样。如果分配失败,您可以使用 lvconvert --repair 命令修复和替换失败的设备。
- 注意:注意 即使失败的设备现在被替换了,但显示仍然表示 LVM 没有找到失败的设备,因为该设备还没有从卷组中删除。您可以通过执行 vgreduce --removemissing my_vg 命令从卷组中删除失败的设备。
9.18. 将 RAID 失败策略设置为 warn
- 要点:在 lvm.conf 中将 raid_fault_policy 设置为 warn 来记录失败的设备。使用这些警告来确定纠正操作。raid_fault_policy 的默认值为 warn。
- 要点:流程
- 列表:查看 RAID 逻辑卷: # lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sdb1(1) [my_lv_rimage_1] /dev/sdc1(1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sdb1(0) [my_lv_rmeta_1] /dev/sdc1(0) [my_lv_rmeta_2] /dev/s…
- 列表:在 lvm.conf 文件中将 raid_fault_policy 字段设置为 warn : # vi /etc/lvm/lvm.conf # This configuration option has an automatic default value. raid_fault_policy = "warn"
- 列表:如果 /dev/sdb 设备失败,请查看系统日志以显示错误消息: # grep lvm /var/log/messages 或者,您也可以打开 lvm.conf 文件来显示错误消息。 如果 /dev/sdb 设备失败,系统日志会显示错误消息。在这种情况下,LVM 将不会自动尝试通过替换其中一个镜像修复 RAID 设备。如果设备失败,您可以使用 lvconvert 命令的 --repair 参数替换该设备。
- 列表:在逻辑卷中替换失败的 RAID 设备
- 命令/配置摘录:
# lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sdb1(1) [my_lv_rimage_1] /dev/sdc1(1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sdb1(0) [my_lv_rmeta_1] /dev/sdc1(0) [my_lv_rmeta_2] /dev/sdd1(0)9.19. 替换正常工作的 RAID 设备
- 要点:您可以使用 lvconvert 命令的 --replace 参数替换逻辑卷中正常工作的 RAID 设备。
- 要点:先决条件
- 列表:RAID 设备没有失败。 警告 如果 RAID 设备失败,以下命令无法工作。
- 列表:创建 RAID1 阵列: # lvcreate --type raid1 -m 2 -L 1G -n my_lv my_vg Logical volume "my_lv" created
- 列表:检查创建的 RAID1 阵列: # lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sdb1(1) [my_lv_rimage_1] /dev/sdb2(1) [my_lv_rimage_2] /dev/sdc1(1) [my_lv_rmeta_0] /dev/sdb1(0) [my_lv_rmeta_1] /dev/sdb2(0) [my_lv_rmeta_2] /de…
- 列表:根据您的要求,使用以下任一方法替换 RAID 设备: 通过指定要替换的物理卷来替换 RAID1 设备: # lvconvert --replace /dev/sdb2 my_vg/my_lv 通过指定要用于替换的物理卷来替换 RAID1 设备: # lvconvert --replace /dev/sdb1 my_vg/my_lv /dev/sdd1 通过指定多个 replace 参数来一次替换多个 RAID 设备: # lvconvert --replace /dev/sdb1 --replace /dev/sdc1 my_vg/my_lv
- 列表:通过指定要替换的物理卷来替换 RAID1 设备: # lvconvert --replace /dev/sdb2 my_vg/my_lv
- 列表:通过指定要用于替换的物理卷来替换 RAID1 设备: # lvconvert --replace /dev/sdb1 my_vg/my_lv /dev/sdd1
- 命令/配置摘录:
# lvcreate --type raid1 -m 2 -L 1G -n my_lv my_vg
Logical volume "my_lv" created- 注意:警告 如果 RAID 设备失败,以下命令无法工作。
9.20. 在逻辑卷中替换失败的 RAID 设备
- 要点:RAID 与传统的 LVM 镜像不同,因为 RAID 阵列在设备失败后继续运行。删除设备可减少 RAID 级别,如 RAID6 到 RAID5。使用 lvconvert --repair 替换 RAID 逻辑卷中失败的物理卷。
- 要点:先决条件
- 列表:卷组包含一个物理卷,它有足够的可用容量替换失败的设备。 如果卷组中没有有足够可用扩展的物理卷,请使用 vgextend 程序添加一个新的、足够大的物理卷。
- 列表:查看 RAID 逻辑卷: # lvs --all --options name,copy_percent,devices my_vg LV Cpy%Sync Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] /dev/sdc1(1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] /dev/sdc1(0) [my_lv_rm…
- 列表:在 /dev/sdc 设备失败后查看 RAID 逻辑卷: # lvs --all --options name,copy_percent,devices my_vg /dev/sdc: open failed: No such device or address Couldn't find device with uuid A4kRl2-vIzA-uyCb-cci7-bOod-H5tX-IzH4Ee. WARNING: Couldn't find all devices for LV my_vg/my_lv_rimage_1 while checking used and assumed devices. WARNING:…
- 列表:替换失败的设备: # lvconvert --repair my_vg/my_lv /dev/sdc: open failed: No such device or address Couldn't find device with uuid A4kRl2-vIzA-uyCb-cci7-bOod-H5tX-IzH4Ee. WARNING: Couldn't find all devices for LV my_vg/my_lv_rimage_1 while checking used and assumed devices. WARNING: Couldn't find all devices for LV my_vg/m…
- 列表:可选:手动指定替换失败设备的物理卷: # lvconvert --repair my_vg/my_lv replacement_pv
- 列表:使用替换检查逻辑卷: # lvs --all --options name,copy_percent,devices my_vg /dev/sdc: open failed: No such device or address /dev/sdc1: open failed: No such device or address Couldn't find device with uuid A4kRl2-vIzA-uyCb-cci7-bOod-H5tX-IzH4Ee. LV Cpy%Sync Devices my_lv 43.79 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimag…
- 命令/配置摘录:
# lvs --all --options name,copy_percent,devices my_vg
LV Cpy%Sync Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] /dev/sdc1(1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] /dev/sdc1(0) [my_lv_rmeta_2] /dev/sdd1(0)9.21. 检查 RAID 逻辑卷中数据的一致性
- 要点:LVM 提供对 RAID 逻辑卷的清理支持。RAID 清理是读取阵列中的所有数据和奇偶校验块的过程,并检查它们是否是分配的。lvchange --syncaction repair 命令对阵列启动后台同步操作。
- 要点:流程
- 列表:可选:通过设置以下选项之一来控制 RAID 逻辑卷初始化的速率: --maxrecoveryrate Rate[bBsSkKmMgG] 为 RAID 逻辑卷设置最大恢复率,使其不会驱逐正常的 I/O 操作。 --minrecoveryrate Rate[bBsSkKmMgG] 设置 RAID 逻辑卷的最小恢复率,以确保 sync 操作的 I/O 达到最小吞吐量,即使存在大量标准 I/O 时 # lvchange --maxrecoveryrate 4K my_vg/my_lv Logical volume my_vg/my_lv_changed 使用恢复率值替换 4K,它是阵列中每个设备的每秒的量。如果没有后缀,选项会假定为 ki…
- 列表:--maxrecoveryrate Rate[bBsSkKmMgG] 为 RAID 逻辑卷设置最大恢复率,使其不会驱逐正常的 I/O 操作。
- 列表:--minrecoveryrate Rate[bBsSkKmMgG] 设置 RAID 逻辑卷的最小恢复率,以确保 sync 操作的 I/O 达到最小吞吐量,即使存在大量标准 I/O 时 # lvchange --maxrecoveryrate 4K my_vg/my_lv Logical volume my_vg/my_lv_changed 使用恢复率值替换 4K,它是阵列中每个设备的每秒的量。如果没有后缀,选项会假定为 kiB/每秒/每个设备。 # lvchange --syncaction repair my_vg/my_lv_ 当您执行 RAID 清理操作时,sync 操作所需的后台 I/O 可能会排挤 LVM 设备的其它 …
- 列表:显示阵列中未修复的差异的数量,没有修复它们: # lvchange --syncaction check my_vg/my_lv 此命令对阵列启动后台同步操作。
- 列表:可选:查看 var/log/syslog 文件中的内核消息。
- 列表:修正阵列中的差异: # lvchange --syncaction repair my_vg/my_lv 这个命令修复或者替换 RAID 逻辑卷中失败的设备。您可以在执行此命令后,在 var/log/syslog 文件查看内核消息。
- 命令/配置摘录:
# lvchange --maxrecoveryrate 4K my_vg/my_lv
Logical volume my_vg/my_lv_changed- 注意:注意 您还可以在创建 RAID 设备时使用这些最大和最小 I/O 速率。例如,lvcreate --type raid10 -i 2 -m 1 -L 10G --maxrecoveryrate 128 -n my_lv my_vg 创建一个双向 RAID10 阵列 my_lv,它在卷组 my_vg 中,有大小为 10G,最大恢复率为 128 kiB/sec/device 的 3 个条带。
9.22. RAID1 逻辑卷上的 I/O 操作
- 要点:您可以使用 lvchange 命令的 --writemostly 和 --writebehind 参数控制 RAID1 逻辑卷中设备的 I/O 操作。
- 要点:以下是使用这些参数的格式:
9.23. 重塑 RAID 卷
- 要点:RAID 重塑意味着在不更改 RAID 级别的情况下更改 RAID 逻辑卷的属性。您可以更改的一些属性包括 RAID 布局、条带大小和条带数目。
- 要点:流程
- 列表:创建 RAID 逻辑卷: # lvcreate --type raid5 -i 2 -L 500M -n my_lv my_vg Using default stripesize 64.00 KiB. Rounding size 500.00 MiB (125 extents) up to stripe boundary size 504.00 MiB (126 extents). Logical volume "my_lv" created.
- 列表:查看 RAID 逻辑卷: # lvs -a -o +devices LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices my_lv my_vg rwi-a-r--- 504.00m 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] my_vg iwi-aor--- 252.00m /dev/sda(1) [my_lv_rimage_1] my_vg iwi-aor--- 252.00m /dev/sdb(1) [my_lv_rim…
- 列表:可选:查看 RAID 逻辑卷的 stripes 镜像和 stripesize : # lvs -o stripes my_vg/my_lv #Str 3 # lvs -o stripesize my_vg/my_lv Stripe 64.00k
- 列表:根据您的要求,使用以下方法修改 RAID 逻辑卷的属性: 修改 RAID 逻辑卷的 stripes 镜像: # lvconvert --stripes 3 my_vg/my_lv Using default stripesize 64.00 KiB. WARNING: Adding stripes to active logical volume my_vg/my_lv will grow it from 126 to 189 extents! Run "lvresize -l126 my_vg/my_lv" to shrink it or use the additional capacity. Are you sure you…
- 列表:修改 RAID 逻辑卷的 stripes 镜像: # lvconvert --stripes 3 my_vg/my_lv Using default stripesize 64.00 KiB. WARNING: Adding stripes to active logical volume my_vg/my_lv will grow it from 126 to 189 extents! Run "lvresize -l126 my_vg/my_lv" to shrink it or use the additional capacity. Are you sure you want to add 1 images to raid…
- 列表:修改 RAID 逻辑卷的 stripesize : # lvconvert --stripesize 128k my_vg/my_lv Converting stripesize 64.00 KiB of raid5 LV my_vg/my_lv to 128.00 KiB. Are you sure you want to convert raid5 LV my_vg/my_lv? [y/n]: y Logical volume my_vg/my_lv successfully converted.
- 命令/配置摘录:
# lvcreate --type raid5 -i 2 -L 500M -n my_lv my_vg
Using default stripesize 64.00 KiB. Rounding size 500.00 MiB (125 extents) up to stripe boundary size 504.00 MiB (126 extents). Logical volume "my_lv" created.- 注意:注意 并非所有卷类型都支持所有操作。在继续操作前,请检查特定的卷类型要求和限制。
9.24. 在 RAID 逻辑卷中更改区域大小
- 要点:当您创建 RAID 逻辑卷时,lvm.conf 中的 raid_region_size 值会定义其区域大小。您可以在创建卷后更改区域大小。
- 要点:raid_region_size 参数定义跟踪脏和干净状态的粒度。位图脏位决定了在脏关闭后同步的数据,如系统故障。如果将 raid_region_size 设置为更高的值,它会减少位映射和拥塞的大小。但它会影响重新同步区域期间的 write 操作,因为写入 RAID 会延迟,直到同步区域完成为止。
- 列表:创建 RAID 逻辑卷: # lvcreate --type raid1 -m 1 -L 10G test Logical volume "lvol0" created.
- 列表:查看 RAID 逻辑卷: # lvs -a -o +devices,region_size LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices Region lvol0 test rwi-a-r--- 10.00g 100.00 lvol0_rimage_0(0),lvol0_rimage_1(0) 2.00m [lvol0_rimage_0] test iwi-aor--- 10.00g /dev/sde1(1) 0 [lvol0_rimage_1] test iwi-aor--- 10.00g /dev/sdf1(1) 0 [lv…
- 列表:可选:查看 raid_region_size 参数的值: # grep raid_region_size /etc/lvm/lvm.conf # Configuration option activation/raid_region_size. # raid_region_size = 2048
- 列表:更改 RAID 逻辑卷的区域大小: # lvconvert -R 4096K test/lvol0 Do you really want to change the region_size 512.00 KiB of LV my_vg/my_lv to 4.00 MiB? [y/n]: y Changed region size on RAID LV my_vg/my_lv to 4.00 MiB.
- 列表:重新同步 RAID 逻辑卷: # lvchange --resync test/lvol0 Do you really want to deactivate logical volume my_vg/my_lv to resync it? [y/n]: y
- 列表:查看 RAID 逻辑卷: # lvs -a -o +devices,region_size LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices Region lvol0 test rwi-a-r--- 10.00g 6.25 lvol0_rimage_0(0),lvol0_rimage_1(0) 4.00m [lvol0_rimage_0] test iwi-aor--- 10.00g /dev/sde1(1) 0 [lvol0_rimage_1] test iwi-aor--- 10.00g /dev/sdf1(1) 0 [lvol…
- 命令/配置摘录:
# lvcreate --type raid1 -m 1 -L 10G test
Logical volume "lvol0" created.第 10 章 限制 LVM 设备可见性和用法
- 要点:您可以通过控制 LVM 可扫描的设备来限制逻辑卷管理器(LVM)可用的设备。
- 要点:使用 LVM 命令控制 LVM 设备扫描。LVM 命令与名为 system.devices 文件的文件交互,该文件列出了可见和可用的设备。这此功能在 Red Hat Enterprise Linux 10 中默认启用。
10.1. LVM 设备文件
- 要点:Logical Volume Manager (LVM) system.devices 文件控制 LVM 设备可见性和可用性。您可以在 /etc/lvm/devices/ 目录中找到设备文件。使用 LVM 命令管理设备文件。不要直接编辑 system.devices 文件。
- 要点:默认情况下,system.devices 文件特性已在 Red Hat Enterprise Linux 10 中启用。当激活时,它会替换 LVM 设备过滤器。要启用 LVM 设备过滤器,请禁用 system.devices 文件。
10.1.1. 在 system.devices 文件中添加设备
- 要点:要将设备与 LVM 一起使用,请将其设备 ID 添加到 system.devices 中,否则 LVM 会忽略它们。OS 安装程序添加根设备和附加的物理卷。您可以手动添加设备,LVM 只使用列出的设备。
- 要点:流程
- 列表:使用以下方法之一在 system.devices 文件中添加设备: 通过在设备文件中包括名称来添加设备: $ lvmdevices --adddev <device_name> 在设备文件中添加卷组 (VG) 中的所有设备: $ vgimportdevices <vg_name> 在设备文件中添加所有可见的 VG 中的所有设备: $ vgimportdevices --all
- 列表:通过在设备文件中包括名称来添加设备: $ lvmdevices --adddev <device_name>
- 列表:在设备文件中添加卷组 (VG) 中的所有设备: $ vgimportdevices <vg_name>
- 列表:在设备文件中添加所有可见的 VG 中的所有设备: $ vgimportdevices --all
- 列表:要隐式将新设备包含到 system.devices 文件中,请使用以下命令之一: 使用 pvcreate 命令初始化新设备: $ pvcreate <device_name> 这个操作会自动将新物理卷 (PV) 添加到 system.devices 文件中。 初始化新设备并在设备文件中自动添加新设备参数: $ vgcreate <vg_name> <device_names> 将 <vg_name> 替换为您要在其中添加设备的 VG 的名称。将 <device_names> 替换为您要添加的设备列表。 使用 vgextend 命令初始化新设备: $ vgextend <vg_name> <device_names> 将 <vg_n…
- 列表:使用 pvcreate 命令初始化新设备: $ pvcreate <device_name> 这个操作会自动将新物理卷 (PV) 添加到 system.devices 文件中。
- 命令/配置摘录:
$ lvmdevices --adddev <device_name>
$ vgimportdevices <vg_name>10.1.2. 从 system.devices 文件中删除设备
- 要点:删除设备以防止逻辑卷管理器 (LVM) 检测或使用该设备。
- 要点:流程
- 列表:根据您有关该设备的信息,使用以下方法之一删除设备: 按名称删除设备: $ lvmdevices --deldev <device_name> 通过该设备的物理卷 ID (PVID) 删除设备: $ lvmdevices --delpvid <PV_UUID>
- 列表:按名称删除设备: $ lvmdevices --deldev <device_name>
- 列表:通过该设备的物理卷 ID (PVID) 删除设备: $ lvmdevices --delpvid <PV_UUID>
- 列表:显示 system.devices 文件进行验证,是否不再存在删除的设备: $ cat /etc/lvm/devices/system.devices
- 列表:更新 system.devices 文件以匹配最新的设备信息: $ lvmdevices --update
- 命令/配置摘录:
$ lvmdevices --deldev <device_name>
$ lvmdevices --delpvid <PV_UUID>10.1.3. 创建自定义设备文件
- 要点:逻辑卷管理器 (LVM) 命令使用系统的默认 system.devices 文件。您还可以通过在 LVM 命令中指定新文件名来创建和使用自定义设备文件。当只有某些应用程序需要使用某些设备时,自定义设备文件很有用。
- 要点:流程
- 列表:在 /etc/lvm/devices/ 目录中创建自定义设备文件。
- 列表:在 LVM 命令中包括新设备文件名: $ lvmdevices --devicesfile <devices_file_name>
- 列表:可选:显示新设备文件,以验证新设备的名称是否存在: $ cat /etc/lvm/devices/<devices_file_name>
- 命令/配置摘录:
$ lvmdevices --devicesfile <devices_file_name>
$ cat /etc/lvm/devices/<devices_file_name>10.1.4. 访问系统中的所有设备
- 要点:您可以启用逻辑卷管理器(LVM)访问和使用系统中的所有设备,这将覆盖 system.devices 文件中列出的设备所造成的限制。
- 要点:流程
- 列表:指定空设备文件: $ lvmdevices --devicesfile ""
- 命令/配置摘录:
$ lvmdevices --devicesfile ""10.1.5. 禁用 system.devices 文件
- 要点:您可以禁用 system.devices 文件功能。这个操作会自动启用逻辑卷管理器 (LVM) 设备过滤器。
- 要点:流程
- 列表:打开 lvm.conf 文件。
- 列表:在 devices 部分中设置以下值: use_devicesfile=0
- 列表:禁用 system.devices 文件
- 命令/配置摘录:
use_devicesfile=0- 注意:重要 如果您删除 system.devices 文件,则此操作会有效禁用它。即使您在 lvm.conf 配置文件中启用 system.devices 文件,通过在 devices 部分中设置 use_devicesfile=1,也会应用它。禁用设备文件会自动启用 lvm.conf 设备过滤器。
10.2. LVM 过滤的持久性标识符
- 要点:重启后,传统的设备名称(如 /dev/sda )可能会改变。永久命名属性(PNA),包括 WWID、UUID 和路径名称,使用唯一的设备特征。这使得设备识别更加稳定且可预测。
- 要点:在 LVM 过滤中持久设备标识符的实现可增强 LVM 配置的稳定性和可靠性。它还降低了与设备名称的动态性质关联的系统引导失败的风险。
- 列表:持久性命名属性
- 列表:当本地磁盘名称不持久时,如何配置 lvm 过滤器?(红帽知识库)
10.3. LVM 设备过滤器
- 要点:Logical Volume Manager (LVM)设备过滤器是设备名称模式列表。您可以用它来指定系统可以评估设备的一组强制标准,并将其视为可以有效地与 LVM 一起使用。
- 要点:LVM 设备过滤器可让您控制 LVM 使用哪个设备。这有助于防止意外数据丢失或未授权访问存储设备。
10.3.1. LVM 设备过滤器模式特征
- 要点:LVM 中的设备过滤器模式使用以 (accept)或 r (reject)前缀的正则表达式。设备的第一个匹配模式决定了 LVM 的接受或拒绝。
- 要点:LVM 使用最早匹配项来评估针对这些正则表达式的设备路径名称,以确定是否接受或忽略每个设备。
- 注意:重要 在 Red Hat Enterprise Linux 10 中,默认启用 /etc/lvm/devices/system.devices 文件。当禁用 system.devices 文件时,系统会自动启用 LVM 设备过滤器。
10.3.2. LVM 设备过滤器配置示例
- 要点:LVM 设备过滤器配置控制 LVM 扫描和使用哪些设备,以及适用于各种设备类型和场景的特定模式。
- 要点:以下示例显示过滤器配置来控制 LVM 扫描并稍后使用的设备。
- 列表:要扫描所有设备,请输入: filter = [ "a|.*|" ]
- 列表:要删除 cdrom 设备以避免驱动器中无介质时的延迟,请输入: filter = [ "r|^/dev/cdrom$|" ]
- 列表:要添加所有 loop 设备,并删除所有其他设备,请输入: filter = [ "a|loop|", "r|.*|" ]
- 列表:要添加所有循环和 SCSI 设备,并删除所有其他块设备,请输入: filter = [ "a|loop|", "a|/dev/sd.|", "r|.|" ]
- 列表:要在第一个 SCSI 驱动器上只添加分区 8 ,并删除所有其他块设备,请输入: filter = [ "a|^/dev/sda8$|", "r|.*|" ]
- 列表:要从 WWID 以及所有多路径设备标识的特定设备和中添加所有分区,请输入: filter = [ "a|/dev/disk/by-id/<disk-id>.|", "a|/dev/mapper/mpath.|", "r|.*|" ] 命令还会删除任何其他块设备。
- 命令/配置摘录:
filter = [ "a|.*|" ]
filter = [ "r|^/dev/cdrom$|" ]- 注意:注意 在处理复制或克隆的 PV 时,您可能会遇到重复的物理卷(PV)警告。您可以配置过滤器来解决这个问题。
10.3.3. 应用 LVM 设备过滤器配置
- 要点:您可以通过在 lvm.conf 配置文件中设置过滤器来控制 LVM 扫描哪个设备。
- 要点:先决条件
- 列表:您已禁用了 system.devices 文件功能。
- 列表:您已准备了要使用的设备过滤器模式。
- 列表:使用以下命令测试设备过滤器模式,而不实际修改 /etc/lvm/lvm.conf 文件。以下包括一个过滤器配置示例。 # lvs --config 'devices{ filter = [ "a|/dev/emcpower.|", "r|.|" ] }'
- 列表:在 /etc/lvm/lvm.conf 文件的配置部分 devices 中添加设备过滤器模式: filter = [ "a|/dev/emcpower.|", "r|.|" ]
- 列表:重启时只扫描所需的设备: # dracut --force --verbose 这个命令重建 initramfs 文件系统,以便 LVM 在重启时只扫描必要的设备。
- 命令/配置摘录:
# lvs --config 'devices{ filter = [ "a|/dev/emcpower.|", "r|.|" ] }'
filter = [ "a|/dev/emcpower.*|", "r|*.|" ]第 11 章 控制 LVM 分配
- 要点:默认情况下,卷组使用 正常的 分配策略,这样可避免将并行条带放在同一个物理卷中。您可以使用 vgcreate 和 the- alloc 选项将其更改为 连续的、anywhere 或 cling。只有在特殊扩展分配情况下,才需要其他策略。
11.1. 从指定设备分配扩展
- 要点:使用带有 lvcreate 和 lvconvert 的 device 参数来限制对特定物理卷(PV)的分配。您可以指定扩展范围来更好地控制。分配只使用列出的 PV,如果空间不足,命令会失败。
- 要点:RAID LV 将连续 PV 用于单独的 RAID 镜像或条带。如果 PV 无法保存完整的 RAID 镜像,设备分配行为可能会变得无法预测。
- 列表:创建卷组(VG): # vgcreate <vg_name> <PV> ... 其中: <vg_name> 是 VG 的名称。 <PV> 是 PV。
- 列表:<vg_name> 是 VG 的名称。
- 列表:<PV> 是 PV。
- 列表:您可以分配 PV 来创建不同的卷类型,如 linear 或 raid : 分配扩展以创建线性卷: # lvcreate -n <lv_name> -L <lv_size> <vg_name> [ <PV> ... ] 其中: <lv_name> 是 LV 的名称。 <lv_size> 是 LV 的大小。默认单位是 MB。 <vg_name> 是 VG 的名称。 [ <PV …> ] 是 PV。 您可以在命令行上指定其中一个 PV、所有 PV 或 none : 如果您指定一个 PV,则会从其中为那个 LV 分配扩展。 注意 如果 PV 对于整个 LV 没有足够的空闲扩展,则 lvcreate 失败。 如果您指定了两个 PV,则将从…
- 列表:分配扩展以创建线性卷: # lvcreate -n <lv_name> -L <lv_size> <vg_name> [ <PV> ... ] 其中: <lv_name> 是 LV 的名称。 <lv_size> 是 LV 的大小。默认单位是 MB。 <vg_name> 是 VG 的名称。 [ <PV …> ] 是 PV。 您可以在命令行上指定其中一个 PV、所有 PV 或 none : 如果您指定一个 PV,则会从其中为那个 LV 分配扩展。 注意 如果 PV 对于整个 LV 没有足够的空闲扩展,则 lvcreate 失败。 如果您指定了两个 PV,则将从其中一个 PV 或两者的组合为那个 LV 分配扩展。 如果没有指定任何 P…
- 列表:<lv_name> 是 LV 的名称。
- 命令/配置摘录:
# vgcreate <vg_name> <PV> ...
# lvcreate -n <lv_name> -L <lv_size> <vg_name> [ <PV> ... ]- 注意:注意 如果 PV 对于整个 LV 没有足够的空闲扩展,则 lvcreate 失败。
- 注意:注意 在这些情况下,LVM 可能无法使用所有命名的 PV 或可用的 PV。如果第一个 PV 对于整个 LV 有足够的空闲扩展,则可能不会使用其他 PV。但是,如果第一个 PV 没有一组空闲扩展的分配大小,则 LV 可能会从第一个 PV 中分配一部分,从第二个 PV 中分配一部分。
11.2. LVM 分配策略
- 要点:LVM 分配策略通过相邻、清晰、普通和任何位置策略控制如何为逻辑卷分配物理扩展。
- 要点:当 LVM 操作必须为一个或多个逻辑卷(LV)分配物理扩展时,分配过程如下:
- 列表:生成卷组中的未分配物理扩展的完整集以供考虑。如果您在命令行末尾提供物理扩展的任何范围,则只考虑这些范围内未分配的物理扩展。这些范围只适用于指定的物理卷(PV)。
- 列表:每个分配策略依次尝试,从最严格的策略(contiguous)开始。进程以特定 LV 或卷组 (VG)的默认策略结束。对于每个策略,在空 LV 空间的最小数字逻辑扩展中工作,尽可能多地分配空间。这根据策略限制完成。如果需要更多空间,LVM 会进入下一个策略。
- 列表:连续 策略要求每个逻辑范围在前面的逻辑扩展上进行物理相邻。逻辑卷(LV)的第一个逻辑扩展是一个例外。 当 LV 是条带的或镜像时,连续 限制将独立应用于每个需要空间的条带或 raid 镜像。
- 列表:cling 策略要求将用于任何逻辑扩展的 PV 添加到现有 LV。该 LV 中至少必须使用 PV。
- 列表:normal 分配策略不会选择与并行 LV 使用的同一 PV 上的物理扩展。当两个扩展在不同条带或 RAID 镜像中位于同一偏移时,会应用它。
- 列表:如果存在足够的可用扩展,但 普通 策略不使用它们,则 任何位置 策略将:这可以通过在同一 PV 上放置两个条带来降低性能。
- 注意:注意 未来的更新可能会根据定义的分配策略在布局行为中引入代码更改。例如:如果您提供两个具有相同可用物理扩展的空物理卷,LVM 目前会按照列出的顺序使用它们。但是,将来的版本可能不会维护此行为。如果您需要特定的 LV 布局,请通过 lvcreate 和 lvconvert 步骤序列进行构建。对它们进行结构,以便应用于每个步骤的分配策略使 LVM 没有通过布局自由裁量。
11.3. 防止在物理卷中分配
- 要点:您可以使用 pvchange 命令防止在一个或多个物理卷的空闲空间上分配物理扩展。如果有磁盘错误或者要删除物理卷,则可能需要这样做。
- 要点:流程
- 列表:使用以下命令禁止在 device_name 上分配物理扩展: # pvchange -x n /dev/sdk1 您还可以使用 pvchange 命令的 -xy 参数允许之前被禁止的分配。
- 命令/配置摘录:
# pvchange -x n /dev/sdk1第 12 章 使用标签对 LVM 对象进行分组
- 要点:您可以向逻辑卷管理器(LVM)对象分配标签来对它们进行分组。这个功能可帮助您自动控制 LVM 行为,如激活。您还可以使用标签而不是 LVM 对象参数。
12.1. LVM 对象标签
- 要点:逻辑卷管理器(LVM)标签将同一类型的 LVM 对象进行分组。您可以将标签附加到对象,如物理卷、卷组和逻辑卷,以及集群配置中的主机。
- 要点:为避免歧义,请在每个标签前加上 @ 。标签可以通过使用拥有该标签的所有对象以及通过该标签在命令行上的位置所期望的类型替换标签来进行扩展。
12.2. 向 LVM 对象添加标签
- 要点:您可以使用 --addtag 选项和各种卷管理命令向 LVM 对象添加标签来对它们进行分组。
- 要点:先决条件
- 列表:已安装 lvm2 软件包。
- 列表:要向现有 PV 添加标签,请使用: # pvchange --addtag <@tag> <PV>
- 列表:要向现有 VG 添加标签,请使用: # vgchange --addtag <@tag> <VG>
- 列表:要在创建过程中向 VG 添加标签,请使用: # vgcreate --addtag <@tag> <VG> ...
- 列表:要向现有 LV 添加标签,请使用: # lvchange --addtag <@tag> <LV>
- 列表:要在创建过程中向 LV 添加标签,请使用: # lvcreate --addtag <@tag> ...
- 命令/配置摘录:
# pvchange --addtag <@tag> <PV>
# vgchange --addtag <@tag> <VG>12.3. 从 LVM 对象中删除标签
- 要点:如果您不再希望保持 LVM 对象分组,您可以使用 --deltag 选项和各种卷管理命令从对象中删除标签。
- 要点:先决条件
- 列表:已安装 lvm2 软件包。
- 列表:您已在物理卷(PV)、卷组(VG)或逻辑卷(LV)上创建了标签。
- 列表:要从现有 PV 中删除标签,请使用: # pvchange --deltag @tag PV
- 列表:要从现有 VG 中删除标签,请使用: # vgchange --deltag @tag VG
- 列表:要从现有的 LV 中删除标签,请使用: # lvchange --deltag @tag LV
- 命令/配置摘录:
# pvchange --deltag @tag PV
# vgchange --deltag @tag VG12.4. 显示 LVM 对象上的标签
- 要点:您可以使用以下命令显示 LVM 对象上的标签。
- 要点:先决条件
- 列表:lvm2 软件包已安装。
- 列表:您已在物理卷(PV)、卷组(VG)或逻辑卷(LV)上创建了标签。
- 列表:要显示现有 PV 上的所有标签,请使用: # pvs -o tags <PV>
- 列表:要显示现有 VG 上的所有标签,请使用: # vgs -o tags <VG>
- 列表:要显示现有 LV 上的所有标签,请使用: # lvs -o tags <LV>
- 命令/配置摘录:
# pvs -o tags <PV>
# vgs -o tags <VG>12.5. 使用标签控制逻辑卷激活
- 要点:配置文件条目和卷组标签可以使用基于元数据的过滤在集群环境中的指定主机上有选择地激活特定的逻辑卷。
- 要点:您可以在配置文件中指定只有某些逻辑卷应该在该主机上激活。
- 列表:从集群中的任何主机运行 lvchange --addtag @db2 vg1/lvol2。
- 列表:运行 lvchange -ay vg1/lvol2。
- 命令/配置摘录:
activation { volume_list = ["vg1/lvol0", "@database" ] }
tags { hosttags = 1 }第 13 章 LVM 故障排除
- 要点:您可以使用逻辑卷管理器(LVM)工具来排除 LVM 卷和组群中的各种问题。
13.1. 在 LVM 中收集诊断数据
- 要点:如果 LVM 命令没有按预期工作,您可以使用以下方法收集诊断信息。
- 要点:流程
- 列表:使用以下方法收集不同类型的诊断数据: 向任何 LVM 命令添加 -v 参数,以提高命令输出的详细程度。添加更多的 v 会进一步增加输出的详细程度。最多允许 4 个这样的 v,例如 -vvvv。 在 /etc/lvm/lvm.conf 配置文件的 log 部分中,增加 level 选项的值。这会导致 LVM 在系统日志中提供更多详情。 如果问题与逻辑卷激活有关,请启用 LVM 在激活过程中记录信息: 在 /etc/lvm/lvm.conf 配置文件的 log 部分中设置 activation = 1 选项。 使用 -vvvv 选项运行 LVM 命令。 检查命令输出。 将 activation 选项重置为 0。 如果您没有将选项重置为…
- 列表:向任何 LVM 命令添加 -v 参数,以提高命令输出的详细程度。添加更多的 v 会进一步增加输出的详细程度。最多允许 4 个这样的 v,例如 -vvvv。
- 列表:在 /etc/lvm/lvm.conf 配置文件的 log 部分中,增加 level 选项的值。这会导致 LVM 在系统日志中提供更多详情。
- 列表:如果问题与逻辑卷激活有关,请启用 LVM 在激活过程中记录信息: 在 /etc/lvm/lvm.conf 配置文件的 log 部分中设置 activation = 1 选项。 使用 -vvvv 选项运行 LVM 命令。 检查命令输出。 将 activation 选项重置为 0。 如果您没有将选项重置为 0,则系统在内存不足时可能会变得无响应。
- 列表:在 /etc/lvm/lvm.conf 配置文件的 log 部分中设置 activation = 1 选项。
- 列表:使用 -vvvv 选项运行 LVM 命令。
- 命令/配置摘录:
# lvmdump
# lvs -v13.2. 显示有关失败的 LVM 设备的信息
- 要点:有关失败的逻辑卷管理器(LVM)卷的故障排除信息可帮助您确定失败的原因。
- 要点:您可以检查以下最常见 LVM 卷失败的示例。
- 命令/配置摘录:
# vgs --options +devices
/dev/vdb1: open failed: No such device or address /dev/vdb1: open failed: No such device or address WARNING: Couldn't find device with uuid 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s. WARNING: VG myvg is missing PV 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s (last written to /dev/sdb1). WARNING: Couldn't find all devices for LV myvg/mylv while checking used and assumed devices. VG #PV #LV #SN Attr VSize VFree Devices myvg 2 2 0 wz-pn- <3.64t <3.60t [unknown](0) myvg 2 2 0 wz-pn- <3.64t <3.60t [unknown](5120),/dev/vdb1(0)13.3. 从卷组中删除丢失的 LVM 物理卷
- 要点:如果物理卷失败,您可以激活卷组中剩余的物理卷,并从卷组中删除所有使用该物理卷的逻辑卷。
- 要点:流程
- 列表:激活卷组中剩余的物理卷: # vgchange --activate y --partial myvg
- 列表:检查要删除哪些逻辑卷: # vgreduce --removemissing --test myvg
- 列表:从卷组中删除所有使用丢失的物理卷的逻辑卷: # vgreduce --removemissing --force myvg
- 列表:可选:如果意外删除要保留的逻辑卷,您可以撤销 vgreduce 操作: # vgcfgrestore myvg 警告 如果您删除了精简池,LVM 无法撤销操作。
- 命令/配置摘录:
# vgchange --activate y --partial myvg
# vgreduce --removemissing --test myvg- 注意:警告 如果您删除了精简池,LVM 无法撤销操作。
13.4. 查找丢失的 LVM 物理卷的元数据
- 要点:如果意外覆盖或销毁了卷组物理卷的元数据区域,则会出现错误消息。表示元数据区域不正确。它还可指示系统找不到具有特定 UUID 的物理卷。
- 要点:流程
- 列表:查找包含物理卷的卷组元数据文件。归档的元数据文件位于 /etc/lvm/archive/volume-group-name_backup-number.vg 路径中: # cat /etc/lvm/archive/myvg_00000-1248998876.vg 使用备份号替换 00000-1248998876。选择该卷组最高数字最后已知的有效元数据文件。
- 列表:找到物理卷的 UUID。使用以下任一方法。 列出逻辑卷: # lvs --all --options +devices Couldn't find device with uuid 'FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk'. 检查归档的元数据文件。在卷组配置的 physical_volumes 部分中,查找标记为 id = 的 UUID。 使用- partial 选项取消激活卷组: # vgchange --activate n --partial myvg PARTIAL MODE. Incomplete logical volumes will be processed. WARN…
- 列表:列出逻辑卷: # lvs --all --options +devices Couldn't find device with uuid 'FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk'.
- 列表:检查归档的元数据文件。在卷组配置的 physical_volumes 部分中,查找标记为 id = 的 UUID。
- 列表:使用- partial 选项取消激活卷组: # vgchange --activate n --partial myvg PARTIAL MODE. Incomplete logical volumes will be processed. WARNING: Couldn't find device with uuid 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s. WARNING: VG myvg is missing PV 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s (last written to /dev/vdb1). 0 logical volum…
- 命令/配置摘录:
# cat /etc/lvm/archive/myvg_00000-1248998876.vg
# lvs --all --options +devices13.5. 在 LVM 物理卷中恢复元数据
- 要点:您可以在被损坏或者替换为新设备的物理卷上恢复元数据。您可以通过重写物理卷的元数据区域从物理卷中恢复数据。
- 要点:先决条件
- 列表:您已找出丢失的物理卷的元数据。详情请查看查找缺少的 LVM 物理卷的元数据。
- 列表:恢复物理卷中的元数据: # pvcreate --uuid physical-volume-uuid --restorefile /etc/lvm/archive/volume-group-name_backup-number.vg block-device 注意 该命令只覆盖 LVM 元数据区域,不会影响现有的数据区域。 以下示例使用以下属性将 /dev/vdb1 设备标记为物理卷: FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk 的 UUID VG_00050.vg 中包含的元数据信息,它是卷组最新的好归档元数据。 # pvcreate --uuid "FmGRh3-zhok-iVI8-7qTD-…
- 列表:FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk 的 UUID
- 列表:VG_00050.vg 中包含的元数据信息,它是卷组最新的好归档元数据。
- 列表:恢复卷组的元数据: # vgcfgrestore myvg Restored volume group myvg
- 列表:显示卷组中的逻辑卷: # lvs --all --options +devices myvg 逻辑卷目前不活跃。例如: LV VG Attr LSize Origin Snap% Move Log Copy% Devices mylv myvg -wi--- 300.00G /dev/vdb1 (0),/dev/vdb1(0) mylv myvg -wi--- 300.00G /dev/vdb1 (34728),/dev/vdb1(0)
- 命令/配置摘录:
# pvcreate --uuid physical-volume-uuid --restorefile /etc/lvm/archive/volume-group-name_backup-number.vg block-device
# pvcreate --uuid "FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk" --restorefile /etc/lvm/archive/VG_00050.vg /dev/vdb1- 注意:警告 不要在正常的 LVM 逻辑卷中尝试这个步骤。如果您指定了不正确的 UUID,将会丢失您的数据。
- 注意:注意 该命令只覆盖 LVM 元数据区域,不会影响现有的数据区域。
13.6. LVM 输出中的轮询错误
- 要点:LVM 命令报告卷组中的空间使用情况,将报告的编号舍入到 2 个十进制位置,以提供人类可读的输出。这包括 vgdisplay 和 vgs 实用程序。
- 要点:因此,报告的剩余空间值可能大于卷组中物理扩展提供的内容。如果您试图根据报告可用空间的大小创建逻辑卷,则可能会遇到以下错误:
- 命令/配置摘录:
Insufficient free extents13.7. 防止创建 LVM 卷时出现循环错误
- 要点:在创建 LVM 逻辑卷时,您可以指定逻辑卷的逻辑扩展数目以避免循环错误。
- 要点:流程
- 列表:在卷组中找到可用物理扩展数目: # vgdisplay myvg 例如:以下卷组有 8780 可用物理扩展: --- Volume group --- VG Name myvg System ID Format lvm2 Metadata Areas 4 Metadata Sequence No 6 VG Access read/write [...] Free PE / Size 8780 / 34.30 GB
- 列表:创建逻辑卷。以扩展而不是字节为单位输入卷大小。 例如,要通过指定扩展数来创建逻辑卷,请运行以下命令: # lvcreate --extents 8780 --name mylv myvg 另外,您可以扩展逻辑卷使其使用卷组中剩余的可用空间的比例。例如: # lvcreate --extents 100%FREE --name mylv myvg
- 列表:检查卷组现在使用的扩展数目: # vgs --options +vg_free_count,vg_extent_count VG #PV #LV #SN Attr VSize VFree Free #Ext myvg 2 1 0 wz--n- 34.30G 0 0 8780
- 命令/配置摘录:
# vgdisplay myvg
--- Volume group --- VG Name myvg System ID Format lvm2 Metadata Areas 4 Metadata Sequence No 6 VG Access read/write [...] Free PE / Size 8780 / 34.30 GB13.8. LVM 元数据及其在磁盘上的位置
- 要点:提供不同偏移和大小的 LVM 标头和元数据区域。
- 要点:默认的 LVM 磁盘标头:
- 列表:可在 label_header 和 pv_header 结构中找到。
- 列表:在磁盘的第二个 512 字节扇区中。请注意,如果在创建物理卷(PV)时没有指定默认位置,则标头也可以在第一个或第三个扇区中。
- 列表:从磁盘开始的头 4096 个字节。
- 列表:从磁盘开始的最后 1 MiB。
- 列表:从包含 mda_header 结构的 512 字节扇区开始。
13.9. 从磁盘中提取 VG 元数据
- 要点:根据您的情况,选择以下流程之一,来从磁盘中提取 VG 元数据。
- 要点:流程
- 列表:打印有效的 mda_header 中提到的当前元数据文本: # pvck --dump metadata <disk> 例如,要打印来自有效 mda_header 的元数据文本: # pvck --dump metadata /dev/sdb metadata text at 172032 crc Oxc627522f # vgname test segno 59 --- <raw metadata from disk> ---
- 列表:根据找到的有效的 mda_header,打印元数据区域中找到的所有元数据副本的位置: # pvck --dump metadata_all <disk> 例如,要在 /dev/sdb 磁盘上元数据副本的位置: # pvck --dump metadata_all /dev/sdb metadata at 4608 length 815 crc 29fcd7ab vg test seqno 1 id FaCsSz-1ZZn-mTO4-Xl4i-zb6G-BYat-u53Fxv metadata at 5632 length 1144 crc 50ea61c3 vg test seqno 2 id FaCsSz-1ZZn-mTO4…
- 列表:搜索元数据区域中所有的元数据副本,而不使用 mda_header,例如,如果标头丢失或损坏: # pvck --dump metadata_search <disk> 例如,要在 /dev/sdb 磁盘上的元数据区域中搜索元数据副本,而不使用 mda_header : # pvck --dump metadata_search /dev/sdb Searching for metadata at offset 4096 size 1044480 metadata at 4608 length 815 crc 29fcd7ab vg test seqno 1 id FaCsSz-1ZZn-mTO4-Xl4i-zb6G-BYat-…
- 列表:在 dump 命令中包含 -v 选项,以显示每个元数据副本的描述: # pvck --dump metadata -v <disk> 例如,要显示 /dev/sdb 磁盘上每个元数据副本的描述: # pvck --dump metadata -v /dev/sdb metadata text at 199680 crc 0x628cf243 # vgname my_vg seqno 40 --- my_vg { id = "dmEbPi-gsgx-VbvS-Uaia-HczM-iu32-Rb7iOf" seqno = 40 format = "lvm2" status = ["RESIZEABLE", "READ", "WRI…
- 列表:将提取的元数据保存到文件中
- 命令/配置摘录:
# pvck --dump metadata <disk>
# pvck --dump metadata /dev/sdb- 注意:注意 要进行修复,您可以使用 /etc/lvm/backup/ 中的备份文件,而无需从磁盘中提取元数据。
13.10. 将提取的元数据保存到文件中
- 要点:如果您需要使用转储的元数据进行修复,则需要使用 -f 选项和 --setings 选项将提取的元数据保存到文件中。
- 要点:流程
- 列表:如果将 -f <filename> 添加到 --dump metadata 中,则原始元数据被写入到指定的文件中。您可以使用此文件进行修复。
- 列表:如果将 -f <filename> 添加到 --dump metadata_all 或 --dump metadata_search 中,则所有位置的原始元数据都被写入到指定的文件中。
- 列表:要从 --dump metadata_all|metadata_search + --settings "metadata_offset=<offset>" 中保存一个元数据文本的实例,其中 <offset> 来自列表输出 "metadata at <offset>": # pvck --dump metadata_search --settings metadata_offset=5632 -f meta.txt /dev/sdb Searching for metadata at offset 4096 size 1044480 metadata at 5632 length 1144 crc 50ea61c3 vg te…
- 命令/配置摘录:
# pvck --dump metadata_search --settings metadata_offset=5632 -f meta.txt /dev/sdb
Searching for metadata at offset 4096 size 1044480 metadata at 5632 length 1144 crc 50ea61c3 vg test seqno 2 id FaCsSz-1ZZn-mTO4-Xl4i-zb6G-BYat-u53Fxv # head -2 meta.txt test { id = "FaCsSz-1ZZn-mTO4-Xl4i-zb6G-BYat-u53Fxv"13.11. 使用 pvcreate 和 vgcfgrestore 命令修复损坏的 LVM 标头和元数据的磁盘
- 要点:您可以恢复损坏的或者使用新设备替换的物理卷上的元数据和标头。您可以通过重写物理卷的元数据区域从物理卷中恢复数据。
- 要点:先决条件
- 列表:您已找出丢失的物理卷的元数据。详情请查看查找缺少的 LVM 物理卷的元数据。
- 列表:收集 pvcreate 和 vgcfgrestore 命令需要的以下信息。您可以通过运行 # pvs -o+uuid 命令收集有关磁盘和 UUID 的信息。 metadata-file 是 VG 的最近元数据备份文件的路径,例如 /etc/lvm/backup/<vg-name>。 VG-name 是有损坏或缺失 PV 的 VG 的名称。 此设备上损坏的 PV 的 UUID 是从 # pvs -i+uuid 命令的输出中获得的值。 disk 是 PV 所在磁盘的名称,例如 /dev/sdb。请注意,这是正确的磁盘,或寻求帮助,否则以下这些步骤可能导致数据丢失。
- 列表:metadata-file 是 VG 的最近元数据备份文件的路径,例如 /etc/lvm/backup/<vg-name>。
- 列表:VG-name 是有损坏或缺失 PV 的 VG 的名称。
- 列表:此设备上损坏的 PV 的 UUID 是从 # pvs -i+uuid 命令的输出中获得的值。
- 列表:disk 是 PV 所在磁盘的名称,例如 /dev/sdb。请注意,这是正确的磁盘,或寻求帮助,否则以下这些步骤可能导致数据丢失。
- 命令/配置摘录:
# pvcreate --restorefile <metadata-file> --uuid <UUID> <disk>
# pvck --dump headers <disk>- 注意:警告 这些指令应特别谨慎使用。只有在您熟悉每个命令、卷的当前布局、您需要实现的布局以及备份元数据文件的内容时,才使用它们。这些命令可能会损坏数据。联系红帽全球支持服务以获取故障排除帮助。
13.12. 使用 pvck 命令修复带有损坏的 LVM 标头和元数据的磁盘
- 要点:这是使用 pvcreate 和 vgcfgrestore 命令修复损坏的 LVM 标头和元数据的磁盘 的替代选择。有些情况下,pvcreate 和 vgcfgrestore 命令可能无法正常工作。这个方法更针对损坏的磁盘。
- 要点:此方法使用 pvck --dump 提取的元数据输入文件,或者 /etc/lvm/backup 中的备份文件。在可能的情况下,使用 pvck --dump 从同一 VG 中的其他 PV 中保存的元数据,或者从 PV 上的第二个元数据区域中保存的元数据。如需更多信息,请参阅 将提取的元数据保存到文件中。
- 列表:修复磁盘上的标头和元数据: # pvck --repair -f <metadata-file> <disk> 其中 <metadata-file> 是包含 VG 的最新元数据的文件。这可以是 /etc/lvm/backup/vg-name,也可以是包含 pvck --dump metadata_search 命令输出中的原始元数据文本的文件。 <disk> 是 PV 所在的磁盘的名称,例如 /dev/sdb。要防止数据丢失,请验证是否为正确的磁盘。如果您不确定磁盘是否正确,请联系红帽支持团队。 注意 如果元数据文件是一个备份文件,则 pvck --repair 应在 VG 中保存元数据的每个 PV 上运行。如果元数据文件是从另一…
- 列表:<metadata-file> 是包含 VG 的最新元数据的文件。这可以是 /etc/lvm/backup/vg-name,也可以是包含 pvck --dump metadata_search 命令输出中的原始元数据文本的文件。
- 列表:<disk> 是 PV 所在的磁盘的名称,例如 /dev/sdb。要防止数据丢失,请验证是否为正确的磁盘。如果您不确定磁盘是否正确,请联系红帽支持团队。 注意 如果元数据文件是一个备份文件,则 pvck --repair 应在 VG 中保存元数据的每个 PV 上运行。如果元数据文件是从另一个 PV 中提取的原始元数据,则仅需要在损坏的 PV 上运行 pvck --repair。
- 列表:要检查新物理卷是否完整,且卷组是否工作正常,请检查以下命令的输出: # vgs <vgname> # pvs <pvname> # lvs <lvname>
- 列表:从物理卷中提取 LVM 元数据备份(红帽知识库)
- 列表:如何在线修复物理卷上的元数据?(红帽知识库)
- 命令/配置摘录:
# pvck --repair -f <metadata-file> <disk>
# vgs <vgname>- 注意:注意 如果元数据文件是一个备份文件,则 pvck --repair 应在 VG 中保存元数据的每个 PV 上运行。如果元数据文件是从另一个 PV 中提取的原始元数据,则仅需要在损坏的 PV 上运行 pvck --repair。
13.13. 对多路径 LVM 设备进行重复的物理卷警告进行故障排除
- 要点:当将 LVM 与多路径存储搭配使用时,列出卷组或者逻辑卷的 LVM 命令可能会显示警告信息。您可以排除这些警告来了解 LVM 显示它们的原因,或者隐藏警告信息。
- 要点:以下是您可能看到的一些警告信息:
- 命令/配置摘录:
Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/dm-5 not /dev/sdd Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/emcpowerb not /dev/sde Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/sddlmab not /dev/sdf13.13.1. 重复 PV 警告的根本原因
- 要点:当设备映射器多路径(DM 多路径)、EMC PowerPath 或 Hitachi Dynamic Link Manager (HDLM)等多路径软件管理系统上的存储设备时,每个路径都会作为不同的 SCSI 设备注册。
- 要点:然后多路径软件会创建一个映射到这些独立路径的新设备。因为每个 LUN 在 /dev 目录中有多个指向同一底层数据的设备节点,所以所有设备节点都包含相同的 LVM 元数据。
- 表格样本(共 4 行):
- 多路径软件 | 到 LUN 的 SCSI 路径 | 多路径设备映射到路径
- DM Multipath | /dev/sdb 和 /dev/sdc | /dev/mapper/mpath1 或 /dev/mapper/mpatha
- EMC PowerPath | /dev/emcpowera
- HDLM | /dev/sddlmab
13.13.2. 重复 PV 警告的情况
- 要点:逻辑卷管理器(LVM)在两个场景中显示重复的 PV 警告。
- 要点:输出中显示的两个设备都是指向同一设备的单一路径。
- 命令/配置摘录:
Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/sdd not /dev/sdf
Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/mapper/mpatha not /dev/mapper/mpathc Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/emcpowera not /dev/emcpowerh13.13.3. 防止重复 PV 警告的 LVM 设备过滤器示例
- 要点:LVM 设备过滤器通过使用特定模式避免到同一逻辑单元的多个存储路径来防止重复的物理卷警告。
- 要点:以下示例显示 LVM 设备过滤器,它避免了由单一逻辑单元(LUN)由多个存储路径导致的重复物理卷警告。
- 列表:要接受第一块硬盘上的第二个分区以及任何设备映射器(DM)多路径设备,并拒绝任何其它设备,请输入: filter = [ "a|/dev/sda2$|", "a|/dev/mapper/mpath.|", "r|.|" ]
- 列表:要接受所有 HP SmartArray 控制器和任何 EMC PowerPath 设备,请输入: filter = [ "a|/dev/cciss/.|", "a|/dev/emcpower.|", "r|.*|" ]
- 列表:要接受第一个 IDE 驱动器上的任何分区,以及任何多路径设备,请输入: filter = [ "a|/dev/hda.|", "a|/dev/mapper/mpath.|", "r|.*|" ]
- 列表:LVM 设备过滤器配置示例
- 列表:限制 LVM 设备可见性和用法
- 列表:LVM 设备过滤器
- 命令/配置摘录:
filter = [ "a|/dev/sda2$|", "a|/dev/mapper/mpath.*|", "r|.*|" ]
filter = [ "a|/dev/cciss/.*|", "a|/dev/emcpower.*|", "r|.*|" ]完整目录
- 配置和管理 LVM
- 对红帽文档提供反馈
- 第 1 章 逻辑卷管理概述
- 1.1. LVM 构架
- 1.2. LVM 的优点
- 第 2 章 管理 LVM 物理卷
- 2.1. 创建 LVM 物理卷
- 2.2. 使用 storage RHEL 系统角色重新调整物理卷大小
- 2.3. 删除 LVM 物理卷
- 2.4. 在 web 控制台中创建逻辑卷
- 2.5. 在 web 控制台中格式化逻辑卷
- 2.6. 在 web 控制台中重新定义逻辑卷大小
- 2.7. 其他资源
- 第 3 章 管理 LVM 卷组
- 3.1. 创建 LVM 卷组
- 3.2. 在 web 控制台中创建卷组
- 3.3. 重命名 LVM 卷组
- 3.4. 扩展 LVM 卷组
- 3.5. 合并 LVM 卷组
- 3.6. 从卷组中删除物理卷
- 3.7. 分割 LVM 卷组
- 3.8. 将卷组移动到另一个系统中
- 3.9. 删除 LVM 卷组
- 3.10. 在集群环境中删除 LVM 卷组
- 第 4 章 基本逻辑卷管理
- 4.1. 逻辑卷功能的概述
- 4.2. 创建逻辑卷
- 4.2.1. 创建线性(厚)逻辑卷
- 4.2.2. 使用 storage RHEL 系统角色创建或者调整逻辑卷大小
- 4.2.3. 创建条带逻辑卷
- 4.2.4. 创建 RAID 逻辑卷
- 4.2.5. 创建精简逻辑卷
- 4.2.6. 创建一个 VDO 逻辑卷
- 4.3. 重新调整逻辑卷大小
- 4.3.1. 扩展线性逻辑卷
- 4.3.2. 扩展精简逻辑卷
- 4.3.3. 扩展精简池
- 4.3.4. 扩展 VDO 池
- 4.3.5. 缩小逻辑卷
- 4.4. 重命名逻辑卷
- 4.5. 删除逻辑卷
- 4.6. 激活逻辑卷
- 4.7. 停用逻辑卷
- 第 5 章 高级逻辑卷管理
- 5.1. 管理逻辑卷快照
- 5.1.1. 了解逻辑卷快照
- 5.1.2. 管理厚逻辑卷快照
- 5.1.3. 管理精简逻辑卷快照
- 5.2. 缓存逻辑卷
- 5.2.1. 使用 dm-cache 缓存逻辑卷
- 5.2.2. 使用 dm-writecache 缓存逻辑卷
- 5.2.3. 取消逻辑卷的缓存
- 5.3. 创建自定义精简池
- 5.4. 创建自定义 VDO 逻辑卷
- 5.1. 管理逻辑卷快照
- 第 6 章 使用快照管理系统升级
- 6.1. 快照管理器进程的概述
- 6.2. 大小策略
- 6.3. 使用快照管理器升级到另一个版本
- 6.4. 在 Red Hat Enterprise Linux 版本间切换
- 6.5. 在成功升级后删除快照集
- 6.6. 在更新失败后恢复
- 第 7 章 自定义 LVM 报告
- 7.1. 控制 LVM 显示的格式
- 7.2. 为 LVM 显示指定单位
- 7.3. 自定义 LVM 配置文件
- 7.4. 定义 LVM 选择标准
- 第 8 章 在共享存储上配置 LVM
- 8.1. 为虚拟机磁盘配置 LVM
- 8.2. 将 LVM 配置为在一台机器上使用 SAN 磁盘
- 8.3. 配置 LVM ,以使用 SAN 磁盘进行故障转移
- 8.4. 配置 LVM ,来在多台机器间共享 SAN 磁盘
- 8.5. 使用 storage RHEL 系统角色创建共享 LVM 设备
- 第 9 章 配置 RAID 逻辑卷
- 9.1. RAID 级别和线性支持
- 9.2. LVM RAID 片段类型
- 9.3. 创建 RAID0 的参数
- 9.4. 创建 RAID 逻辑卷
- 9.5. 使用 storage RHEL 系统角色在 RAID 上配置 LVM 卷组
- 9.6. 创建 RAID0 条带化逻辑卷
- 9.7. 使用 storage RHEL 系统角色为 RAID LVM 卷配置条带大小
- 9.8. 软数据崩溃
- 9.9. 创建带有 DM 完整性的 RAID 逻辑卷
- 9.10. 将 RAID 逻辑卷转换为另一个 RAID 级别
- 9.11. 将线性设备转换为 RAID 逻辑卷
- 9.12. 将 LVM RAID1 逻辑卷转换为 LVM 线性逻辑卷
- 9.13. 将镜像 LVM 设备转换为 RAID1 逻辑卷
- 9.14. 更改现有 RAID1 设备中的镜像数
- 9.15. 将 RAID 镜像分离为一个独立的逻辑卷
- 9.16. 分割和合并 RAID 镜像
- 9.17. 将 RAID 失败策略设置为 allocate
- 9.18. 将 RAID 失败策略设置为 warn
- 9.19. 替换正常工作的 RAID 设备
- 9.20. 在逻辑卷中替换失败的 RAID 设备
- 9.21. 检查 RAID 逻辑卷中数据的一致性
- 9.22. RAID1 逻辑卷上的 I/O 操作
- 9.23. 重塑 RAID 卷
- 9.24. 在 RAID 逻辑卷中更改区域大小
- 第 10 章 限制 LVM 设备可见性和用法
- 10.1. LVM 设备文件
- 10.1.1. 在 system.devices 文件中添加设备
- 10.1.2. 从 system.devices 文件中删除设备
- 10.1.3. 创建自定义设备文件
- 10.1.4. 访问系统中的所有设备
- 10.1.5. 禁用 system.devices 文件
- 10.2. LVM 过滤的持久性标识符
- 10.3. LVM 设备过滤器
- 10.3.1. LVM 设备过滤器模式特征
- 10.3.2. LVM 设备过滤器配置示例
- 10.3.3. 应用 LVM 设备过滤器配置
- 10.1. LVM 设备文件
- 第 11 章 控制 LVM 分配
- 11.1. 从指定设备分配扩展
- 11.2. LVM 分配策略
- 11.3. 防止在物理卷中分配
- 第 12 章 使用标签对 LVM 对象进行分组
- 12.1. LVM 对象标签
- 12.2. 向 LVM 对象添加标签
- 12.3. 从 LVM 对象中删除标签
- 12.4. 显示 LVM 对象上的标签
- 12.5. 使用标签控制逻辑卷激活
- 第 13 章 LVM 故障排除
- 13.1. 在 LVM 中收集诊断数据
- 13.2. 显示有关失败的 LVM 设备的信息
- 13.3. 从卷组中删除丢失的 LVM 物理卷
- 13.4. 查找丢失的 LVM 物理卷的元数据
- 13.5. 在 LVM 物理卷中恢复元数据
- 13.6. LVM 输出中的轮询错误
- 13.7. 防止创建 LVM 卷时出现循环错误
- 13.8. LVM 元数据及其在磁盘上的位置
- 13.9. 从磁盘中提取 VG 元数据
- 13.10. 将提取的元数据保存到文件中
- 13.11. 使用 pvcreate 和 vgcfgrestore 命令修复损坏的 LVM 标头和元数据的磁盘
- 13.12. 使用 pvck 命令修复带有损坏的 LVM 标头和元数据的磁盘
- 13.13. 对多路径 LVM 设备进行重复的物理卷警告进行故障排除
- 13.13.1. 重复 PV 警告的根本原因
- 13.13.2. 重复 PV 警告的情况
- 13.13.3. 防止重复 PV 警告的 LVM 设备过滤器示例
