Document 5014374

advertisement
Комаров Михаил
Microsoft MVP
Оглавление
• Краткая история скрипта для создания дата центра
• Краткий обзор используемых в скрипте технологий
• Nano Server - развертываем и настраиваем Hyper-V cluster
• Создаем SMB cluster
• Создаем виртуальные машины в Hyper-V cluster (вложенная
виртуализация)
Встречаем Windows 2016 TP4
Краткая история скрипта
PowerShell - наше всё
Серверные системы: пройденный путь*
Роли и функции
сервера
GUI Shell (Оболочка
графического
интерфейса
пользователя)
Windows/
Windows NT
Full Server
Server Core
От Windows NT до
Windows Server
2003
Windows Server 2008
и Windows Server
2008 R2
Минимальный
интерфейс
сервера
Server Core
Windows Server 2012
и Windows Server 2012 R2
* Графический интерфейс для администрирования серверов — вреден
Nano Server — следующий этап нашего
облачного путешествия
• Новый вариант развертывания основных компонентов
Windows Server
Базовое
(только для 64-разрядных систем)
взаимодействие
• Глубокий рефакторинг, направленный на
– Инфраструктуру Cloud OS
– Облачные приложения
• Повторяет структуру
Server Core
Nano Server
с клиентом
Сервер
с локальными
инструментами
администрирования
Server Core
Подробный взгляд
• Nano Server — это будущее ядро Windows Server
– Предназначен для облачных компонентов и приложений
– Новый фундамент для всех компонентов
• Модель Just Enough OS («только необходимое») для всех приложений
• Не все приложения можно запустить на Nano Server
– Server Core обеспечивает
совместимость с существующими
бизнес-приложениями
Исходно облачные
приложения
Существующие
бизнес-приложения
Server Core
Nano Server
Физические и виртуальные компоненты,
контейнеры
Роли и функции Nano Server
• Нулевая ресурсоемкость
– Серверные роли и дополнительные функции находятся вне Nano Server
– Самостоятельные пакеты устанавливаются как приложения
• Ключевые роли и функции
– Hyper-V, системы хранения (SoFS) и кластеризация
– Ядро CLR, ASP.NET 5 и PaaS
• Полная поддержка драйверов Windows Server
• Встроенная защита от вредоносного ПО
• Агенты приложений Apps Insight и System Center
в ближайшем будущем
Вложенная виртуализация
• Проброс флага виртуализации и поведение системы
Вложенная виртуализация
• Проброс флага виртуализации и поведение системы
PowerShell Direct напрямую в гостевую ОС
• Сценарий PowerShell в гостевой ОС можно выполнить
напрямую из хоста виртуализации ОС
• Не нужно настраивать удаленное взаимодействие
с PowerShell
• Можно обойтись даже без сетевого подключения
• Но требуются гостевые учетные данные
PowerShell Direct напрямую в гостевую ОС, пример
Storage Space Direct
Hyper-V Clusters
SMB3 Storage Network Fabric
Scale-Out File Server
Internal
Disks
Shared JBOD
Storage
Storage Space Direct
SMB3 Storage Network Fabric
Scale-Out File Server
\\FileServer\Share
Cluster Shared Volumes
C:\ClusterStorage
Storage Space
Virtual Disks
Storage Pool
Software Storage Bus
Storage
Node
Storage
Node
Storage
Node
Software Defined Storage System
Storage
Node
Spaces Direct I/O Stack
Server 1
Server 2
File Server
Virtualization
Layer
4. SBL forwards
write to block
target on
destination node
with shortest
queue
Physical Layer
3. Spaceport sends
write to each
copy on disk
\\fileserver\share1
C:\clusterstorage\volume1
CSVFS
2. SMB sends it
downstream
Storage Bus Layer
Access Layer
1. Write arrives
from compute
node
File System
File System
VolMgr
VolMgr
PartMgr
PartMgr
Disk
Disk
SpacePort
SpacePort
Virtual Disks
5. SBL on each
node sends
data to physical
stack
Clusport Virtual
HBA
ClusBT Volume Mgr
Clusport Virtual
HBA
ClusBT Volume Mgr
SBL Disks
PartMgr
PartMgr
Disk
Disk
HBA Miniport
HBA Miniport
Physical Disks
ReFS файловая система для S2D
Ускорение
VHD создание и
расширение
• Нет необходимости
заполнять новые и
расширяемые файлы
нулями
• Быстрое создание
больших дисков
фиксированного
размера VHDs
• Быстрое расширение
динамических VHDs
Эффективность
VM очистка снимков
после резервного
копирования
• После резервного
копирования Hyper-V
проводит слияние данных
между основным диском и
снимком, возникшим во
время резервного
копирования
• Используя ReFS, Hyper-V
быстро переназначает
блоки от потомка к
родителю
SSD
Доступное по бюджету
производительность
SSDs с ёмкостью HDDs
Эластичность
Автоматическая
коррекция ошибок
• HDDs
оптимизированная по
цене ёмкость
• Доступная на уровне
файла целостность
содержимого
• SSD оптимизирован по
производительности
• После обнаружения
повреждения ReFS
может получить
корректную копию с
хранилища
• ReFS хранит горячие
данные на SSD, а
холодные данные - на
HDDs, предоставляя
производительность и
ёмкость
• ReFS использует
правильную копию
для автоматического
Nano Server - развертывание
Import-Module NanoServerImageGenerator.psm1 -Force
New-NanoServerImage -MediaPath "$($DVDDriveLetter):\" BasePath $BaseVHDPath -TargetPath
"$($BaseVHDPath)\NanoBase.vhdx" -GuestDrivers -Compute Clustering -AdministratorPassword (ConvertTo-SecureString
$adminPassword -AsPlainText -Force)
Создание виртуальной машины
new-vm -Name $VMName -MemoryStartupBytes 2400MB -SwitchName $VirtualSwitchName `
-VHDPath "$($VMPath)\$($GuestOSName).vhdx" -Generation 2
Set-VMMemory -VMName $VMName -DynamicMemoryEnabled $false
Set-VMProcessor -VMName $VMName -Count 2 -ExposeVirtualizationExtensions $true
Add-VMNetworkAdapter -VMName $VMName -SwitchName $VirtualSwitchName
Get-VMNetworkAdapter -VMName $VMName |
Set-VMNetworkAdapter -MacAddressSpoofing on
do {start-vm $VMName} until ($?)
Nano Server - продолжение
Делаем на машине в домене
djoin.exe /provision /domain $domainName /machine "HVNode1" /savefile \\10.10.10.1\c$\HVNode1.txt
Делаем на самом Nano сервере
djoin /requestodj /loadfile "\\10.10.10.1\c$\$($GuestOSName).txt"
Создаем кластер на машине с установленной ролью Failover Cluster
New-Cluster –Name HVCluster –Node
HVNode1,HVNode2,HVNode3,HVNode4,HVNode5,HVNode6,HVNode7,HVNode8
–NoStorage
Создаем ноду Storage Space Direct
Add-VMNetworkAdapter -VMName $VMName -SwitchName $VirtualSwitchName
new-vhd -Path "$($VMPath)\$($GuestOSName) - Data 1.vhdx" -Dynamic -SizeBytes 200GB
Add-VMHardDiskDrive -VMName $VMName -Path "$($VMPath)\$($GuestOSName) - Data 1.vhdx"
new-vhd -Path "$($VMPath)\$($GuestOSName) - Data 2.vhdx" -Dynamic -SizeBytes 200GB
Add-VMHardDiskDrive -VMName $VMName -Path "$($VMPath)\$($GuestOSName) - Data 2.vhdx"
Включаем необходимые компоненты и добавляем в домен
icm -VMName $VMName -Credential $localCred {
param($VMName, $domainCred, $domainName)
Write-Output "[$($VMName)]:: Installing Clustering"
Install-WindowsFeature –Name File-Services, Failover-Clustering –IncludeManagementTools | out-null
Write-Output "[$($VMName)]:: Joining domain as `"$($env:computername)`""
while (!(Test-Connection -Computername $domainName -BufferSize 16 -Count 1 -Quiet -ea SilentlyContinue)) {sleep seconds 1}
do {Add-Computer -DomainName $domainName -Credential $domainCred -ea SilentlyContinue} until ($?)
} -ArgumentList $VMName, $domainCred, $domainName
Конфигурируем кластер Storage Space Direct
icm -VMName "Management Console" -Credential $domainCred {
param ($domainName)
do {New-Cluster –Name S2DCluster –Node S2DNode1,S2DNode2,S2DNode3,S2DNode4 –NoStorage} until ($?)
while (!(Test-Connection -Computername "S2DCluster.$($domainName)" -BufferSize 16 -Count 1 -Quiet -ea
SilentlyContinue))
{ipconfig /flushdns; sleep -seconds 1}
Enable-ClusterStorageSpacesDirect -Cluster "S2DCluster.$($domainName)"
Add-ClusterScaleoutFileServerRole -name S2DFileServer -cluster "S2DCluster.$($domainName)"
} -ArgumentList $domainName
Конфигурируем кластер Storage Space Direct
icm -VMName "Storage Node 1" -Credential $domainCred {
param ($domainName)
New-StoragePool -StorageSubSystemName "S2DCluster.$($domainName)" -FriendlyName S2DPool -WriteCacheSizeDefault
0 -ProvisioningTypeDefault Fixed -ResiliencySettingNameDefault Mirror -PhysicalDisk (Get-StorageSubSystem -Name
"S2DCluster.$($domainName)" | Get-PhysicalDisk)
New-Volume -StoragePoolFriendlyName S2DPool -FriendlyName S2DDisk -PhysicalDiskRedundancy 2 -FileSystem
CSVFS_REFS –Size 500GB
Set-FileIntegrity "C:\ClusterStorage\Volume1" –Enable $false
MD C:\ClusterStorage\Volume1\VHDX
New-SmbShare -Name VHDX -Path C:\ClusterStorage\Volume1\VHDX -FullAccess "$($domainName)\administrator",
"$($domainName)\Benjamin", "$($domainName)\Management$"
Set-SmbPathAcl –ShareName VHDX
MD C:\ClusterStorage\Volume1\ClusQuorum
New-SmbShare -Name ClusQuorum -Path C:\ClusterStorage\Volume1\ClusQuorum -FullAccess
"$($domainName)\administrator", "$($domainName)\Benjamin", "$($domainName)\Management$"
Set-SmbPathAcl –ShareName ClusQuorum
Конфигурируем кластер Storage Space Direct
icm -VMName "Storage Node 1" -Credential $domainCred {
param ($domainName)
get-SmbShareAccess VHDX | Grant-SmbShareAccess -AccountName
"$($domainName)\HVNode1$","$($domainName)\HVNode2$","$($domainName)\HVNode3$", `
"$($domainName)\HVNode4$","$($domainName)\HVNode5$","$($domainName)\HVNode6$", `
"$($domainName)\HVNode7$","$($domainName)\HVNode8$","$($domainName)\HVCluster$" `
-AccessRight full -Confirm:$false
get-SmbShareAccess ClusQuorum | Grant-SmbShareAccess -AccountName
"$($domainName)\HVNode1$","$($domainName)\HVNode2$","$($domainName)\HVNode3$", `
"$($domainName)\HVNode4$","$($domainName)\HVNode5$","$($domainName)\HVNode6$", `
"$($domainName)\HVNode7$","$($domainName)\HVNode8$","$($domainName)\HVCluster$" `
-AccessRight full -Confirm:$false
Set-SmbPathAcl –ShareName VHDX
Set-SmbPathAcl –ShareName ClusQuorum
} -ArgumentList $domainName
Создаем виртуальную машину на кластере
Storage Space Direct
foreach ($i in 1..8) {
icm -VMName "Hyper-V Node $($i)" -Credential $domainCred {
param ($k, $domainName, $localCred)
Set-VMHost -VirtualHardDiskPath "\\S2DFileServer.$($domainName)\VHDX" `
-VirtualMachinePath "\\S2DFileServer.$($domainName)\VHDX"
$j = $k - 1
do {New-VHD -Path "\\s2dfileserver\vhdx\Container Host $($j).VHDX" -ParentPath
"\\s2dfileserver\vhdx\ContainerBase.VHDX" -Differencing -ea 0| Out-Null} until ($?)
do {new-vm -Name "Container Host $($j)" -MemoryStartupBytes 768MB -SwitchName "Virtual Switch" `
-VHDPath "\\s2dfileserver\vhdx\Container Host $($j).VHDX" -Generation 2 -ea 0} until ($?)
Set-VM -name "Container Host $($j)" -ProcessorCount 2
Get-VMNetworkAdapter -VMName "Container Host $($j)" | Set-VMNetworkAdapter -MacAddressSpoofing
on
start-vm "Container Host $($j)"
По завершению работы скрипта видим результат.
ДЕМОНСТРАЦИЯ
Полученные результаты
Ресурсы
Windows Server 2016 Technical Preview 4
http://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-technical-preview
System Center Technical Preview 4
http://www.microsoft.com/en-us/evalcenter/evaluate-system-center-technical-preview
Оригинальный скрипт
https://github.com/scooley/Virtualization-Documentation/blob/b97e59ad81a5510662bce5f214641daa170f2eff/demos/2015BigBuild/BigBuild.ps1
Microsoft Virtual Academy
http://www.microsoft.com/en-us/evalcenter/evaluate-system-center-technical-preview
Microsoft Channel 9 (Видео и презентации с последних форумов Microsoft)
https://mva.microsoft.com/
СПАСИБО!
Download