我们有一个没有启用SDRS的VMware群集。 我们想知道何时VM移动到该集群上的特定数据存储,因为该数据存储是非性能存储。
我无法find数据存储区警报或其他types的警报,当有人对此数据存储区执行存储虚拟动作时会通知我。 我也找不到一个关联性规则或类似的规则来防止某人将某些虚拟机移动到这个数据存储区。
任何人都知道如果没有SDRS来完成这个任务?
一个好的解决scheme是使用VMware的基于存储策略的pipe理和标签。 可能有供应商特定的function,你也可以利用,但由于标签是供应商不可知的,我会用这些来解释如何利用政策。
最简单的方法是:
这样做将确保用户在尝试将虚拟机迁移到不支持虚拟机策略的数据存储时会受到警告。 如果用户忽略此警告,则虚拟机将被标记为不合规。
在查看数据存储区警报的可能触发器时,存在一些可能性。
对于条件,你可以使用:
而对于事件这些可能工作:
前两个将要求你有已知的数字,刚刚超过你设置的门槛。
后两者甚至可能不工作,这取决于svMotion是否被视为被复制/移动到数据存储的文件。
我去了EEAA去的地方,刚刚从这里提供了一个简单的PowerCLI。
并将“-ge”设置为1,因为所讨论的数据存储区应该只包含一个预期的VM。
我已经设置在我们的pipe理服务器上运行一天两次。
它并没有真正回答VM何时移动到特定的非SDRS数据存储的问题,但是这是一种解决方法,使我足够接近知道。 再加上它只发送电子邮件发生的可能性。 如果pipe理员搞砸了,然后在脚本运行之前把VM移回来,那就好了。
代码在这里为后代:
# # 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 { } } #