Клонирование виртуальной машины в подкаталог хранилища данных

У меня есть хранилище данных в vCenter, которое я пытаюсь клонировать с помощью сценария PowerCLI, который я запускаю еженедельно. Я могу клонировать на него виртуальные машины, но у меня нет абсолютно никакого контроля над структурой каталогов. Он помещает каждую виртуальную машину в папку, названную в честь виртуальной машины, в корне хранилища данных.

Моя идеальная структура каталогов заключается в том, что корень используется только для активных виртуальных машин. папка «BACKUPS» существует. Внутри этих папок создаются еженедельные клоны. Пример «20111004» на сегодня. Внутри эти папки существуют для каждой виртуальной машины.

$vm = <name of the virtual machine obtained programmatically>
$date = Get-Date -Format "YYYYMMDD"
$h = <ESXi host where the VM is located, obtained programatically>
$dsName = "DATASTORE1" #<Name of the datastore I'm targeting>
$dirPath = "BACKUPS/" + $date + "/" + $vm

New-VM -Name $vm-$date -VM $vm -VMHost -$h -Datstore $dsName -Location $dirPath

Пример «полного» пути
[DATASTORE1] BACKUPS / 20111004 / VIRTUALMACHINE

Это единственный фрагмент скрипта, который не работает. Когда команда вводится таким образом в PowerShell, она полностью игнорирует параметр -Location и создает клон в корне хранилища данных. Я еще не нашел никакой документации (насколько я понимаю) о том, как это должно быть отформатировано. Что-то связано с контейнером VIContainer ??

Исходный код скрипта, который я настраиваю:
http://www.mbnbusiness.co.uk/blog/2010/08/updated-powercli-vmware-vm-backup-script-v2-0/


person Lucretius    schedule 04.10.2011    source источник


Ответы (3)


Параметр -Location определяет папку vCenter, в которую помещается виртуальная машина, а не папку в хранилище данных, в которой можно разместить файлы виртуальных машин.

Насколько мне известно, файлы виртуальных машин должны размещаться в корне хранилища данных.

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

Извините, я ничем не могу помочь ...

person Mike    schedule 05.10.2011
comment
Я ценю ответ. У меня была хорошая система, разработанная, когда мы использовали VMware Workstation 7 с использованием сценариев bash, и я хотел воспроизвести то же самое с вашим сценарием PowerShell для vSphere 5. Я проверю часть восстановления данных, как предложил Скотт выше. - person Lucretius; 05.10.2011

Похоже, вы пытаетесь делать резервные копии, и я настоятельно рекомендую вам взглянуть на реальный продукт для резервного копирования, например VMware Data Recovery или Veeam Backup.

Как сказал @Mike, файлы виртуальных машин работают в корне хранилища данных. Вы можете создать несколько хранилищ данных и циклически просматривать их для резервного копирования, но это может быть очень дорого, если вы используете высокопроизводительные диски.

person Scott Keck-Warren    schedule 05.10.2011
comment
Согласились, что это путь. Однако я нашел способ сделать это в PowerCLI, если кто-нибудь прочитает это и захочет повторить. $fileMgr.MoveDatastoreFile_Task((“[" + $dsName + "] ” + $vm-$date), $dc.MoRef, (“[" + $dsName + "] ” + $dirPath), $dc.MoRef, $false) - person Lucretius; 07.10.2011

Я пробовал использовать $date = Get-Date -Format "YYYYMMDD", но в итоге получил YYY01DD.

Поменял на $date = Get-Date -uformat "%d%m%Y, теперь получаю 01012012

person Paul    schedule 10.01.2012
comment
Убедитесь, что настройки времени установлены правильно на сервере, где находится ваше хранилище данных. Также убедитесь, что вы используете правильную версию PowerShell. 2.0 - person Lucretius; 28.01.2012