Короткий ответ

Export-VM копирует конфиг, диски и (опционально) снимки в каталог. Падения почти всегда: нет места, Access Denied, сломанная цепочка AVHDX, VM в Failed, кластер — экспорт не с того узла. Не заменяйте Export слепым Copy-Item *.vhdx: потеряете XML, GUID, сетевые адаптеры и ACL NT VIRTUAL MACHINE.

Снимите checkpoint, если политика экспорта «плоский диск», проверьте ACL и свободные гигабайты назначения.

Симптомы и как отличить

Типичная картина:

  • мастер Export сразу «failed to create export»;
  • в назначении пустая папка или неполный VHDX;
  • ошибка на этапе копирования avhdx;
  • с CSV идёт, с локального диска после move — нет.

Отличия:

Что видноКуда
Потом не импортируетсяимпорт
Снимок не слитьcheckpoint
Диск не читаетсяVHDX
Нужен DR, не файл экспортарезервирование

Возможные причины

  1. Назначение не имеет прав для учётки, под которой VMMS (SYSTEM / Virtual Machines).
  2. Нет места: нужен объём ≈ суммы VHDX+AVHDX, не «свободные 10 ГБ».
  3. Checkpoint/битая цепочка.
  4. Путь слишком длинный / недоступный SMB.
  5. Кластер: экспорт с узла, который не владеет ролью / не видит CSV.
  6. Диск подключён как Shared VHDX — отдельное ограничение экспорта.
  7. Антивирус лочит создаваемый файл на лету.

Диагностика

Get-VM -Name 'VM-APP01' | Format-List Name, State, Path, ConfigurationLocation, Id, Version
Get-VMCheckpoint -VMName 'VM-APP01'
Get-VMHardDiskDrive -VMName 'VM-APP01' | ForEach-Object { Get-VHD -Path $_.Path | Format-List Path, FileSize, Size, ParentPath }
Get-ClusterGroup -Name 'VM-APP01' -ErrorAction SilentlyContinue | Format-List OwnerNode, State

Назначение:

$dest = '\\fs01.contoso.example\export\VM-APP01'
New-Item -ItemType Directory -Force -Path $dest | Out-Null
Get-Acl $dest | Format-List
Get-Volume | Format-Table DriveLetter, FileSystemLabel, SizeRemaining

Журнал VMMS Admin на время Export. Повторите с явным путём:

Export-VM -Name 'VM-APP01' -Path 'D:\Export' -ErrorAction Stop

Для Running иногда нужен -CaptureLiveState / параметры вашей версии — сверяйте Get-Help Export-VM -Full, не копируйте ключи с 2012, если help их не знает.

Решение

Сценарий A. Access Denied

Дайте SYSTEM и Administrators Modify на D:\Export. На SMB — права машины HV01$ и ваша учётка. UAC-перенаправление в Documents — не используйте профиль пользователя как путь.

Сценарий B. Checkpoint

Слейте снимки (статья), повторите Export. Если нужно сохранить дерево — Export с поддержкой checkpoint (если версия позволяет) и импорт с пониманием avhdx. Для «унести на другой двор» обычно плоский диск проще.

Сценарий C. Нет места

Чистите назначение, не источник VM. Export не сжимает. Считать FileSize всех дисков + запас 10–20%.

Сценарий D. Кластер

Выполняйте на OwnerNode или через инструмент, который целится в владельца. CSV должен быть Direct/Online.

Сценарий E. Нужна копия «как backup»

Лучше backup-продукт или Replica. Export — транспорт конфигурации, не политика хранения на год.

После успешного экспорта каталог содержит Virtual Machines, Virtual Hard Disks, Snapshots если были.

Экспорт clustered VM на шару, куда нет доступа у компьютерной учётки HV01$, падает от имени VMMS, хотя Explorer под вашим админом папку открывает. Дайте права машине узла-владельца.

Держите корень пути коротким (D:\Exp\APP01): GUID внутри дерева экспорта легко упираются в MAX_PATH.

VM с vTPM / Shielded / Key Protector не уедут обычным Export на хост вне HGS. Это не ACL каталога — смотрите настройки Security гостя.

Повторите Export после Get-VMCheckpoint пустого списка: «99% fail» часто был avhdx, который держал backup. Не копируйте дерево руками, пока Get-VHD показывает Differencing.

Место считайте по FileSize всех дисков плюс avhdx плюс конфиг, не по «в госте свободно 50%».

Как проверить, что проблема устранена

Get-ChildItem 'D:\Export\VM-APP01' -Recurse | Measure-Object -Property Length -Sum
Compare-Object (Get-VMHardDiskDrive VM-APP01).Path (Get-ChildItem 'D:\Export\VM-APP01' -Recurse -Filter *.vhdx).FullName

Размер сопоставим (не байт-в-байт из-за sparse). XML конфига на месте. Контрольный импорт в lab с -GenerateNewId и проверка Start.

VM-источник Running как была, checkpoint не размножились.

Если не помогло

  • Падает на одном диске из трёх: Get-VHD этот Path, Test-VHD.
  • SMB обрыв: копируйте на локальный диск хоста, потом уносите.
  • После экспорта импорт «incompatible»: версия конфига / CPU, статья импорта.
  • Generation/Secure Boot не про экспорт — про импорт и firmware.
  • Экспорт Running SQL без VSS даст файл как crash-consistent. Для переноса СУБД лучше Off или backup-продукт, не «Export быстрее».
  • Если VMMS пишет Access Denied только на один VHDX из набора — ACL/lock этого файла, не всего каталога назначения. Get-VHD и icacls точечно.

Профилактика

  • Эталонная папка Export с ACL для VMMS.
  • Запрет долгих checkpoint перед плановым экспортом.
  • Мониторинг места.
  • Export не единственный backup.
  • Документ: clustered VM экспортировать с владельца.
  • Перед Export снимите Get-VHD FileSize и свободное место назначения в одну таблицу заявки. Без цифр «места мало» не воспроизводится.
  • Не экспортируйте на тот же CSV Volume1, где лежит прод-диск: двойной IO плюс риск забить том посередине копирования.

FAQ

Export заменяет checkpoint?

Нет. Checkpoint — overlay на месте. Export — копия в другой каталог.

Можно ли Export на тот же CSV?

Можно, но вы удваиваете IO и место на томе, который уже кормит прод. Лучше другой диск/шара.

Copy-VM vs Export-VM?

Copy-VM сразу создаёт новую VM на хосте/кластере. Export — файлы для переноса. Для «ещё один экземпляр здесь» часто Copy/Import GenerateNewId удобнее.

Нужно ли выключать VM?

Не обязательно. Off проще для консистентности без VSS. Running = нагрузка и зависимость от живого состояния.

Экспорт шаблона с Sysprep?

Sysprep внутри гостя до Export, если это золотой образ. Иначе SID-дубли после импорта.

Почему ACL на VHDX в экспорте «не как в проде»?

Нормально. Импорт пропишет ACE под новый GUID. Не переносите icacls с прод-GUID на mill.