Скрипт массового изменения настроек заданий Veeam Backup

Скрипт берет список задач, которые бекапят сервера на виртуализации VMware и у которых параметр Enable VMware Tools quiescence не включен и меняет эту настройку на «Включено»
Import-Module Veeam.Backup.PowerShell
$jobs = Get-VBRJob | where {($_.Options.ViSourceOptions.VMToolsQuiesce -like 'False') -and ($_.TypeToString -like "VMware Backup")}
Foreach ($job in $jobs)
{
$options = Get-VBRJobOptions $job
$Options.ViSourceOptions.VMToolsQuiesce = $True
Set-VBRJobOptions -job $job -options $options
}

Скрипт вывода информации о занятом и выделенном дисковом пространстве в кластере vSphere

Get-Module -ListAvailable VMware* | Import-Module
$vcservers = "адрес сервера vSphere"
$username = "имя пользователя"
$report = @()
$Used = 0
$Unused = 0
$AllUsed = 0
$AllAllocated = 0
Connect-VIServer $vcservers -User $username -Password 'пароль пользователя'

$allvms = Get-Cluster -name ‘имя кластера‘ | Get-VM
foreach ($VMName in $allvms){
$Server = Get-VM $VMName | Get-View
foreach ($size_com in $($Server.Storage.PerDatastoreUsage).Committed) {
$Used += $size_com
}
foreach ($size_uncom in $($Server.Storage.PerDatastoreUsage).Uncommitted) {
$Unused += $size_uncom
}
$Used = [math]::Round((($Used)/1024/1024/1024),2)
$Unused = [math]::Round((($Unused)/1024/1024/1024),2)
$Allocated = $Used + $Unused
$row = «» | select ‘Имя сервера’, ‘Занято(ГБ)’, ‘Выделено(ГБ)’
$row.’Имя сервера’ = $VMName
$row.’Занято(ГБ)’ = $Used
$row.’Выделено(ГБ)’ = $Allocated
$report += $row
$AllUsed += $Used
$AllAllocated += $Allocated
}
$report | ft
Write-Host «Всего занято дискового пространства (ГБ): $AllUsed»
Write-Host «Всего выделено дискового пространства (ГБ): $AllAllocated»
Disconnect-VIServer $vcservers -Confirm:$False

Проблема с Zabbix Appliance

Проблема:
Скачал и установил готовый appliance от zabbix . Но с ним есть проблемы — при создании снапшота виртуальная машина перестает работать, а при запуске ее вновь ошибка Object type requires hosted I/O Failed to start the virtual machine. Module Disk power on failed. Cannot open the disk ‘/vmfs/volumes/5bcda19c-7fdf91a6-d95f-2c768aae1eb8/zabbix/zabbix_appliance-6.4.10-disk1.vmdk’ or one of the snapshot disks it depends on. После этого ее удается запустить только после исправления виртуального диска командой vmkfstools -x repair. Пытался изменить настройки виртуальной машины, вместо ide контроллера для диска выбирал SCSI, ошибка Unsupported or invalid disk type 7 for ‘scsi0:0’. Ensure that the disk has been imported. Failed to start the virtual machine. Module DevicePowerOn power on failed. Unable to create virtual SCSI device for scsi0:0, ‘/vmfs/volumes/5bcda19c-7fdf91a6-d95f-2c768aae1eb8/zabbix/zabbix_appliance-6.4.10-disk1.vmdk’. Снапшот на выключенной виртуальной машине делается без ошибок.
VMware ESXi, 7.0.3, 21424296
vCenter 7.0.3 22357613
Решение:
Смотрим что творится с дисками виртуальной машины:

Открываем содержимое диска, которое занимает меньше всего пространства и видим:


Видим, что тип диска Sparse, который имеет формат split, делящий диск на 2ГБ куски. Такой тип диска поддерживается  в работе Vmware Workstation. Чтобы корректно работать с ним на VMware Esxi необходимо выполнить конвертацию  диска:

vmkfstools -i zabbix_appliance-6.4.10-disk1.vmdk zabbix_appliance-6.4.10-disk1_new.vmdk

Добавляем новый диск к ВМ, вместо старого
Удаляем старый диск вместе с дескриптором:

vmkfstools -U zabbix_appliance-6.4.10-disk1.vmdk

Скрипт вывода в CSV занятого пространства на каждом датасторе для всех включенных виртуальных машин в кластере VMware

$VCServer = 'fqdn vcenter сервера'
$VC = Connect-VIServer $VCServer -User 'учетная запись vCenter' -Password 'пароль для учетной записи'
$report = @()
$allvms = Get-Cluster VM-Cluster05 | Get-VM | where {$_.PowerState -eq "PoweredOn"}
foreach ($vm in $allvms) {
$vmview = $vm | Get-View
foreach($disk in $vmview.Storage.PerDatastoreUsage){
$dsview = (Get-View $disk.Datastore)
$dsview.RefreshDatastoreStorageInfo()
$row = "" | select VMNAME, DATASTORE, VMUSED_GB
$row.VMNAME = $vmview.Config.Name
$row.DATASTORE = $dsview.Name
$row.VMUSED_GB = [math]::round((($disk.Committed)/1024/1024/1024),0)
$report += $row
}
}
$report | Export-Csv "C:\Temp\vm_ds.csv" -NoTypeInformation
Disconnect-VIServer $VC -Confirm:$False

Если недоступна миграция виртуальной машины в vCenter после ее восстановления

Привет!
Столкнулся с проблемой, что после восстановления из бекапа виртуальной машины в vCenter нет возможности ее мигрировать на другой хост или массив. Соответствующий пункт меню просто на просто недоступен. Не понятна причина такого поведения, т.к. с этим сталкиваются не все виртуальные машины, которые были восстановлены. Но есть способ как это починить, вот официальный мануал от VMware — https://kb.vmware.com/s/article/1029926

VMware ESX unrecoverable error. EPT misconfiguration

Столкнулись с проблемой на одном из хостов виртуализации. При миграции с него виртуальных машин на другой хост виртуальная машина с большой долей вероятности перезагружалась. В логах хоста были подобные сообщения:
Error message on <VM_Name> on <HOST_Name> in <Datacenter_Name>: VMware ESX unrecoverable error: (vcpu-2) vcpu-3:EPT misconfiguration: PA 14f11e7f8
Поддержка Vmware обратила внимание, что в логе /var/run/log/vmkernel.log упоминается постоянно одно и тоже виртуальное ядро:
2023-06-02T17:51:18.058Z cpu24:527386)WARNING: World: vm 527386: 8726: vmm0:<VM_Name>:vcpu-0:EPT misconfiguration: PA 2020eb000
2023-06-02T17:51:57.933Z cpu24:527362)WARNING: World: vm 527362: 8726: vmm6:<VM_Name>:vcpu-6:EPT misconfiguration: PA 1a53f87f8
2023-06-02T19:07:30.107Z cpu24:525206)WARNING: World: vm 525206: 8726: vmm1:<VM_Name>:vcpu-1:EPT misconfiguration: PA bf13bf80
2023-06-02T23:10:06.672Z cpu24:535256)WARNING: World: vm 535256: 8726: vmm0:<VM_Name>:vcpu-0:EPT misconfiguration: PA 80578f7f8
2023-06-02T23:11:37.296Z cpu24:535777)WARNING: World: vm 535777: 8726: vmm2:<VM_Name>:vcpu-2:EPT misconfiguration: PA 3651f558
2023-06-03T00:45:52.563Z cpu24:527569)WARNING: World: vm 527569: 8726: vmm3:<VM_Name>:vcpu-3:EPT misconfiguration: PA 14f11e7f8

Оказывается есть  KB от Vmware с аналогичной ситуацией. Что делать?
1) Меняем физически процессорные сокеты местами (если у вас конечно 2 физ. сокета) и переусаживаем планки ОЗУ. Я поменял, в логах стали ошибки уже на ядре cpu56. Значит все верно, проблема в процессоре.
2) Меняем процессор (сокет). Мы заменили и ошибка после этого пропала. Проблема решена.

VMware VCSA «dracut: FATAL: FIPS integrity test failed»

Привет!
Вчера на ровном месте начала возникать ошибка в самом начале  загрузки appliance с VMware vSphere 7 (7.0.3.01500)
dracut: FATAL: FIPS integrity test failed

Временное решение, чтобы система загрузилась: нажать клавишу «E» в момент загрузки GRUB меню и в конце строки с параметрами загрузки системы написать:
fips=0

После этого система загрузится как обычно.
При следующей перезагрузке надо будет повторить данную манипуляцию. Пока проблема, получается, полностью не устранена. Буду в ближайшее время обновлять VCSA
P.S. После загрузки системы я проверял официальным методом — FIPS не включен.
Update от 13.09.2023 года: для решения проблемы необходимо:
1) зайти на vcenter под учеткой root
cd /boot/grub2/
vi grub.cfg
Добавить значение fips=0 после systemd_cmdline
2) При следующем обновлении vcenter, после перезагрузки выполнить команду "mkinitrd -q" в консоли vcenter и удалить параметр "fips=0" из загрузчика

Ошибка восстановления базы данных SQL

Veeam Backup & Replication 9.5 Update 4. Столкнулся с ошибкой при восстановлении базы MSSQL на не оригинальный сервер. После нескольких десятков минут копирования данных (база более 2 ТБ) задание завершалось с ошибкой:
Database restore failed: Failed to read block from file: C:\Windows\TEMP\o1p4abst.bwj\MSSQL.1\MSSQL\Data\work_data.mdf The system cannot find the file specified.
Database restore failed: Failed to read block from file: C:\Windows\TEMP\o1p4abst.bwj\MSSQL.1\MSSQL\Data\work_data.mdf The system cannot find the file specified.

Если глянуть логи на сервере, куда данные восстанавливаются, то там будет следующий текст:
dpl| ERR |Failed to execute DoRpcWithBinary. Command name: 'DoSerialRpc'.
dpl| >> |[NO_SESSION_ERROR] Cannot find session
dpl| >> |--tr:Failed to get session with id {e59b788f-ccea-4656-b68d-3392c8176097}
dpl| >> |--tr:Failed to call DoRpc. CmdName: [DoSerialRpc] inParam: [<InputArguments/>].
dpl| >> |An exception was thrown from thread [3876].

В системном логе была найдена такая ошибка:
Log Name: System
Source: Microsoft-Windows-NDIS
Date: 28.09.2020 17:17:15
Event ID: 10400
Task Category: None
Level: Warning
Keywords:
User: N/A
Description:
The network interface "vmxnet3 Ethernet Adapter" has begun resetting. There will be a momentary disruption in network connectivity while the hardware resets.
Reason: The network driver detected that its hardware has stopped responding to commands.
This network interface has reset 3 time(s) since it was last initialized.

Последний лог и подтолкнул сделать обновление драйверов на виртуальную сетевую карту vmware, т.к. vmware tools были очень древние. И, о чудо, обновление помогло. Следующий раз восстановление прошло успешно!

Выгрузка опубликованного приложения из VMware Workspace One (Airwatch)

1. Подключиться к базе данных Airwatch через Microsoft SQL Server Managment Studio.
2. В Management Studio нажать на кнопку «New Query» и выполнить запрос:
SELECT TOP (1000) [blobID]
,[blobStream]
,[blobType]
,[blobName]
,[blobDescription]
,[blobUploadDate]
,[blobSize]
,[IsPrivate]
,[blobGUID]
FROM [AirWatch].[dbo].[BlobMaster] ORDER BY blobUploadDate DESC

Запрос выводит первые 1000 элементов загруженных в таблицу BlobMaster из базы данных Airwatch и отсортированных по дате загрузки в обратном порядке.
3. В столбце «blobName» найти нужное название приложения:

По полю blobUploadDate и blobSize убедиться, что это то приложение, что нужно.

4. Если необходимо найти “обернутое” приложение, то выше найденного приложения будет еще одно с именем “download” в столбце «blobName». По размеру приложения и времени загрузки (отличающегося на несколько минут) от строки ниже убедиться, что это то самое приложение.
5. У найденной строки с необходимым приложением запомнить значение поля blobID
6. На сервере с базой данных проверить, что установлена утилита bcp, которая запускается из командной строки. Если такая не установлена, то ее можно скачать с сайта Microsoft.
7. Запустить команду в командной строке:
bcp "SELECT blobStream FROM AirWatch.dbo.BlobMaster where blobID=996" queryout C:\test.apk –T
где 996 – это номер blobID из пункта 5. На вопросы утилиты bcp отвечать в таком виде:
Enter the file storage type of field blobStream [varbinary(max)]: нажать “Enter”
Enter prefix-length of field blobStream [8]: ввести 0 и нажать “Enter”
Enter length of field blobStream [0]: нажать “Enter”
Enter field terminator [none]: нажать “Enter”
Do you want to save this format information in a file? [Y/n] нажать “n”. Должно получиться что-то вроде этого:Выгруженный файл должен быть в корне диска C:\ с именем «test.apk», это и будет приложение, которое требовалось скачать.