![在 LVM 精简池中为管理虚拟机保留可用空间](https://linux22.com/image/719212/%E5%9C%A8%20LVM%20%E7%B2%BE%E7%AE%80%E6%B1%A0%E4%B8%AD%E4%B8%BA%E7%AE%A1%E7%90%86%E8%99%9A%E6%8B%9F%E6%9C%BA%E4%BF%9D%E7%95%99%E5%8F%AF%E7%94%A8%E7%A9%BA%E9%97%B4.png)
我的目标是 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 可以使用其自己的配置进行这种紧急扩展,但是我正在用一个几乎无法自行移动的火腿三明治来写这篇文章,所以我必须稍后找到该文档。