Назад | Перейти на главную страницу

VMware - запускать оповещение, когда виртуальная машина перемещается в определенное хранилище данных?

У нас есть кластер VMware, в котором не включен SDRS. Мы хотели бы знать, когда виртуальная машина перемещается в конкретное хранилище данных в этом кластере, потому что это хранилище данных не является хранилищем производительности.

Я не могу найти аварийный сигнал хранилища данных или другой тип предупреждений, который уведомлял бы меня, когда кто-то выполняет vmotion хранилища для этого хранилища данных. Я также не могу найти правило сходства или подобное, чтобы запретить кому-либо перемещать определенные виртуальные машины в это хранилище данных.

Кто-нибудь знает способ сделать это без SDRS?

Хорошим решением для этого было бы использование VMware Storage Policy-Based Management с тегами. Могут быть специфические возможности производителя, которыми вы также можете воспользоваться, но поскольку теги не зависят от производителя, я воспользуюсь ими, чтобы объяснить, как можно использовать политики.

Минимальный подход:

  1. Создайте категорию тегов (хранилище-производительность) с двумя тегами (производительность, не производительность).
  2. Пометьте каждое хранилище данных одним из тегов в зависимости от «типа» хранилища.
  3. Создайте две политики хранения (производительность, не производительность) и используйте правило на основе тегов для политики. Например, политика производительности совместима с хранилищами данных с тегом производительности. При создании политики вы сможете увидеть, какие хранилища данных совместимы с политикой.
  4. Свяжите желаемую политику хранения с виртуальными машинами

Это гарантирует, что пользователи будут предупреждены, если они попытаются перенести виртуальную машину в хранилище данных, которое не будет поддерживать политику виртуальной машины. Если пользователь проигнорирует это предупреждение, виртуальная машина будет помечена как несоответствующая.

При рассмотрении возможных триггеров аварийного сигнала хранилища данных существует несколько возможностей.

Для условных выражений вы можете использовать:

  • Использование диска хранилища данных (%)
  • Предоставлен диск хранилища данных (%)

Хотя для мероприятий это может сработать:

  • Файл или каталог скопированы в хранилище данных
  • Файл или каталог перемещены в хранилище данных

Первые два потребуют, чтобы вы знали числа, чуть выше которых вы установите порог.

Последние два могут даже не работать в зависимости от того, считается ли svMotion файлами, копируемыми / перемещаемыми в хранилище данных.

Я пошел туда, куда направлялось 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 = “magnus@home.test“
$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 vc-demo01@home.test -Subject “Number of VMs per datastore $datastore is” -smtpserver smtp.home.test -body $num.TotalVms
}
else
{
}
}
#