Делаем базовый SMB для Hyper-V + SMB multichannel
Файловое хранилище на базе SMB 3.0 может использоваться в качестве общей точки хранения для Hyper-V , начинася с Windows Server 2012/R2. С этим нововведением, Hyper-V умеет хранить файлы виртуальных машин, включая конфигурацию, виртуальные диски и снимки ВМ , на файловых "шарах" SMB 3.0. Существует достаточно много возможных схем , в которых можно использовать SMB 3.0 ( кластер Hyper-V + отдельный файловый сервер или кластер Hyper-V + файловый кластер и т.д.). В данной статье описывается процесс базового создания SMB "шары", используя Powershell.
Конфигурация демо-стенда: 2 хоста hyper-v (HV01.democorp.ru + HV02.democorp.ru), 1 файловый сервер (dc01.democorp,ru. !! dc01 является так же контроллером домена. не стоит подобную конфигурацию "переносить" в продакшен. это не рекомендуемая конфигурация и используется только в рамках демо!!). Службы File Server установлены по умолчанию.
#Создаем SMB-share (Hyperv) и предоставляем права доступа для необходимых уч.записей (клиенты SMB - hyper-v хосты + кластер + уч.запись пользователя)
PS C:\Users\Administrator> 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
#Проверяем acl
PS C:\Users\Administrator> 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
#Устанавливаем NTFS-права доступа , используя права доступа на SMB
PS C:\Users\Administrator> Set-SmbPathAcl -ShareName hyperv
#Создаем новый вирт.диск для ВМ на SMB
PS C:\Users\administrator.DEMOCORP> New-VHD -Path \\dc01\Hyperv\VMs\test\testsmb.vhdx -Dynamic -SizeBytes 15Gb -Verbose
VERBOSE: Performing the operation "New-VHD" on target "\\dc01\Hyperv\VMs\test\testsmb.vhdx".
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 :
#Создаем новую ВМ на SMB
PS C:\Users\administrator.DEMOCORP> 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 "VMtest".
Name State CPUUsage(%) MemoryAssigned(M) Uptime Status
---- ----- ----------- ----------------- ------ ------
VMtest Off 0 0 00:00:00 Operating normally
#Переносим созданную ВМ в кластер
PS C:\Users\administrator.DEMOCORP> Add-ClusterVirtualMachineRole -VirtualMachine VMTest -Name "SMB TEST" -Verbose
VERBOSE: Connecting to cluster on local computer HV01.
Name OwnerNode State
---- --------- -----
SMB TEST HV01 Offline
#Проверяем, что ВМ стала HA
PS C:\Users\administrator.DEMOCORP> (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
#Переносим хранилище вирт.машины на наш SMB
PS C:\Users\administrator.DEMOCORP> Move-VMStorage "new virtual machine" -DestinationStoragePath \\dc01\hyperv\VMs -ComputerName hv02 -Verbose
VERBOSE: Move-VMStorage will migrate the storage for virtual machine "New Virtual Machine".
#Смотрим какие подключения задействуются в процессе переноса хранилища ВМ на SMB
PS C:\Users\administrator.DEMOCORP> 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
#Проверям работу SMB Multichannel во время переноса хранилища ВМ на SMB
PS C:\Users\administrator.DEMOCORP> 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
SMB Multichannel в графике:
Virtual adapter vEthernet (CSV):
https://rlevchenko.files.wordpress.com/2014/09/speed_thumb.jpg?w=595&h=484 + Virtual adapter vEthernet (Management): https://rlevchenko.files.wordpress.com/2014/09/speed_1_thumb.jpg?w=580&h=484 Получаем примерно наши 200 Мбит/с, используя 2 адаптера (см.ниже) https://rlevchenko.files.wordpress.com/2014/09/smb-multi-channel_thumb.jpg?w=644&h=179
Маленький траблшутинг
Если после создания SMB share Вы не можете создать ВМ или мигрировать на SMB ВМ + получаете ошибку "General Access Denied", то необходимо проверить права на SMB share + настроить SMB delegation между сервером SMB и клиентами SMB (для успешной отработки Cmdlets необходимо иметь установленный Active Directory Powershell Module)
#Запрашиваем текущие permissions для SMB share
Get-SmbShareAccess Hyperv
#Если нет нужных клиентов SMB в списке доступа, то предоставляем права
Grant-SmbShareAccess -Name Hyperv -AccountName domain\comp$ -AccessRight Full
#Настраиваем constrained delegation SMB Server <> SMB Clients
Enable-SMBDelegation -SmbServer dc01 -SMBClient HV01
Enable-SMBDelegation -SmbServer dc01 -SMBClient HV02
Enable-SMBDelegation -SmbServer dc01 -SMBClient HVCL
https://rlevchenko.files.wordpress.com/2014/09/smb_hyperv_error_thumb1.jpg?w=476&h=259
Для полноценной работы SMB Multichannel необходимо иметь:
- 2 или более сетевых адаптера
- 1 или более сет.адаптеров с поддержкой RSS
- 1 или более сет.адаптеров с поддержкой RDMA
- LBFO (Nic Teaming из 2 или более адаптеров)
- Включенные Multichannel на уровне клиента и сервера (см.ниже)
PS C:\Users\Administrator> Get-SmbClientConfiguration
.........
EnableMultiChannel : True
DormantFileLimit : 1023
EnableSecuritySignature : True
ExtendedSessionTimeout : 1000
FileInfoCacheEntriesMax : 64
PS C:\Users\Administrator> 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> 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:...
Дополнительные ссылки:
English version of this article
Hyper-V over SMB - Sample Configurations