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           192.168.1.96   192.168.1.201  23             13             False          False
dc01           True           10.10.25.22    10.10.25.1     22             12             False          False

#Get information about client networks interfaces
Get-SmbClientNetworkInterface

SMB Multichannel:

Virtual adapter vEthernet (CSV):

speed

+ Virtual adapter vEthernet (Management):

speed_1

~ 200 Mbps using 2×100 Mb adapters

smb-multi-channel

Troubleshooting

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_hyperv_error

SMB Multichannel:

Multichannel should be enabled (see client and server configuration)

2 or more network adapters

OR

1 or more NICs capable with RSS

OR

1 or more NICs capable with RDMA

OR

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            192.168.1.201
*                   13                  True                False               100 Mbps            fe80::590e:87d7:...
*                   12                  True                False               100 Mbps            10.10.25.1
*                   12                  True                False               100 Mbps            fe80::34ce:f145:...

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: