在 LVM 精简池中为管理虚拟机保留可用空间

在 LVM 精简池中为管理虚拟机保留可用空间

我的目标是 LVM 精简配置的默认配置足够灵活,可以为一个管理 VM LV(VolA)与用户 LV(VolU1、VolU2、VolU3...)保留安全裕度,即使不同的管理员(在单独的安装上)在各自的管理虚拟机中使用非常不同的磁盘空间量。

例如,一个管理员可能在系统 1 的 VolA 中使用 4GB,而另一个管理员可能在系统 2 的 VolA 中使用 50GB。这意味着 50GB 的固定大小卷对于第一个管理员来说是不可接受的(反之亦然),因此需要将 VolA 与其他“用户”VM 卷一起放入精简池中以实现灵活性。无法为这些系统手动定制安装。

更多要求:

  • 管理虚拟机是存储主机,从精简池运行
  • 用户虚拟机占用同一个池
  • 过度配置;所有 LV 虚拟大小 = 物理磁盘大小。

当用户经验不足、用户虚拟机中的错误或 DoS 尝试导致分配所有剩余的可用空间对于他们的用户卷(VolU1,VolU2等...),并且VolA没有可用空间并且管理VM无法启动或正常运行。

解决方案/故障保护应尽可能自动且被动。理想的解决方案可能是为所有用户 LV 设置 LVM 属性,允许它们仅在 时分配空间poolFree < N,而 VolA 没有这样的限制。但我在 Linux LVM 中找不到这样的功能,需要建议。


经过一番研究,似乎解决方案可能涉及使用设置来dmeventd在达到阈值时执行命令(例如“暂停所有虚拟机”)。dmeventd我在网上找到的较新的手册页说,这可以通过dmeventd/thin_command在 lvm.conf 中进行设置来实现;似乎此功能是在 2017 年 5 月添加的,所以我必须找到一个反向移植。

另一个选择是向 rsyslog.conf 添加如下规则:

:msg, contains, "some dmeventd message"  ^my_pause_vm_script

答案1

如果您想防止用户过度分配与您的管理主机相同的精简池,那么您可能需要采用不同的分配方法。

您可以将管理工作负载分离到单独的精简池中。如果您分配过多,通常最好为池提供更具弹性的可分配后备存储,以处理临时的过度分配。一种简单的方法是保留一些大型较慢的 LUN 作为池的廉价“紧急”PV。

我知道 LVM 可以使用其自己的配置进行这种紧急扩展,但是我正在用一个几乎无法自行移动的火腿三明治来写这篇文章,所以我必须稍后找到该文档。

相关内容