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 。

在以下步骤中,将 myvgmyvdo 分别替换为卷组和逻辑卷名称。

先决条件

  1. 安装 VDO 软件。如需更多信息,请参阅安装 VDO
  2. 在您的系统中有一个有可用存储容量的 LVM 卷组。
  3. 使用 lvcreate --type vdo --name myvdo myvg -L logical-size-of-pool --virtualsize virtual-size-of-vdo 命令的精简配置 VDO 卷。如需更多信息,请参阅创建 LVM-VDO 卷

步骤

  1. 确定精简置备 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 时,如果出现相同的空间节省率,则会产生一个具有安全可用磁盘空间的逻辑大小。
  2. 监控 VDO 卷中的空闲物理空间:

    # vdostats myvg-vpool0-vpool

    可定期执行这个命令,以提供对 VDO 卷使用的和空闲物理空间的监控。

  3. 可选:使用可用的 /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
  4. 在创建 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.
  5. 修复快要没有可用物理空间的 VDO 卷。当可以在 VDO 卷中添加物理空间时,但卷空间在可以增大前已满时,可能需要临时将 I/O 返回到卷。

    要临时停止 I/O 到卷,请执行以下步骤,其中 VDO 卷 myvdo 包含挂载在 /users/homeDir 路径中的文件系统:

    1. 冻结文件系统:

      # xfs_freeze -f /users/homeDir
      
      # vgextend myvg /dev/vdc2
      
      # lvextend -l new_size myvg/vpool0-name
      
      # xfs_freeze -u /users/homeDir
    2. 卸载文件系统:

      # umount /users/homeDir
      
      # vgextend myvg /dev/vdc2
      
      # lvextend -l new_size myvg/vpool0-name
      
      # mount -o discard /dev/myvg/myvdo /users/homeDir
      注意

      卸载或释放缓存数据的文件系统将产生缓存数据的写入,这可能会填满 VDO 卷的物理空间。当为 VDO 卷上的空闲物理空间设置监控阈值时,请考虑缓存的最大缓存文件系统数据量。

  6. 可以使用 fstrim 程序清理文件系统不再使用的块。对 VDO 卷上的挂载的文件系统执行 fstrim 可能会导致该卷的可用空间增加。fstrim 工具将丢弃到 VDO 卷,然后用于删除对之前使用的块的引用。如果这些块中有单一引用,则使用物理空间。

    1. 检查 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%
    2. 丢弃未使用块:

      # fstrim /users/homeDir
    3. 查看 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 卷中使用。

      注意

      丢弃较低级别的重复数据删除和压缩卷时,可能会回收物理空间,而不是丢弃更高水平的重复数据删除和压缩卷。具有高水平的重复数据删除和压缩卷可能需要进行更广泛的清理来回收物理空间,而不是只是丢弃尚未使用的块。