3.8. 使用虚拟数据优化器管理精简配置
可以通过配置精简配置的 VDO 卷准备以后扩展物理空间,以便解决 VDO 卷使用 100% 的条件。例如,在 lvcreate
操作中不使用 -l 100%FREE
而是使用例如 '95%FREE' ,以确保稍后会根据需要进行恢复。这个步骤描述了如何解决这个问题:
- 卷耗尽空间
- 文件系统进入只读模式
- 卷报告的 ENOSPC
解决 VDO 卷中高物理空间使用的最佳方法是删除未使用的文件,并使用在线丢弃这些未使用文件的块或 fstrim
程序。VDO 卷的物理空间只能增加到 8192 slab,对于一个默认 slab 大小为 2 GB 的 VDO 卷为 16 TB,或对于一个具有 32 GB 的 VDO 卷为 256 TB 。
在以下步骤中,将 myvg 和 myvdo 分别替换为卷组和逻辑卷名称。
先决条件
- 安装 VDO 软件。如需更多信息,请参阅安装 VDO。
- 在您的系统中有一个有可用存储容量的 LVM 卷组。
-
使用
lvcreate --type vdo --name myvdo myvg -L logical-size-of-pool --virtualsize virtual-size-of-vdo
命令的精简配置 VDO 卷。如需更多信息,请参阅创建 LVM-VDO 卷。
步骤
确定精简置备 VDO 卷的最佳逻辑大小
# vdostats myvg-vpool0-vpool Device 1K-blocks Used Available Use% Space saving% myvg-vpool0-vpool 104856576 29664088 75192488 28% 69%
要计算空间节省率,请使用以下公式:
Savings ratio = 1 / (1 - Space saving%)
在本例中,
-
大约有
3.22:1
个空间节省率(大约 80 GB)。 - 如果对使用相同空间节省的数据写入 VDO 卷,则按比例增加数据集大小乘以 256 GB。
- 将这个数字调整到 200 GB 时,如果出现相同的空间节省率,则会产生一个具有安全可用磁盘空间的逻辑大小。
-
大约有
监控 VDO 卷中的空闲物理空间:
# vdostats myvg-vpool0-vpool
可定期执行这个命令,以提供对 VDO 卷使用的和空闲物理空间的监控。
可选:使用可用的
/usr/share/doc/vdo/examples/monitor/monitor_check_vdostats_physicalSpace.pl
脚本,查看 VDO 卷上的物理空间使用量警告:# /usr/share/doc/vdo/examples/monitor/monitor_check_vdostats_physicalSpace.pl myvg-vpool0-vpool
在创建 VDO 卷时,
dmeventd
监控服务监控 VDO 卷中物理空间的使用情况。当 VDO 卷被创建或启动时,这会被默认启用。在监控 VDO 卷时,使用
journalctl
命令查看日志中的dmeventd
的输出:lvm[8331]: Monitoring VDO pool myvg-vpool0-vpool. ... lvm[8331]: WARNING: VDO pool myvg-vpool0-vpool is now 84.63% full. lvm[8331]: WARNING: VDO pool myvg-vpool0-vpool is now 91.01% full. lvm[8331]: WARNING: VDO pool myvg-vpool0-vpool is now 97.34% full.
修复快要没有可用物理空间的 VDO 卷。当可以在 VDO 卷中添加物理空间时,但卷空间在可以增大前已满时,可能需要临时将 I/O 返回到卷。
要临时停止 I/O 到卷,请执行以下步骤,其中 VDO 卷 myvdo 包含挂载在 /users/homeDir 路径中的文件系统:
冻结文件系统:
# xfs_freeze -f /users/homeDir # vgextend myvg /dev/vdc2 # lvextend -l new_size myvg/vpool0-name # xfs_freeze -u /users/homeDir
卸载文件系统:
# umount /users/homeDir # vgextend myvg /dev/vdc2 # lvextend -l new_size myvg/vpool0-name # mount -o discard /dev/myvg/myvdo /users/homeDir
注意卸载或释放缓存数据的文件系统将产生缓存数据的写入,这可能会填满 VDO 卷的物理空间。当为 VDO 卷上的空闲物理空间设置监控阈值时,请考虑缓存的最大缓存文件系统数据量。
可以使用
fstrim
程序清理文件系统不再使用的块。对 VDO 卷上的挂载的文件系统执行fstrim
可能会导致该卷的可用空间增加。fstrim
工具将丢弃到 VDO 卷,然后用于删除对之前使用的块的引用。如果这些块中有单一引用,则使用物理空间。检查 VDO stats 以查看当前可用空间量:
# vdostats --human-readable myvg-vpool0-vpool Device Size Used Available Use% Space saving% myvg-vpool0-vpool 100.0G 95.0G 5.0G 95% 73%
丢弃未使用块:
# fstrim /users/homeDir
查看 VDO 卷的空闲物理空间:
# vdostats --human-readable myvg-vpool0-vpool Device Size Used Available Use% Space saving% myvg-vpool0-vpool 100.0G 30.0G 70.0G 30% 43%
在这个示例中,在文件系统上执行
fstrim
后,丢弃可以返回 65G 物理空间以便在 VDO 卷中使用。注意丢弃较低级别的重复数据删除和压缩卷时,可能会回收物理空间,而不是丢弃更高水平的重复数据删除和压缩卷。具有高水平的重复数据删除和压缩卷可能需要进行更广泛的清理来回收物理空间,而不是只是丢弃尚未使用的块。