Compute (Microsoft) – Tech-Coffee //www.tech-coffee.net Tue, 14 Mar 2017 15:18:13 +0000 en-US hourly 1 https://wordpress.org/?v=5.2.11 65682309 Deploy Hyper-V from USB stick with unattended file //www.tech-coffee.net/deploy-hyper-v-from-usb-stick-with-unattended-file/ //www.tech-coffee.net/deploy-hyper-v-from-usb-stick-with-unattended-file/#respond Tue, 14 Mar 2017 15:18:13 +0000 //www.tech-coffee.net/?p=5242 When you have few Hyper-V hosts and when you have not the System Center products, you have to deploy your nodes from a USB stick or from PXE services such as WDS. These deployment methods often imply manual steps to configure the operating system. However, it is possible to automate most of the steps thanks ...

The post Deploy Hyper-V from USB stick with unattended file appeared first on Tech-Coffee.

]]>
When you have few Hyper-V hosts and when you have not the System Center products, you have to deploy your nodes from a USB stick or from PXE services such as WDS. These deployment methods often imply manual steps to configure the operating system. However, it is possible to automate most of the steps thanks to deployment tools (part of ADK) and some PowerShell scripts. This topic shows you how I deploy Hyper-V from USB stick with unattended file and scripts.

Requirements

To follow this topic, you need Windows Assessment and Deployment Kit (ADK). To make this topic, I have deployed the following feature:

You need also the ISO of Windows Server 2016. I have copied the install.wim (folder Sources of the ISO) on my local drive.

Prepare the USB stick

To prepare the USB stick, I use Rufus. Once you have run the tool, just select your ISO file, the USB Stick and the boot mode (Bios or UEFI). This topic is based on an UEFI configuration.

Prepare the unattended file

Once you have installed deployment tools, you can open it from start menu. Then click file | select Windows Image.

Next, browse your local drive to select install.wim.

Select the edition you want. For Hyper-V, I choose Windows Server 2016 Datacenter in Core edition.

Next create an answer file as below.

Select amd64_Microsoft-Windows-International-Core-WinPE (documentation here), and place it in 1. WindowsPE. Then specify language settings:

  • InputLocale: Keyboard layout
  • SystemLocale: system locale language
  • UILanguage: User Interface language
  • UserLocale: per-user settings for currency, time, numbers and so on

Next navigate to SetupUILanguage to specify the language used during Windows Setup.

Next, select amd64_Microsoft-Windows-Setup (documentation here) and place it in 1. WindowsPE.

Navigate to DiskConfiguration and right click on it and select add disk.

To create a partition, right click on CreatePartitions and select insert New CreatePartition.

To make the below configuration, I have followed this guide of Microsoft (because I have an UEFI):

Microsoft-Windows-Setup\DiskConfiguration\Disk DiskID = 0
WillWipeDisk = true
Microsoft-Windows-Setup\DiskConfiguration\Disk\ CreatePartitions\CreatePartition Order = 1
Size = 300
Type = Primary
Microsoft-Windows-Setup\DiskConfiguration\Disk\ CreatePartitions\CreatePartition Order = 2
Size = 260
Type = EFI
Microsoft-Windows-Setup\DiskConfiguration\Disk\ CreatePartitions\CreatePartition Order = 3
Size = 128
Type = MSR
Microsoft-Windows-Setup\DiskConfiguration\Disk\ CreatePartitions\CreatePartition Extend = true
Order = 4
Type = Primary
Microsoft-Windows-Setup\DiskConfiguration\Disk\ ModifyPartitions\ModifyPartition Format = NTFS
Label = WINRE
Order = 1
PartitionID = 1
Microsoft-Windows-Setup\DiskConfiguration\Disk\ ModifyPartitions\ModifyPartition Format = FAT32
Label = System
Order = 2
PartitionID = 2
Microsoft-Windows-Setup\DiskConfiguration\Disk\ ModifyPartitions\ModifyPartition Order = 3
PartitionID = 3
Microsoft-Windows-Setup\DiskConfiguration\Disk\ ModifyPartitions\ModifyPartition Format = NTFS
Label = HostOS
Letter = C
Order = 4
PartitionID = 4
Microsoft-Windows-Setup\ImageInstall\OSImage\InstallTo DiskID = 0
PartitionID = 4

In a single install.wim, there are multiple Windows images. So, we have to specify from which image Windows will be deployed. It is a little tricky but we can retrieve this information with the following dism command:

Dism /Get-ImageInfo /ImageFile:<Path/to/install.wim>

Thanks to this command, we can list images in install.wim and the index. In the below screenshot, the Windows Server 2016 Datacenter in Core edition is the index 3.

So, in InstallFrom node, I add the following metadata:

  • Key: /IMAGE/INDEX
  • Value: 3

Next navigate to ProductKey node (in UserData) and specify a product key.

In UserData node, set AcceptEula to true and provide FullName and Organization name.

Next add amd64_Microsoft-Windows-Shell-Setup (documentation here) to specialize and oobeSystem section.

In Specialize section, specify the timezone and the computer name. You can find here the allowed timezone format.

Move to oobeSystem section. In UserAccounts | AdministratorPassword node, specify an Administrator password as below

In the above screenshot, I configure an Auto Logon that will run 5 times. I make this configuration because later, I’ll run a PowerShell script with some reboots. We will see that in the next section.

In FirstLogonCommands, I add a SynchronousCommand. I specify the script that will customize my operating system. This cmd script calls a PowerShell script. We will see that in the next section.

Next add amd64_Microsoft-Windows-TerminalServices-LocalSessionManager (documentation here). I set fDenyTSConnections to false to enable the RDP connection.

Once you have finished to edit the answer file, you can save it on USB stick. You must name it autounattend.xml.

Post deployment scripts

In the USB Stick, I create a folder called Deploy. In this folder I have also created a folder called Binaries and Agent. In binaries, I have copied the drivers (as Dell, Mellanox and so on). In Deploy folder I have the following script:

  • ConfigureOS.cmd
  • Autodeploy.ps1
  • NodeConfiguration.xml

ConfigureOS.cmd

This script creates c:\temp\Deploy folder and copy the content of Deploy from USB stick to c:\temp\Deploy. Then the script AutoDeploy.ps1 is run.

mkdir c:\temp\Deploy
xcopy D:\Deploy\* C:\temp\Deploy /H /F /E
PowerShell -file c:\temp\deploy\AutoDeploy.ps1

NodeConfiguration.xml

This XML file contains network configurations (IP Address, netmask, Active Directory and so on). This XML is called in AutoDeploy.ps1.

<?xml version="1.0" encoding="UTF-8" />
<NodeConfiguration>
    <Network vSwitchName="SW-1G">
        <Management name="MGMT-22" ipaddr="10.138.22.12" netmask="24" gateway="10.138.22.1" dns="10.139.16.15,10.138.23.15" type="Untagged" vlanid=""/>
        <Cluster name="Cluster-100" ipaddr="192.168.100.12" netmask="24" type="Access" vlanid="100"/>
    </Network>
    <ActiveDirectory name="homecloud.net" />
</NodeConfiguration>

AutoDeploy.ps1

The AutoDeploy.ps1 script install drivers, features, agent, configure networks, MPIO and join Active Directory. A scheduled task is created to run the script after each reboot. The script knows where it is after each reboot thanks to step file. The script reads the step file and regarding the value, it runs a part of the script.


# Variables
$DeployPkg = "C:\temp\Deploy"
$ScriptDir = Split-Path $script:MyInvocation.MyCommand.Path
$StepFile  = $($DeployPkg + "\step.cfg")
$DellPkg   = $DeployPkg + "\Binaries\Dell\suu.cmd"
$XMLPath   = $DeployPkg + "\NodeConfiguration.xml"

if ((Test-Path $XMLPath) -like $False){
    Write-Host "Can't find the XML file located to $XMLPath. Exiting" -ForegroundColor Red
    Exit
}

# Get XML content
$XML = Get-Content $XMLPath

Write-Host "The AutoDeploy script is located in $ScriptDir" -ForegroundColor Green
Write-Host "The step file is $StepFile" -ForegroundColor Green

#### INITIALIZATION OF STEP FILE ####
if ((Test-Path $StepFile) -like $False){
    Write-Host "The step file doesn't exist. Creating it with 0 value" -ForegroundColor Green
    Set-Content -LiteralPath $StepFile -Value 0
}

# Get Step
$Step = Get-Content $StepFile
Write-Host "Current Step: 0. Deploying Dell Drivers and firmware" -ForegroundColor Green

#### DELL DRIVERS INSTALLATION R630 + FIRMWARE ####

if ($Step -like 0){

    # Set a schedule task to run this script on each OS start
    $action = New-ScheduledTaskAction -Execute 'Powershell.exe' -Argument '-command "& C:\temp\Deploy\Autodeploy.ps1"'
    $trigger =  New-ScheduledTaskTrigger -Atlogon
    Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "AutoDeploy" -Description "Server Deployment"

    # Test if dell drivers are found
    if ((Test-Path $DellPkg) -like $False){
        Write-Host "Can't find Dell package. Please update the variable DellPkg. Exiting." -ForegroundColor Red
        Exit
    }

     #Change the Power schema to high performance
    Write-Host "Change power schema to high performance" -ForegroundColor Green
    POWERCFG.EXE /S SCHEME_MIN
    
    #Change the value of step file
    Set-Content -LiteralPath $StepFile -Value 1
    
    # Driver installation
    cmd /c "$DellPkg -e"
    Restart-Computer
}

#### ROLE AND FEATURE INSTALLATION ####
if ($Step -like 1){
    Write-Host "Installing the current Windows Roles and Features:" -ForegroundColor Green
    Write-Host "           - Hyper-V + PowerShell cmdlets" -ForegroundColor Blue
    Write-Host "           - Failover Clustering + PowerShell cmdlets" -ForegroundColor Blue
    Write-Host "           - MPIO" -ForegroundColor Blue
    Write-Host "           - Active Directory PowerSHell cmdlets" -ForegroundColor Blue
    Install-WindowsFeature Hyper-V, Failover-Clustering, MultiPath-IO, RSAT-CLustering-Powershell, Hyper-V-PowerShell, RSAT-AD-PowerShell
    Set-Content -LiteralPath $StepFile -Value 2
    Restart-Computer -Force
}

#### NETWORK CONFIGURATION, MPIO AND AD ####
if ($Step -like 2){

    $SwitchName  = $XML.NodeConfiguration.Network.vSwitchName

    $MGMTNicName  = $XML.NodeConfiguration.Network.Management.Name
    $MGMTNicIP    = $XML.NodeConfiguration.Network.Management.ipaddr
    $MGMTNicMask  = $XML.NodeConfiguration.Network.Management.netmask
    $MGMTNicGW    = $XML.NodeConfiguration.Network.Management.gateway
    $MGMTNicDNS   = $XML.NodeConfiguration.Network.Management.dns
    $MGMTNicvType = $XML.NodeConfiguration.Network.Management.type
    $MGMTNicVlan  = $XML.NodeConfiguration.Network.Management.vlanid

    $ClusNicName  = $XML.NodeConfiguration.Network.Cluster.Name
    $ClusNicIP    = $XML.NodeConfiguration.Network.Cluster.ipaddr
    $ClusNicMask  = $XML.NodeConfiguration.Network.Cluster.netmask
    $ClusNicvType = $XML.NodeConfiguration.Network.Cluster.type
    $ClusNicVlan  = $XML.NodeConfiguration.Network.Cluster.vlanid

    # Creating vSwitch (SET)
    Write-Host "Creating Switch Embedded Teaming (name: $SwitchName) vSwitch with all physical NIC" -ForegroundColor Green
    New-VMSwitch -Name $SwitchName -NetAdapterName NIC1, NIC2, NIC3, NIC4 -EnableEmbeddedTeaming $True -AllowManagementOS $False > $Null

    # Creating vNIC Management
    Write-Host "Creating Management NIC (NIC name: $MGMTNicName)" -ForegroundColor Green
    Add-VMNetworkAdapter -SwitchName $SwitchName -ManagementOS -Name $MGMTNicName
    
    if ($MGMTNicvType -like "Untagged"){
        Write-Host "Configure vNIC $MGMTNicName to untagged" -ForegroundColor Green
        Set-VMNetworkAdapterVLAN -ManagementOS -VMNetworkAdapterName $MGMTNicName -Untagged
    }
    Elseif ($ClusNicvType -like "Access"){
        Write-Host "Configure vNIC $MGMTNicName to tagged (VID: $MGMTNicVlan)" -ForegroundColor Green
        Set-VMNetworkAdapterVLAN -ManagementOS -VMNetworkAdapterName $MGMTNicName -Access -VlanId $MGMTNicVlan
    }

    # Creating vNIC Cluster (Hearbeat + Live-Migration)
    Write-Host "Creating Cluster NIC (NIC name: $ClusNicName)" -ForegroundColor Green
    Add-VMNetworkAdapter -SwitchName $SwitchName -ManagementOS -Name $ClusNicName
    Write-Host "Tagging the $ClusNicName NIC" -ForegroundColor Green
    if ($ClusNicvType -like "Untagged"){
        Write-Host "Configure vNIC $ClusNicName to untagged" -ForegroundColor Green
        Set-VMNetworkAdapterVLAN -ManagementOS -VMNetworkAdapterName $ClusNicName -Untagged
    }
    Elseif ($ClusNicvType -like "Access"){
        Write-Host "Configure vNIC $ClusNicName to tagged (VID: $ClusNicVlan)" -ForegroundColor Green
        Set-VMNetworkAdapterVLAN -ManagementOS -VMNetworkAdapterName $ClusNicName -Access -VlanId $ClusNicVlan
    }

    # Disable VMQ because 1GB NIC
    Write-Host "Disabling VMQ on all NICs" -ForegroundColor Green
    Disable-NetAdapterVMQ -Name *

    # Enable Jumbo Frame on all NICs
    Write-Host "Enabling JumboFrame on all vNICs" -ForegroundColor Green
    Get-NetAdapterAdvancedProperty -Name * -RegistryKeyword "*jumbopacket" | Set-NetAdapterAdvancedProperty -RegistryValue 9014

    # Set IP addresses
    Write-Host "Set IP Address on vNICs $MGMTNicName ($MGMTNicIP/$MGMTNicMask, GW: $MGMTNicGW)" -ForegroundColor Green
    New-NetIPAddress -InterfaceAlias "vEthernet ($MGMTNicName)" -IPAddress $MGMTNicIP -PrefixLength $MGMTNicMask -Type Unicast -DefaultGateway $MGMTNicGW | Out-Null
    
    Write-Host "Set DNS on $MGMTNicName (DNS: $MGMTNicDNS)" -ForegroundColor Green
    Set-DnsClientServerAddress -InterfaceAlias "vEthernet ($MGMTNicName)" -ServerAddresses $MGMTNicDNS | Out-Null
    
    Write-Host "Set IP Address on vNICs $ClusNicName ($ClusNicIP/$ClusNicMask)" -ForegroundColor Green
    New-NetIPAddress -InterfaceAlias "vEthernet ($ClusNicName)" -IPAddress $ClusNicIP -PrefixLength $ClusNicMask -Type Unicast | Out-Null
 
    #Disable DNS registration of Storage and Cluster network adapter 
    Write-Host "Disabling register in DNS for $ClusNicName" -ForegroundColor Green
    Set-DNSClient -InterfaceAlias *$ClusNicName* -RegisterThisConnectionsAddress $False

#### CONFIGURE MPIO ####
    Write-Host "Activate SAS claim for MPIO" -ForegroundColor Green
    Enable-MSDSMAutomaticClaim -BusType SAS

#### ADD TO DOMAIN ####

    Write-Host "Add computer to the domain $($XML.NodeConfiguration.ActiveDirectory.name)" -ForegroundColor Green
    New-MSDSMSupportedHW -allApplicable
    $Credential = Get-Credential -Message "Credential for $($XML.NodeConfiguration.ActiveDirectory.name)"
    Add-Computer -DomainName $($XML.NodeConfiguration.ActiveDirectory.name) -Credential $Credential
    Set-Content -LiteralPath $StepFile -Value 3
    Restart-Computer
}

#### INSTALLATION AGENT ####
if ($Step -like 3) {

    # Add here the Agent installation
    ################################
    Set-Content -LiteralPath $StepFile -Value 4
    Restart-Computer
}

#### REMOVE AUTOLOGON , CHANGE ADMIN PWD ####
if ($Step -like 4){

    Write-Host "Delete automatic run script at startup" -ForegroundColor Green
    Unregister-ScheduledTask AutoDeploy

    Restart-Computer
}


Conclusion

This topic shows you an example of how we can automate the Hyper-V host’s deployment with free tools. If you have not System Center, you can use this method. With automation, you can get a consistent deployment more easily than manual deployment.

The post Deploy Hyper-V from USB stick with unattended file appeared first on Tech-Coffee.

]]>
//www.tech-coffee.net/deploy-hyper-v-from-usb-stick-with-unattended-file/feed/ 0 5242
Specialize Windows Server Hyper-V guest OS automatically //www.tech-coffee.net/specialize-windows-server-hyper-v-guest-os-automatically/ //www.tech-coffee.net/specialize-windows-server-hyper-v-guest-os-automatically/#respond Tue, 07 Feb 2017 10:15:31 +0000 //www.tech-coffee.net/?p=5071 If you have not SC Virtual Machine Manager, you have no access to VM Template to deploy standard virtual machines. But SC Virtual Machine Manager leverages existing mechanisms to deploy and specialize Windows Server such as unattend file, custom scripts or PowerShell. The specialization of the operating system enables to configure the license key, the ...

The post Specialize Windows Server Hyper-V guest OS automatically appeared first on Tech-Coffee.

]]>
If you have not SC Virtual Machine Manager, you have no access to VM Template to deploy standard virtual machines. But SC Virtual Machine Manager leverages existing mechanisms to deploy and specialize Windows Server such as unattend file, custom scripts or PowerShell. The specialization of the operating system enables to configure the license key, the computer name, the IP address, the keyboard layout and so on. With a good OS specialization, you can deploy your VM in one click and when it is finished, you just have to deploy your application.

Once the VM is deployed and ready, you can also deploy automatically application with features such as PowerShell DSC. But this is not covered by this topic.

Last year I have written a topic on Starwind to create VMs from PowerShell. That enables to automate the creation process without using a GUI, either from Virtual Machine Manager or Hyper-V Manager. But a VM deployment is not finished when the VM is created but when the application is deployed. Before deploying the application, the OS must also be installed and specialized. This topic shows you the method I use to deploy and specialize a VM without a single click.

You can read the complete topic by following this link.

The post Specialize Windows Server Hyper-V guest OS automatically appeared first on Tech-Coffee.

]]>
//www.tech-coffee.net/specialize-windows-server-hyper-v-guest-os-automatically/feed/ 0 5071
How to deploy a converged network with Windows Server 2016 //www.tech-coffee.net/how-to-deploy-a-converged-network-with-windows-server-2016/ //www.tech-coffee.net/how-to-deploy-a-converged-network-with-windows-server-2016/#comments Mon, 05 Sep 2016 13:10:54 +0000 //www.tech-coffee.net/?p=4771 If you read the news regularly, you probably have heard something about converged network. This is a model where the same network adapters are used to handle several kinds of traffics such as storage, live-migration, virtual machine networks and so on. This design brings flexibility, simplicity and is cost effective. First of all, this design ...

The post How to deploy a converged network with Windows Server 2016 appeared first on Tech-Coffee.

]]>
If you read the news regularly, you probably have heard something about converged network. This is a model where the same network adapters are used to handle several kinds of traffics such as storage, live-migration, virtual machine networks and so on. This design brings flexibility, simplicity and is cost effective.

First of all, this design is flexible because you can add and remove networks easily. Let’s assume that you need to connect your virtual machines to a new network. To make the new configuration you just have to set the switch to add the right VLAN ID (VID) and reconfigure the VM with the right VID. It is easier than add a new network adapter and move the VM to a new virtual switch and this is why I said that network convergence brings simplicity.

Because you don’t need to buy a lot of network adapters, this design is also cost effective. With Windows Server 2016, we are able to converge almost everything, especially SMB traffics. So you can buy two network adapters faster than 10GB/s and converged all your traffics. Thanks to this design, you can have only three network cables plugged into each server (one for the Baseboard Management Controller and two for the networks). Can you imagine the simplicity of your cable management in your datacenter?

Converged Network overview

To understand the network convergence, it is important to apprehend some network technologies. To deploy this kind of design, you need to understand the difference between an Access mode and a Trunk mode.

When you plug a standard server (I mean not a hypervisor) to a switch, this server doesn’t need to manage several VLAN. This server belongs to a specific VLAN and I don’t want that it can communicate in another VLAN. From switch perspective, you have to configure the related switch port to Access mode with a single VID.

On the other hand, some hardware need to communicate in several VLAN. The first example is the link between two switches. The second example is the hypervisor. When you deploy a hypervisor, it must communicate with several networks such as heartbeat, live-migration, management, storage and so on. From switch perspective, you have to configure the related port in Trunk mode.

Network convergence is based on switch ports configured to trunk mode. Each switch port connected to the hypervisor is set to trunk mode and with the required VLAN. Then all the configuration is done from the operating system. So let’s assume you need 20 hypervisors with two 25GB/s Network Interface Controllers (NICs) each. All you need is two dedicated switches with 24 ports at least and configure all switch ports in trunk mode. Then you just have to plug the servers and to configure the operating systems.

From the operating system perspective, Windows Server 2016 brings Switch Embedded Teaming (SET) which enables to converge almost everything. Before Windows Server 2016, you had to create a teaming and then create the virtual switches bound to the teaming virtual NIC. Some features were not supported in the parent partition as RDMA, vRSS and so on. So it was difficult to converge every networks. Now with SET, the teaming is managed inside the virtual switch and more features are supported especially vRSS and RDMA.

Once the SET is created, you just have to create virtual NICs in order to the hypervisor can communicate with the required networks (such as storage, live-migration, management and so on).

Design of the example

To explain you with more details the converged network, I’ll make a deployment example. Please find below the required network configuration:

  • Management network (VID 10) – Native VLAN (1x vNIC)
  • Live-Migration network: (VID 11) – require RDMA (1x vNIC)
  • Storage network (VID 12) – Require RDMA (2x vNIC)
  • Heartbeat network (VID 13) – (1x vNIC)
  • VM Network 1 (VID 100)
  • VM Network 2 (VID 101)

The Storage and live-migrations NICs are used for SMB Direct traffics.

The server where I make the example has a Mellanox ConnectX-3 Pro network adapter with two controllers.

Deploy a converged network

Create the virtual switch

First of all, I run a Get-NetworkAdapter to get the network adapters that I want to add to the Switch Embedded Teaming:

Then I create a Switch Embedded Teaming with these both network adapters:

New-VMSwitch -Name CNSwitch -AllowManagementOS $True -NetAdapterName CNA01,CNA02 -EnableEmbeddedTeaming $True

Now I gather virtual switch information with Get-VMSwitch cmdlet to verify that my network adapters are bound to this vSwitch:

Create virtual NICs

Next I create the virtual NICs for management, live-migration, storage and heartbeat. To create vNICs, I use the cmdlet add-VMNetworkAdapter with -ManagementOS parameter. If you don’t use -ManagementOS, you create a vNIC for a virtual machine.

I verify that my vNICs are created:

Now that we have created the vNICs, we have to associate them to the right VLAN ID. To make this configuration, I run the Set-VMNetworkAdapterVLAN cmdlet. I configure the vNIC in access mode in order to they tag packets:

$Nic = Get-VMNetworkAdapter -Name Live-Migration-11 -ManagementOS
Set-VMNetworkAdapterVlan -VMNetworkAdapter $Nic -Access -VlanId 11

$Nic = Get-VMNetworkAdapter -Name Storage01-12 -ManagementOS
Set-VMNetworkAdapterVlan -VMNetworkAdapter $Nic -Access -VlanId 12

$Nic = Get-VMNetworkAdapter -Name Storage02-12 -ManagementOS
Set-VMNetworkAdapterVlan -VMNetworkAdapter $Nic -Access -VlanId 12

$Nic = Get-VMNetworkAdapter -Name Heartbeat-13 -ManagementOS
Set-VMNetworkAdapterVlan -VMNetworkAdapter $Nic -Access -VlanId 13

The management vNIC requires a specific configuration because we want configure the native VLAN on this port. The native VLAN enables to send packets untagged and leave the switch make the tagging when the packet comes into the port. The switch tags the packet with the native VLAN ID. It is really useful especially for deploying your servers with PXE / DHCP. In order to vNIC leaves packet untagged, we have to use the special VID 0.

$Nic = Get-VMNetworkAdapter -Name Management-10 -ManagementOS
Set-VMNetworkAdapterVlan -VMNetworkAdapter $Nic -Access -VlanId 0

Enable RDMA

Now that vNICs are deployed, we can enable RDMA. We have seen that storage and live-migration requires this feature. To enable RDMA on vNICs Storage01-12, Storage02,12 and Live-Migration-11, you can run the following cmdlets:

Get-NetAdapterRDMA -Name *Storage* | Enable-NetAdapterRDMA
Get-NetAdapterRDMA -Name *Live-Migration* | Enable-NetAdapterRDMA

Then I verify if the feature is enabled:

Deal with QoS

Because storage and live-migration are converged with the other traffics, we need to give the priority over the others. If you are using a RoCE (RDMA over Converged Ethernet), you can run the following script (taken from Microsoft):

# Turn on DCB
Install-WindowsFeature Data-Center-Bridging

# Set a policy for SMB-Direct
New-NetQosPolicy "SMB" -NetDirectPortMatchCondition 445 -PriorityValue8021Action 3

# Turn on Flow Control for SMB
Enable-NetQosFlowControl -Priority 3

# Make sure flow control is off for other traffic
Disable-NetQosFlowControl -Priority 0,1,2,4,5,6,7

# Apply policy to the target adapters
Enable-NetAdapterQos -InterfaceAlias "CNA01"
Enable-NetAdapterQos -InterfaceAlias "CNA02"


# Give SMB Direct 50% of the bandwidth minimum
New-NetQosTrafficClass "SMB" -Priority 3 -BandwidthPercentage 50 -Algorithm ETS

Priority Flow Control (PFC), must also be configured in switches. With this script, the SMB traffic has 50% of the bandwidth at least and the other traffic will share the remaining 50%.

Set affinity between a vNIC and a physical NIC

In this example, I have deployed two vNICs dedicated for storage. Because these vNICs are bound to a SET, I am not sure that the storage traffic will be well spread across the two physical NICs. So I create an affinity rule between vNIC and physical NIC. While the physical NIC is online, the associated vNIC will use this specific physical NIC:

Set-VMNetworkAdapterTeamMapping –VMNetworkAdapterName Storage01-12 –ManagementOS –PhysicalNetAdapterName CNA01
Set-VMNetworkAdapterTeamMapping –VMNetworkAdapterName Storage02-12 –ManagementOS –PhysicalNetAdapterName CNA02

If CNA01 fails, the Storage01-12 vNICs will be bound to CNA02 physical NIC. When the CNA01 will be online again, the Storage01-12 vNIC will be reassociated to CNA01.

Configure the IP addresses

Now you can configure the IP Addresses for each vNICs:

New-NetIPAddress -InterfaceAlias "vEthernet (Management-10)" -IPAddress 10.10.0.5 -PrefixLength 24 -Type Unicast
Set-DnsClientServerAddress -InterfaceAlias "vEthernet (Management-10)" -ServerAddresses 10.10.0.20

New-NetIPAddress -InterfaceAlias "vEthernet (Live-Migration-11)" -IPAddress 10.10.11.5 -PrefixLength 24 -Type Unicast
New-NetIPAddress -InterfaceAlias "vEthernet (Storage01-12)" -IPAddress 10.10.12.5 -PrefixLength 24 -Type Unicast
New-NetIPAddress -InterfaceAlias "vEthernet (Storage02-12)" -IPAddress 10.10.12.6 -PrefixLength 24 -Type Unicast
New-NetIPAddress -InterfaceAlias "vEthernet (Heartbeat-13)" -IPAddress 10.10.13.5 -PrefixLength 24 -Type Unicast

The both storage adapter IP addresses belong to the same network. Since Windows Server 2016 we can add two SMB NICs to the same network. It is possible thanks to Simplified SMB MultiChannel feature.

Connect virtual machines

Now that your Hyper-V is configured, you can create a VM and connect it to the virtual switch. All you have to do is to configure the VID and the vSwitch.

Conclusion

With Windows Server 2016, the network convergence is easier to deploy than with Windows Server 2012R2. Network convergence brings you, flexibility, simplicity, a better cable management and quick deployment. Because you need less network adapters, this design reduces the cost of the solution. As we have seen with this example, the network convergence is easy to deploy and can be fully automated with PowerShell. If you have Virtual Machine Manager, you can also make this kind of configuration from the VMM console.

The post How to deploy a converged network with Windows Server 2016 appeared first on Tech-Coffee.

]]>
//www.tech-coffee.net/how-to-deploy-a-converged-network-with-windows-server-2016/feed/ 33 4771
Shared virtual hard disks in Hyper-V 2016 //www.tech-coffee.net/shared-virtual-hard-disks-in-hyper-v-2016/ //www.tech-coffee.net/shared-virtual-hard-disks-in-hyper-v-2016/#comments Mon, 01 Aug 2016 12:52:00 +0000 //www.tech-coffee.net/?p=4703 Microsoft brings a new feature to Hyper-V in Windows Server 2016 called VHD Set. This type of disk enables to share virtual hard disks between several servers to implement guest cluster. In this topic we will see why using VHD Set, and how to implement it. Why using VHD Set instead of shared VHDX As ...

The post Shared virtual hard disks in Hyper-V 2016 appeared first on Tech-Coffee.

]]>
Microsoft brings a new feature to Hyper-V in Windows Server 2016 called VHD Set. This type of disk enables to share virtual hard disks between several servers to implement guest cluster. In this topic we will see why using VHD Set, and how to implement it.

Why using VHD Set instead of shared VHDX

As VHD Set, Shared VHDX enables to share a virtual hard disk between multiple virtual machines. This feature is useful to implement a guest cluster where shared disks are required (as SQL Server AlwaysOn FCI or File Servers). Shared VHDX and VHD Set are great to avoid the use of virtual HBA and virtual SAN to present a LUN to the VMs. They are also necessary if you have implemented a SMB3 based storage solution. However shared VHDX feature as some limitation:

  • Resizing and migrating a shared VHDX is not supported
  • Make a backup or a replica of a shared VHDX is not supported

The VHD Set feature has not these limitations. However, VHD Set is available only for Windows Server 2016 guest operating system. When creating a VHD Set, two files are created:

  • A .avhdx file that contains data. This file is fixed or dynamic;
  • A .vhds file that contains metadata to coordinate information between guest cluster nodes. The size of this file is almost 260KB.

Create a VHD Set

To create a VHD Set, you can use the Graphical User Interface (GUI) or PowerShell cmdlets. From the GUI, open the Hyper-V Manager, select New and then Virtual Disk. As below screenshot, select VHD Set.

Then select the type of disk (fixed or dynamic), the name, the location and the size. By using PowerShell, you can run the below cmdlet:

Below you can find the result of these last two actions:

As you can see, the “blue” VHD Set is fixed and the AVHDX file size is 40GB. The “red” one is dynamic and so AVHDX file will expend its size dynamically.

Add VHD Set to virtual machines

To try VHD Set, I have created two virtual machines called VMFLS01 & VMFLS02. Each VM will be connected to two VHD Sets:

  • Quorum: for the cluster Witness disk
  • Shared: for the data

To mount the shared disk into the VM, edit the VM properties and navigate to a SCSI controller. Then select Shared drive.

Next, specify the location of the VHDS file.

You can also mount the VHDS in VM by using PowerShell:

Add-VMHardDiskDrive -VMName VMFLS01 -Path " c:\ClusterStorage\VMStorage01\SharedDisk\VMFLS_Quorum.vhds" -SupportPersistentReservations
Add-VMHardDiskDrive -VMName VMFLS01 -Path " c:\ClusterStorage\VMStorage01\SharedDisk\VMFLS_Shared.vhds" -SupportPersistentReservations

I have repeated the same steps for the second VM. Once both VMs are connected to the VHD Set, you can start the VM.

Add-VMHardDiskDrive -VMName VMFLS02 -Path " c:\ClusterStorage\VMStorage01\SharedDisk\VMFLS_Quorum.vhds" -SupportPersistentReservations
Add-VMHardDiskDrive -VMName VMFLS02 -Path " c:\ClusterStorage\VMStorage01\SharedDisk\VMFLS_Shared.vhds" -SupportPersistentReservations

Create the guest cluster

Now that both VMs are connected to the shared disk, we can create the cluster. I run the following cmdlets to install required features on each server:

# Install Failover Clustering feature and management tools
install-windowsfeature -Name Failover-Clustering -IncludeManagementTools -ComputerName VMFLS01
install-windowsfeature -Name Failover-Clustering -IncludeManagementTools -ComputerName VMFLS02

Then I execute the following command to make online disks and initialize them:

get-disk |? OperationalStatus -Like "Offline" | Initialize-Disk

Now that disks are initialized, I create a partition on each disk. In the above example, the disk 1 is for Quorum usage and the disk 2 for data usage.

New-Volume -DiskNumber 1 -FileSystem NTFS -FriendlyName Quorum
New-Volume -DiskNumber 2 -FileSystem NTFS -FriendlyName Data

Next I run the following cmdlets to create the cluster:

# Test the nodes to check if they are compliant to be part of a cluster
Test-Cluster VMFLS01,VMFLS02
# Create the cluster
New-Cluster -Name Cluster-FS01 -Node VMFLS01,VMFLS02 -StaticAddress 10.10.0.199

# I rename Cluster Disk 1 to Quorum and Cluster Disk 2 to Data
(Get-ClusterResource |? Name -like "Cluster Disk 1").Name="Quorum"
(Get-ClusterResource |? Name -like "Cluster Disk 2").Name="Data"

# Set the Cluster Quorum to use disk Witness
Set-ClusterQuorum -DiskWitness Quorum

# Set the Data volume to Cluster Shared Volume
Get-ClusterResource -Name Data | Add-ClusterSharedVolume

Once you have finished, you should have something like this in the cluster:

Now I’m able to copy data in the volume:

I can also move the storage to another owner node:

Conclusion

Thanks to VHD Set in Windows Server 2016, I can create easily Guest Cluster without using complex technologies as NPIV, virtual HBA and virtual SAN. Moreover, the resizing, the migrating and the backup is supported when implementing shared disks with VHD Set. It is a friendly feature, so why not using it?

The post Shared virtual hard disks in Hyper-V 2016 appeared first on Tech-Coffee.

]]>
//www.tech-coffee.net/shared-virtual-hard-disks-in-hyper-v-2016/feed/ 27 4703
VM Start Order in Windows Server 2016 //www.tech-coffee.net/vm-start-order-windows-server-2016/ //www.tech-coffee.net/vm-start-order-windows-server-2016/#respond Wed, 18 May 2016 13:34:55 +0000 //www.tech-coffee.net/?p=4629 Windows Server 2016 Technical Preview 5 brings a new feature called VM Start Order. It enables to make dependencies between VMs or groups of VMs to start the server in the good order. Think about a complex service based on multi-tier as Active Directory, Databases, Web Servers and application servers. To start the service, you ...

The post VM Start Order in Windows Server 2016 appeared first on Tech-Coffee.

]]>
Windows Server 2016 Technical Preview 5 brings a new feature called VM Start Order. It enables to make dependencies between VMs or groups of VMs to start the server in the good order. Think about a complex service based on multi-tier as Active Directory, Databases, Web Servers and application servers. To start the service, you should start in this order the domain controllers then databases, application services and to finish web servers. VM Start Order feature enables you to force these dependencies.

Currently this feature can be managed only from PowerShell and for clustered virtual machines and it is available only from Windows Server 2016 Technical Preview 5.

Lab overview

To make this topic, I have deployed a four nodes Hyper-V virtual cluster based on Hyper convergence (Hyper-V and Storage Spaces Direct). The cluster is called lyn-hc01. Then I have created four VMs:

  • ActiveDirectory: this is the domain controller VMs
  • Databases01 & Databases02: these VMs are the SQL Server
  • Application: this is the application VM

In this topic I’ll make the dependencies as below:

So I’ll create two sets called DomainController and Databases. The ActiveDirectory VM will be member of DomainController set and Databases01 & Databases02 VMs will be member of databases set. Then Application will be dependent of Databases set, and Databases will be dependent of ActiveDirectory.

PowerShell cmdlet

To get cmdlet related to VM Start Order, I run the below command.

In PowerShell Failover Cluster module, a cluster group is a resource of the cluster as virtual machines. A set is a group of virtual machine with the same role. Thanks to set, you can make a dependency between a VM and a group of VMs (or between groups of VMs). To manage these set, you can use the following cmdlets:

  • New-ClusterGroupSet: cmdlet to create a set
  • Get-ClusterGroupSet: cmdlet to get information about the set
  • Set-ClusterGroupSet: cmdlet to edit settings of the set
  • Remove-ClusterGroupSet: cmdlet to delete a set
  • Add-ClusterGroupToSet: cmdlet to add a VM to the set
  • Remove-ClusterGroupFromSet: cmdlet to remove a VM from the set

The following cmdlet enables to manage the dependencies between VMs or a set and VM:

  • Add-ClusterGroupDependency: cmdlet to add a dependency
  • Get-ClusterGroupDependency: cmdlet to get existing dependency
  • Remove-ClusterGroupDependency: cmdlet to delete a dependency

The following cmdlet enables to manage the dependencies between two sets:

  • Add-ClusterGroupSetDependency: cmdlet to add a dependency involving two sets
  • Get-ClusterGroupSetDependency: cmdlet to get information about dependency involving two sets
  • Remove-ClusterGroupSetDependency: cmdlet to delete a dependency involving two sets

To get the virtual machine cluster group, you can run the following cmdlet:

Manage the sets

To create the sets, I use the cmdlet New-ClusterGroupSet as below:

$Cim = New-CimSession lyn-hc01
New-ClusterGroupSet -Name DomainController -CimSession $Cim
New-ClusterGroupSet -Name Databases -CimSession $Cim

Then I add member to group by using the following cmdlet:

$Cim = New-CimSession lyn-hc01
Add-ClusterGroupToSet -Name Databases -Group Databases01 -CimSession $Cim
Add-ClusterGroupToSet -Name Databases -Group Databases02 -CimSession $Cim
Add-ClusterGroupToSet -Name DomainController -Group ActiveDirectory -CimSession $Cim

In the above screenshot, you can see VMs that belong to a set in the property ProviderNames.

If you want remove a VM from a set, you have just to run the following cmdlets:

$Cim = New-CimSession lyn-hc01
Remove-ClusterGroupFromSet -Name Databases -Group Databases01 -CimSession $Cim

Manage dependencies between a VM and a set

Now that sets are created and VMs belong to them, we can create the dependencies. First I create the dependency between the Application VM and the set Databases:

$Cim = New-CimSession lyn-hc01
Add-ClusterGroupDependency -Group Application -ProviderSet Databases -CimSession $Cim

I have made a video to show you that it’s working:

 

 

 

Manage dependencies between sets

Now we have to make the dependency between the set databases and DomainController. In this way, when Application VM will start, the domain controller will be started first. To create the dependency, I run the following cmdlets:

I have made a second video to show you that all is working:

 

 

 

 

Have fun with VM Start Order J

The post VM Start Order in Windows Server 2016 appeared first on Tech-Coffee.

]]>
//www.tech-coffee.net/vm-start-order-windows-server-2016/feed/ 0 4629
WEBINAR: Troubleshooting Microsoft Hyper-V – 4 Tales from the Trenches //www.tech-coffee.net/4498-2/ //www.tech-coffee.net/4498-2/#respond Wed, 17 Feb 2016 09:00:36 +0000 //www.tech-coffee.net/?p=4498 If you’ve been in IT for any length of time, you’ve likely gotten that phone call that you never want to get: Everything is broken! It’s the end of the world! The sky is falling! Your Hyper-V Host or Cluster is broken and you are the person to fix it! Where do you start? What are ...

The post WEBINAR: Troubleshooting Microsoft Hyper-V – 4 Tales from the Trenches appeared first on Tech-Coffee.

]]>
If you’ve been in IT for any length of time, you’ve likely gotten that phone call that you never want to get: Everything is broken! It’s the end of the world! The sky is falling! Your Hyper-V Host or Cluster is broken and you are the person to fix it!

Where do you start?

What are the most common things to look for?

These are exactly some of the questions we’ll be covering in our next webinar, on February 25th, 2016 at 4pm CET / 10am EST!

Microsoft Cloud and Datacenter Management MVPs Didier Van Hoye and Andy Syrewicze will be answering these questions, and will also be sharing some tales from the trenches.

In this webinar you’ll learn Hyper-V troubleshooting basics and solutions to common problems. You’ll also see some Hyper-V oddities that were encountered by Didier and Andy and how these issues were ultimately resolved and with what tools.

It’s one thing to setup and run a virtualization solution. It’s another thing to fix it when it’s broken.

Sign up now to join us on February 25th, 2016 at 4pm CET / 10am EST (30-45mins + live Q&A!) for some tales from the trenches!

Sign up here:

The post WEBINAR: Troubleshooting Microsoft Hyper-V – 4 Tales from the Trenches appeared first on Tech-Coffee.

]]>
//www.tech-coffee.net/4498-2/feed/ 0 4498
WEBINAR: Scripting & Automation in Hyper-V without SCVMM //www.tech-coffee.net/webinar-scripting-automation-in-hyper-v-without-scvmm/ //www.tech-coffee.net/webinar-scripting-automation-in-hyper-v-without-scvmm/#respond Mon, 30 Nov 2015 19:40:51 +0000 //www.tech-coffee.net/?p=4286 System Center Virtual Machine Manager (SCVMM) provides some great automation benefits for those organizations that can afford the hefty price tag. However, if SCVMM isn’t a cost effective solution for your business, what are you to do? While VMM certainly makes automation much easier, you can achieve a good level of automation with PowerShell and ...

The post WEBINAR: Scripting & Automation in Hyper-V without SCVMM appeared first on Tech-Coffee.

]]>
System Center Virtual Machine Manager (SCVMM) provides some great automation benefits for those organizations that can afford the hefty price tag. However, if SCVMM isn’t a cost effective solution for your business, what are you to do? While VMM certainly makes automation much easier, you can achieve a good level of automation with PowerShell and the applicable PowerShell modules for Hyper-V, clustering, storage, and more.

Are you looking to get grips with automation and scripting?

Join Thomas Maurer, Microsoft Datacenter and Cloud Management MVP, who will use this webinar to show you how to achieve automation in your Hyper-V environments, even if you don’t have SCVMM.

Remember, any task you have to do more than once, should be automated. Bring some sanity to your virtual environment by adding some scripting and automation know-how to your toolbox.

We’re live on Thursday, 10th December 2015 at 10am EST / 4PM CET (30-45mins + live Q&A!)

webinar-Join-button-scripting-automation

The post WEBINAR: Scripting & Automation in Hyper-V without SCVMM appeared first on Tech-Coffee.

]]>
//www.tech-coffee.net/webinar-scripting-automation-in-hyper-v-without-scvmm/feed/ 0 4286
Why using ReFS with Hyper-V 2016 //www.tech-coffee.net/why-using-refs-with-hyper-v-2016/ //www.tech-coffee.net/why-using-refs-with-hyper-v-2016/#comments Wed, 21 Oct 2015 11:02:36 +0000 //www.tech-coffee.net/?p=3893 Resilient File System (ReFS) is a new file system which has been released with Windows Server 2012. The ReFS is designed to increase the integrity, the availability the scalability and the Proactive Error Correction. In Windows Server 2012 ReFS was not much used because it lacked features compared NTFS (No Disk Quotas, no compression, no ...

The post Why using ReFS with Hyper-V 2016 appeared first on Tech-Coffee.

]]>
Resilient File System (ReFS) is a new file system which has been released with Windows Server 2012. The ReFS is designed to increase the integrity, the availability the scalability and the Proactive Error Correction. In Windows Server 2012 ReFS was not much used because it lacked features compared NTFS (No Disk Quotas, no compression, no EFS and so on). But in Windows Server 2016, ReFS brings accelerated VHDX operations. It enables to create fixed VHDX almost instantly. So in Windows Server 2016, it could be interesting to store VMs on a ReFS volume.

Moreover ReFS comes with some integrity and protection against corruption. ReFS doesn’t need check disk as we execute on NTFS partition. So when a Cluster Shared Volume is formatted by using ReFS, you’ll no longer be warn to run a CHKDSK on the volume.

Fixed VHDX Creation

On My Hyper-V Host I have two identical SSD (Crucial MX 200): one formatted by using NTFS file system and another with ReFS file system. So I create three fixed VHDX: 10GB, 50GB, and 90GB. Below you can find the time measure of the creation of a fixed VHDX on NTFS partition:

  • 10GB: 22 seconds
  • 50GB: 106 seconds
  • 90GB: 203 seconds

Now I make the same test on the ReFS partition:

  • 10GB: 1 second
  • 50GB: 1 second
  • 90GB: 1 second

Just for laughs, I create a fixed VHDX on the ReFS partition of 500GB. I need just a second.

So now you can create fixed VHDX almost instantly compared to a standard NTFS partition. Pretty cool no?

About Checkpoint

In Windows Server 2012 R2, checkpoints are not supported in production environment. But who has not used checkpoint on his production VM before trying something? If you have already used checkpoints, you should know that we have to limit the checkpoint usage in a small time interval. Otherwise, the checkpoint grows and it can be very difficult to merge the checkpoint with the VM.

Checkpoints benefit the ReFS accelerated VHDX operations because the merging process happens without data being copied.

Thanks to the ReFS Accelerated VHDX operations, I think that all volume storage to store VM in Windows Server 2016 should be formatted by using ReFS. It really improve the efficiency to create fixed VHDX and to merge checkpoint.

The post Why using ReFS with Hyper-V 2016 appeared first on Tech-Coffee.

]]>
//www.tech-coffee.net/why-using-refs-with-hyper-v-2016/feed/ 8 3893
Working with PowerShell Direct //www.tech-coffee.net/working-with-powershell-direct/ //www.tech-coffee.net/working-with-powershell-direct/#comments Tue, 15 Sep 2015 11:36:36 +0000 //www.tech-coffee.net/?p=3828 PowerShell Direct is a new feature provided by the next release of Windows Server that enables to run PowerShell commands from Hyper-V hosts in a virtual machine. It works without the network and so without WinRM or other features. This is great when a firewall is misconfigured or when a network issue occurs and avoids ...

The post Working with PowerShell Direct appeared first on Tech-Coffee.

]]>
PowerShell Direct is a new feature provided by the next release of Windows Server that enables to run PowerShell commands from Hyper-V hosts in a virtual machine. It works without the network and so without WinRM or other features. This is great when a firewall is misconfigured or when a network issue occurs and avoids you to manage your server. In this topic I’ll configure the network configuration on a Nano Server that is not reachable.

I have deployed a Nano Server from the Technical Preview 3. In this version, network information can be displayed as below.

Before PowerShell direct, we ran Enter-PSSession cmdlet with ComputerName parameter to execute commands on a remote server. On the below screenshot, I’m connecting to my Nano Server called Nano01 (IP: 10.10.0.220). Note that credentials are required to open a remote PowerShell session.

Next I modify the address IP of Nano01 to make it unreachable from the network.

I run a ping and as you can see below, Nano01 is unreachable.

To finish I open the Nano01 console to verify the “bad” address IP.

Without PowerShell direct, it would be really difficult to regain control on your Nano Server because there is no shell even if you plug a screen on your server. But fortunately, we have PowerShell Direct.

PowerShell Direct

In the next release of Windows Server, the Enter-PSSession cmdlet has a new parameter called VMName. So from your Hyper-V host you can run Enter-PSSession -VMName <VM Name> -Credential Get-Credential (you can also replace -VMName parameter by -VMGuid and specify the VM Guid). On the below screenshot, you can see that I’m connected to Nano01 with PowerShell direct. Note that credentials are also mandatory to open a remote PowerShell session though PowerShell Direct.

Then I run again a netsh command to change the IP Address of Nano01.

The Invoke-Command cmdlet has also the VMName parameter to run script blocks through PowerShell direct (VMGuid parameter is also available). In the below screenshot I used Invoke-Command cmdlet to change the DNS Server of Nano01.

I try again a ping to verify if I can connect to Nano01. Oh yeah it’s working J.

The post Working with PowerShell Direct appeared first on Tech-Coffee.

]]>
//www.tech-coffee.net/working-with-powershell-direct/feed/ 2 3828
New Altaro Webinar: What’s news in Hyper-V vNext //www.tech-coffee.net/new-altaro-webinar-whats-news-in-hyper-v-vnext/ //www.tech-coffee.net/new-altaro-webinar-whats-news-in-hyper-v-vnext/#respond Mon, 23 Mar 2015 12:48:54 +0000 //www.tech-coffee.net/?p=3287 Altaro organizes a new Webinar about Hyper-V in vNext Windows Server version and new features: We’re warming up for the release of Hyper-V vNext and we’ve invited Microsoft Hyper-V MVP, Aidan Finn and Microsoft Sr. Technical Evangelist Rick Claus to take you through what’s coming up in a new Altaro webinar, hosted by our very ...

The post New Altaro Webinar: What’s news in Hyper-V vNext appeared first on Tech-Coffee.

]]>
Altaro organizes a new Webinar about Hyper-V in vNext Windows Server version and new features:

We’re warming up for the release of Hyper-V vNext and we’ve invited Microsoft Hyper-V MVP, Aidan Finn and Microsoft Sr. Technical Evangelist Rick Claus to take you through what’s coming up in a new Altaro webinar, hosted by our very own MVP Andy Syrewicze!

Looking to get a good view of what’s coming up? Do you have Hyper-V vNext questions you’d like to ask Aidan or Rick directly? Here’s your chance! We’re live on Thursday, 26th March 2015 at 4PM CET  / 11am EDT / 8am PDT (30-45mins + live Q&A!)

If you want register for the webinar, click on the below link 🙂

Join our Hyper-V vNext Webinar

The post New Altaro Webinar: What’s news in Hyper-V vNext appeared first on Tech-Coffee.

]]> //www.tech-coffee.net/new-altaro-webinar-whats-news-in-hyper-v-vnext/feed/ 0 3287