我们有一个未启用 SDRS 的 VMware 集群。我们想知道虚拟机何时移动到该集群上的特定数据存储,因为该数据存储是非性能存储。
我找不到数据存储警报或其他类型的警报,当有人对此数据存储执行存储迁移时会通知我。我也找不到亲和性规则或类似规则来阻止某人将某些虚拟机移动到此数据存储。
有人知道没有 SDRS 的情况下如何实现这一目标吗?
答案1
一个好的解决方案是使用 VMware 的基于存储策略的管理与标签。可能有一些供应商特定的功能你也可以利用,但由于标签与供应商无关,我将使用这些功能来解释如何利用策略。
最简单的方法是:
- 创建一个带有两个标签(性能、非性能)的标签类别(存储性能)。
- 根据存储的“类型”为每个数据存储添加一个标签
- 创建两个存储策略(性能、非性能)并使用基于标签的规则。例如,性能策略与带有性能标签的数据存储兼容。创建策略时,您将能够看到哪些数据存储与策略兼容
- 将所需的存储策略与虚拟机关联
这样做的目的是确保当用户尝试将虚拟机迁移到不支持虚拟机策略的数据存储时,会收到警告。如果用户忽略此警告,则虚拟机将被标记为不合规。
答案2
在查看数据存储区警报的可能触发因素时,存在几种可能性。
对于条件语句,你可以使用:
- 数据存储磁盘使用率 (%)
- 数据存储磁盘已配置 (%)
对于事件来说这些可能有效:
- 文件或目录已复制到数据存储
- 文件或目录已移动到数据存储
前两者要求您有已知的数字,并将阈值设置在略高于该数字的位置。
后两者甚至可能不起作用,这取决于 svMotion 是否算作被复制/移动到数据存储的文件。
答案3
我跟着 EEAA 走了一遭,最后得到了一个简单的 PowerCLI,它由这里。
并将“-ge”设置为 1,因为相关的数据存储应该只容纳它所针对的一个虚拟机。
我已将其设置为每天在我们的管理服务器上运行两次。
它并没有真正回答虚拟机何时移动到特定非 SDRS 数据存储的问题,但它是一种让我足够了解的解决方法。此外,它只在发生这种情况的可能性发生时才给我发送电子邮件。如果管理员搞砸了,然后在脚本运行之前将虚拟机移回,那也没关系。
此处为后人提供代码:
#
# PowerCLI script to send e-mail if the number of virtual machines per datastore exceeds 48
# Version 1.0
# Magnus Andersson, Real Time Services AB
#
#
Add-PSSnapin VMware.VimAutomation.Core -ErrorAction SilentlyContinue
#
#
# Get login password
$pwd = Get-Content d:vspherescriptspowerclicred | ConvertTo-SecureString
$cred = New-Object System.Management.Automation.PsCredential “homedomainpowercli“, $pwd
#
#
# Connect to vCenter Server
connect-viserver vc-demo01.home.test
#
#
$sendTo = “[email protected]“
$ds = get-datastore
foreach ($datastore in $ds){
$num = Get-Datastore $datastore | Select @{N=”TotalVMs”;E={@($_ | Get-VM ).Count}}
if ($num.TotalVMs -ge 48) {
send-mailmessage -to $sendTo -from [email protected] -Subject “Number of VMs per datastore $datastore is” -smtpserver smtp.home.test -body $num.TotalVms
}
else
{
}
}
#