第 5 章 高级逻辑卷管理
LVM 包括如下高级功能:
- 快照,它们是逻辑卷(LV)的时间点副本
- 缓存,有了它您可以使用更快的存储作为较慢存储的缓存
- 创建自定义精简池
- 创建自定义 VDO LV
5.1. 管理逻辑卷快照 复制链接链接已复制到粘贴板!
快照是一个在特定时间点镜像另一个 LV 的内容的逻辑卷(LV)。
5.1.1. 了解逻辑卷快照 复制链接链接已复制到粘贴板!
当您创建快照时,您在创建一个作为另一个 LV 的时间点副本的新 LV。最初,快照 LV 不包含实际数据。而它会在创建快照时引用原始 LV 的数据块。
定期监控快照的存储使用情况非常重要。如果快照达到其分配空间的 100%,则它将无效。
必须在完全填满快照之前扩展快照。这可以通过使用 lvextend
命令手动完成,或者通过 /etc/lvm/lvm.conf
文件自动完成。
- 厚 LV 快照
- 当原始 LV 上的数据发生变化时,写时复制(CoW)系统会在更改之前将原始数据,未更改的数据复制到快照。这样,快照的大小仅在更改发生时增长,在创建快照时存储原始卷的状态。后快照是一种 LV,其需要您预先分配一些存储空间。这个数量以后可以进行扩展或减少,但您应该考虑您要对原始 LV 进行何种类型的更改。这帮助您避免由于分配太多空间而浪费资源,或者由于分配的太少而频繁增加快照大小。
- 精简 LV 快照
精简快照是从现有精简置备 LV 创建的一种 LV 。精简快照不需要预先分配额外的空间。最初,原始 LV 及其快照共享同样的数据块。当对原始 LV 进行更改时,它会将新数据写到不同的块,而快照继续引用原始块,并在创建快照时保留 LV 数据的时间点视图。
精简配置是一种通过按需分配磁盘空间来优化和高效管理存储的方法。这意味着您可以创建多个 LV,而无需为每个 LV 预先分配大量存储。存储在精简池中的所有 LV 中共享,使精简池更有效地使用资源。精简池按需为其 LV 分配空间。
- 在厚和精简 LV 快照之间进行选择
- 厚或精简 LV 快照之间的选择直接由您在执行的快照的 LV 的类型决定。如果您的原始 LV 是厚 LV,则您的快照将是厚的。如果您的原始 LV 是精简的,则您的快照将是精简的。
5.1.2. 管理厚逻辑卷快照 复制链接链接已复制到粘贴板!
当您创建厚 LV 快照时,务必要考虑存储要求和快照的预期寿命。您需要根据原始卷的预期变化来为其分配足够的存储。在其预期的寿命内,快照必须有足够的大小来捕获更改,但它不能超过原始 LV 的大小。如果您预期更改率较低,则 10%-15% 的快照大小可能就足够了。对于高更改率的 LV,您可能需要分配 30% 或更多的空间。
必须在完全填满快照之前扩展快照。如果快照达到其分配空间的 100%,则其变为无效。您可以使用 lvs -o lv_name,data_percent,origin
命令监控快照容量。
5.1.2.1. 创建厚逻辑卷快照 复制链接链接已复制到粘贴板!
您可以使用 lvcreate
命令创建厚 LV 快照。
先决条件
- 管理访问权限.
- 您已创建了一个物理卷。如需更多信息,请参阅 创建 LVM 物理卷。
- 您已创建了一个卷组。如需更多信息,请参阅 创建 LVM 卷组。
- 您已创建了一个逻辑卷。如需更多信息,请参阅 创建逻辑卷。
流程
确定您要创建快照的 LV:
lvs -o vg_name,lv_name,lv_size
# lvs -o vg_name,lv_name,lv_size VG LV LSize VolumeGroupName LogicalVolumeName 10.00g
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 快照的大小不能超过 LV 的大小。
创建厚 LV 快照:
lvcreate --snapshot --size SnapshotSize --name SnapshotName VolumeGroupName/LogicalVolumeName
# lvcreate --snapshot --size SnapshotSize --name SnapshotName VolumeGroupName/LogicalVolumeName
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用您要为快照分配的大小(如 10G)替换 SnapshotSize。使用您要给快照逻辑卷取的名称替换 SnapshotName。使用包含原始逻辑卷的卷组的名称替换 VolumeGroupName。使用您要为其创建快照的逻辑卷的名称替换 LogicalVolumeName。
验证
验证快照是否已创建:
lvs -o lv_name,origin
# lvs -o lv_name,origin LV Origin LogicalVolumeName SnapshotName LogicalVolumeName
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.2.2. 手动扩展逻辑卷快照 复制链接链接已复制到粘贴板!
如果快照达到其分配空间的 100%,则其变为无效。必须在完全填满快照之前扩展快照。这可以通过使用 lvextend
命令手动完成此操作。
先决条件
- 管理访问权限.
流程
列出快照的卷组、逻辑卷、源卷、它们的使用率百分比和大小:
lvs -o vg_name,lv_name,origin,data_percent,lv_size
# lvs -o vg_name,lv_name,origin,data_percent,lv_size VG LV Origin Data% LSize VolumeGroupName LogicalVolumeName 10.00g VolumeGroupName SnapshotName LogicalVolumeName 82.00 5.00g
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 扩展厚配置快照:
lvextend --size +AdditionalSize VolumeGroupName/SnapshotName
# lvextend --size +AdditionalSize VolumeGroupName/SnapshotName
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用要添加到快照中的空间(如 +1G)替换 AdditionalSize。将 VolumeGroupName 替换为卷组的名称。使用快照的名称替换 SnapshotName。
验证
验证 LV 是否已扩展:
lvs -o vg_name,lv_name,origin,data_percent,lv_size
# lvs -o vg_name,lv_name,origin,data_percent,lv_size VG LV Origin Data% LSize VolumeGroupName LogicalVolumeName 10.00g VolumeGroupName SnapshotName LogicalVolumeName 68.33 6.00g
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.2.3. 自动扩展厚逻辑卷快照 复制链接链接已复制到粘贴板!
如果快照达到其分配空间的 100%,则其变为无效。必须在完全填满快照之前扩展快照。这可以自动完成。
先决条件
- 管理访问权限.
流程
-
在您选择的编辑器中打开
/etc/lvm/lvm.conf
文件。 取消
snapshot_autoextend_threshold
和snapshot_autoextend_percent
行的注释,并将每个参数设置为所需的值:snapshot_autoextend_threshold = 70 snapshot_autoextend_percent = 20
snapshot_autoextend_threshold = 70 snapshot_autoextend_percent = 20
Copy to Clipboard Copied! Toggle word wrap Toggle overflow snapshot_autoextend_threshold
决定 LVM 开始自动扩展快照的百分比。例如,将参数设置为 70 表示 LVM 将在达到 70% 容量时尝试扩展快照。snapshot_autoextend_percent
指定快照在达到阈值时应扩展的百分比。例如,将参数设置为 20 表示快照将增加其当前大小的 20%。- 保存更改并退出编辑器。
重启
lvm2-monitor
:systemctl restart lvm2-monitor
# systemctl restart lvm2-monitor
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.2.4. 合并厚逻辑卷快照 复制链接链接已复制到粘贴板!
您可以将厚 LV 快照合并到创建快照的原始逻辑卷中。合并过程意味着原始 LV 恢复回创建快照时所处的状态。合并完成后,快照被删除。
如果原始 LV 和快照 LV 中的任何一个处于活动状态,则它们之间的合并会被推迟。只有在 LV 被重新激活且没有使用时,才会继续。
先决条件
- 管理访问权限.
流程
列出 LV、其卷组及其路径:
lvs -o lv_name,vg_name,lv_path
# lvs -o lv_name,vg_name,lv_path LV VG Path LogicalVolumeName VolumeGroupName /dev/VolumeGroupName/LogicalVolumeName SnapshotName VolumeGroupName /dev/VolumeGroupName/SnapshotName
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查挂载 LV 的位置:
findmnt -o SOURCE,TARGET /dev/VolumeGroupName/LogicalVolumeName findmnt -o SOURCE,TARGET /dev/VolumeGroupName/SnapshotName
# findmnt -o SOURCE,TARGET /dev/VolumeGroupName/LogicalVolumeName # findmnt -o SOURCE,TARGET /dev/VolumeGroupName/SnapshotName
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 /dev/VolumeGroupName/LogicalVolumeName 替换为逻辑卷的路径。将 /dev/VolumeGroupName/SnapshotName 替换为快照的路径。
卸载 LV:
umount /LogicalVolume/MountPoint umount /Snapshot/MountPoint
# umount /LogicalVolume/MountPoint # umount /Snapshot/MountPoint
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 /LogicalVolume/MountPoint 替换为逻辑卷的挂载点。将 /Snapshot/MountPoint 替换为您的快照的挂载点。
停用 LV:
lvchange --activate n VolumeGroupName/LogicalVolumeName lvchange --activate n VolumeGroupName/SnapshotName
# lvchange --activate n VolumeGroupName/LogicalVolumeName # lvchange --activate n VolumeGroupName/SnapshotName
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 VolumeGroupName 替换为卷组的名称。使用逻辑卷的名称替换 LogicalVolumeName。将 SnapshotName 替换为您的快照的名称。
将厚 LV 快照合并到原始卷中:
lvconvert --merge VolumeGroupName/SnapshotName
# lvconvert --merge VolumeGroupName/SnapshotName
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 VolumeGroupName 替换为卷组的名称。使用快照的名称替换 SnapshotName。
激活 LV:
lvchange --activate y VolumeGroupName/LogicalVolumeName
# lvchange --activate y VolumeGroupName/LogicalVolumeName
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 VolumeGroupName 替换为卷组的名称。使用逻辑卷的名称替换 LogicalVolumeName。
挂载 LV:
mount /dev/VolumeGroupName/LogicalVolumeName /LogicalVolume/MountPoint
# mount /dev/VolumeGroupName/LogicalVolumeName /LogicalVolume/MountPoint
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 /dev/VolumeGroupName/LogicalVolumeName 替换为逻辑卷的路径。将 /LogicalVolume/MountPoint 替换为逻辑卷的挂载点。
验证
验证快照是否已删除:
lvs -o lv_name
# lvs -o lv_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.3. 管理精简逻辑卷快照 复制链接链接已复制到粘贴板!
当存储效率是优先考虑因素时,精简置备是合适的。存储空间动态分配减少了初始存储成本,并最大限度地利用了可用的存储资源。在具有动态工作负载或存储随时间而增长的环境中,精简配置允许灵活性。它使存储系统能够适应变化的需求,而无需预先分配大量的存储空间。使用动态分配时,有可能会过度置备,其中所有 LV 的总大小可能会超过精简池的物理大小,假设所有空间不会被同时使用。
5.1.3.1. 创建精简逻辑卷快照 复制链接链接已复制到粘贴板!
您可以使用 lvcreate
命令创建精简 LV 快照。在创建精简 LV 快照时,避免指定快照大小。包含 size 参数会导致创建厚快照。
先决条件
- 管理访问权限.
- 您已创建了一个物理卷。如需更多信息,请参阅 创建 LVM 物理卷。
- 您已创建了一个卷组。如需更多信息,请参阅 创建 LVM 卷组。
- 您已创建了一个逻辑卷。如需更多信息,请参阅 创建逻辑卷。
流程
确定您要创建快照的 LV:
lvs -o lv_name,vg_name,pool_lv,lv_size
# lvs -o lv_name,vg_name,pool_lv,lv_size LV VG Pool LSize PoolName VolumeGroupName 152.00m ThinVolumeName VolumeGroupName PoolName 100.00m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建精简 LV 快照:
lvcreate --snapshot --name ThinSnapshotName VolumeGroupName/ThinVolumeName
# lvcreate --snapshot --name ThinSnapshotName VolumeGroupName/ThinVolumeName
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用您要提供给快照逻辑卷的名称替换 ThinSnapshotName。使用包含原始逻辑卷的卷组的名称替换 VolumeGroupName。使用您要为其创建快照的精简逻辑卷的名称替换 ThinVolumeName。
验证
验证快照是否已创建:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.3.2. 合并精简逻辑卷快照 复制链接链接已复制到粘贴板!
您可以将精简 LV 快照合并到创建快照的原始逻辑卷中。合并过程意味着原始 LV 恢复回创建快照时所处的状态。合并完成后,快照被删除。
先决条件
- 管理访问权限.
流程
列出 LV、其卷组及其路径:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查原始 LV 挂载的位置:
findmnt -o SOURCE,TARGET /dev/VolumeGroupName/ThinVolumeName
# findmnt -o SOURCE,TARGET /dev/VolumeGroupName/ThinVolumeName
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 VolumeGroupName/ThinVolumeName 替换为逻辑卷的路径。
卸载 LV:
umount /ThinVolumeName/MountPoint
# umount /ThinVolumeName/MountPoint
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 /ThinVolumeName/MountPoint 替换为您逻辑卷的挂载点。将 /ThinSnapshot/MountPoint 替换为您的快照的挂载点。
停用 LV:
lvchange --activate n VolumeGroupName/ThinVolumeName
# lvchange --activate n VolumeGroupName/ThinVolumeName
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 VolumeGroupName 替换为卷组的名称。将 ThinVolumeName 替换为逻辑卷的名称。
将精简 LV 快照合并到原始逻辑卷中:
lvconvert --mergethin VolumeGroupName/ThinSnapshotName
# lvconvert --mergethin VolumeGroupName/ThinSnapshotName
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 VolumeGroupName 替换为卷组的名称。将 ThinSnapshotName 替换为快照的名称。
挂载 LV:
mount /ThinVolumeName/MountPoint
# mount /ThinVolumeName/MountPoint
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 /ThinVolumeName/MountPoint 替换为您逻辑卷的挂载点。
验证
验证原始 LV 是否已合并:
lvs -o lv_name
# lvs -o lv_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow