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