Hyper-V: The destination is not valid because it’s compressed

Live migration (LM) between Hyper-V hosts may fails with

“The virtual machine cannot be moved to the destination computer. The hardware on the destination computer is not compatible with the hardware requirements on this virtual machine. Virtual machine operation failed at migration destination. The destination ‘PathToVM’ is not valid because it’s compressed”



We know that there are no special requirements for live migration in 2012/2012 R2:


But if you have enabled “Compress this drive to save disk space” on the disk level and compression on the folder level, live migration fails.  Hyper-V doesn’t support compressed destination folder. I’ve never seen any official notes about it. If you have, please comment this post or contact me. IMO, it must be in the requirements for LM.


live migration_hyperv_compression_1


live migration_hyperv_compression_2

Based on the Russian TechNet thread:


Simple SMB share and multichannel for Hyper-V

SMB 3.0 file shares can be used as shared storage for Hyper-V in Windows Server 2012 R2 and Windows Server 2012. With this capability, Hyper-V can store virtual machine files, which includes configuration, virtual hard disk (VHD) files, and snapshots, on SMB file shares. There a lot of configurations for SMB and Hyper-V (cluster Hyper-V + stand-alone SMB share, or cluster Hyper-V <> scale-out and etc.). This article covers basic steps for configuration SMB share for Hyper-V through powershell.

My demo: 2 hyper-v hosts (HV01.democorp.ru, HV02.democorp.ru), 1 file server (dc01.democorp.ru . !! it’s not recommended to make a SMB share on domain controller. it’s just a lab!!).  2 network adapters per server. File Server roles are installed by default.

#Create new SMB share on your file server (dc01 - my file server)
PS C:\Users\Administrator&gt; New-SmbShare -Name Hyperv -Path S:\Shares\VM -FullAccess democorp\administrator,democorp\hv01$,democorp\hv02$,democorp\hvcl$

Name                          ScopeName                     Path                          Description
----                          ---------                     ----                          -----------
Hyperv                        *                             S:\Shares\VM

#Check permissions
PS C:\Users\Administrator&gt; Get-SmbShareAccess hyperv

Name                    ScopeName               AccountName             AccessControlType       AccessRight
----                    ---------               -----------             -----------------       -----------
Hyperv                  *                       DEMOCORP\Administrator  Allow                   Full
Hyperv                  *                       DEMOCORP\HV01$          Allow                   Full
Hyperv                  *                       DEMOCORP\HV02$          Allow                   Full
Hyperv                  *                       DEMOCORP\hvcl$          Allow                   Full

#Set NTFS permissions from SMB share
PS C:\Users\Administrator&gt; Set-SmbPathAcl -ShareName hyperv

#Create new vhd on smb share
PS C:\Users\administrator.DEMOCORP&gt; New-VHD -Path \\dc01\Hyperv\VMs\test\testsmb.vhdx -Dynamic -SizeBytes 15Gb -Verbose
VERBOSE: Performing the operation &quot;New-VHD&quot; on target &quot;\\dc01\Hyperv\VMs\test\testsmb.vhdx&quot;

ComputerName            : HV01
Path                    : \\dc01\Hyperv\VMs\test\testsmb.vhdx
VhdFormat               : VHDX
VhdType                 : Dynamic
FileSize                : 4194304
Size                    : 16106127360
MinimumSize             :
LogicalSectorSize       : 512
PhysicalSectorSize      : 4096
BlockSize               : 33554432
ParentPath              :
DiskIdentifier          : 82453f86-1d5a-421f-890b-0a76366f4cbb
FragmentationPercentage : 0
Alignment               : 1
Attached                : False
DiskNumber              :
Key                     :
IsDeleted               : False
Number                  :

#Create new VM on share
PS C:\Users\administrator.DEMOCORP&gt; New-VM -Name VMtest -SwitchName VM -VHDPath \\dc01\Hyperv\VMs\test\testsmb.vhdx -Path \\dc01\hyperv\vms -MemoryStartupBytes 1Gb -Generation 2 -Verbose

VERBOSE: New-VM will create a new virtual machine &quot;VMtest&quot;.

Name   State CPUUsage(%) MemoryAssigned(M) Uptime   Status
----   ----- ----------- ----------------- ------   ------
VMtest Off   0           0                 00:00:00 Operating normally

#Add VM to cluster
PS C:\Users\administrator.DEMOCORP&gt; Add-ClusterVirtualMachineRole -VirtualMachine VMTest -Name &quot;SMB TEST&quot; -Verbose
VERBOSE: Connecting to cluster on local computer HV01.

Name                                    OwnerNode                               State
----                                    ---------                               -----
SMB TEST                                HV01                                    Offline

#Check that VM was become HA
PS C:\Users\administrator.DEMOCORP&gt; (Get-ClusterResource).Name
Cluster IP Address
Cluster Name
Virtual Machine Configuration New Virtual Machine
Virtual Machine Configuration VMtest
Virtual Machine New Virtual Machine
Virtual Machine VMtest

#Move VM storage from local storage to the SMB share
PS C:\Users\administrator.DEMOCORP&gt; Move-VMStorage &quot;new virtual machine&quot; -DestinationStoragePath \\dc01\hyperv\VMs -ComputerName hv02 -Verbose
VERBOSE: Move-VMStorage will migrate the storage for virtual machine &quot;New Virtual Machine&quot;.

#Check smb connections on hv02
PS C:\Users\administrator.DEMOCORP&gt; Get-SmbConnection

ServerName          ShareName           UserName            Credential          Dialect             NumOpens
----------          ---------           --------            ----------          -------             --------
dc01                hyperv              DEMOCORP\Adminis... DEMOCORP.RU\Admi... 3.02                2
dc01                hyperv              DEMOCORP\HV02$      DEMOCORP.RU\HV02$   3.02                4
dc01                hyperv              NT VIRTUAL MACHI... DEMOCORP.RU\HV02$   3.02                2

#Checks that smb multichannel works
PS C:\Users\administrator.DEMOCORP&gt; Get-SmbMultichannelConnection

Server Name    Selected       Client IP      Server IP      Client         Server         Client RSS     Client RDMA
                                                            Interface      Interface      Capable        Capable
                                                            Index          Index
-----------    --------       ---------      ---------      -------------- -------------- -------------- --------------
dc01           True   23             13             False          False
dc01           True      22             12             False          False

#Get information about client networks interfaces

SMB Multichannel:

Virtual adapter vEthernet (CSV):


+ Virtual adapter vEthernet (Management):


~ 200 Mbps using 2×100 Mb adapters



If you receive” “General Access denied error” during VM creation or migration, you have to check permissions on SMB share (my share is “Hyperv” + HV01 and HV02 are smb clients) and constrained delegation (notice that you must have installed Active Directory powershell module):

Get-SmbShareAccess Hyperv

Grant-SmbShareAccess -Name Hyperv -AccountName domain\comp$ -AccessRight Full

Enable-SMBDelegation -SmbServer dc01 -SMBClient HV01

Enable-SMBDelegation -SmbServer dc01 -SMBClient HV02

Enable-SMBDelegation -SmbServer dc01 -SMBClient HVCL


SMB Multichannel:

Multichannel should be enabled (see client and server configuration)

2 or more network adapters


1 or more NICs capable with RSS


1 or more NICs capable with RDMA


NIC Teaming (at least 2 NICs)

PS C:\Users\Administrator&gt; Get-SmbClientConfiguration

EnableMultiChannel                    : True
DormantFileLimit                      : 1023
EnableSecuritySignature               : True
ExtendedSessionTimeout                : 1000
FileInfoCacheEntriesMax               : 64

PS C:\Users\Administrator&gt; Get-SmbServerConfiguration


EnableLeasing                   : True
EnableMultiChannel              : True
EnableStrictNameChecking        : True
OplockBreakWait                 : 35
PendingClientTimeoutInSeconds   : 120
RequireSecuritySignature        : True
EnableSMB1Protocol              : True
EnableSMB2Protocol              : True
Smb2CreditsMax                  : 2048
Smb2CreditsMin                  : 128

PS C:\Users\Administrator&gt; Get-SmbServerNetworkInterface

Scope Name          Interface Index     RSS Capable         RDMA Capable        Speed               IpAddress
----------          ---------------     -----------         ------------        -----               ---------
*                   13                  True                False               100 Mbps  
*                   13                  True                False               100 Mbps            fe80::590e:87d7:...
*                   12                  True                False               100 Mbps  
*                   12                  True                False               100 Mbps            fe80::34ce:f145:...