Tag: VHD

Nano Server Image Builder

Create a Nano Server using the Nano Server Image Builder

Last week Microsoft released Windows Server 2016 to the public and at the weekend Microsoft released the Nano Server Image Builder. I already wrote a few blog posts how you can create new Nano Server Images using PowerShell. The Nano Server Image Builder is a UI based wizard to create new Nano Server Images. The Nano Server Image Builder helps you create a custom Nano Server image and bootable USB media with a graphical interface. Based on the inputs you provide, it generates images for deployment and it also creates reusable PowerShell scripts that allow you to create installations of Nano Server.

The Nano Server Image Builder can help you with the following tasks:

  • Graphical UI to create Nano Server Images
  • Adding drivers
  • Choose Windows Server Edition
  • Adding roles and features
  • Adding drivers
  • Adding updates
  • Configuration of Network Settings
  • Configuration of Domain settings
  • Set Remoting Options
  • Create an ISO file to boot from DVD or BMC (remote connection like HP ILO)

First download and install the Windows Assessment and Deployment Kit (ADK) and the Nano Server Image Builder.

I will not go trough all the options but here is just quickly how you can use it.

First create a new Nano Server Image (this can be a VHD, VHDX or WIM file. If you want to use it on a USB drive or ISO save it as a WIM file)

Nano Server Image Builder

Make sure you have prepared everything like the Windows Server 2016 files and drivers etc

Prepapre Nano Server Files

Select the Windows Server 2016 source

Nano Server Sources

Set more options, choose packages (roles and feature), drivers and more.

Nano Server Packages and Drivers

You can also configure some advanced options

Nano Server Image Builder Advanced Configuration

You can now create the Nano Server Image. The Nano Server Image Builder will also show you the PowerShell command to create more Nano Servers.

Nano Server Image Builder PowerShell Creation

You can also use this tool to create a bootable USB drive or ISO using an existing Nano Server Image.

Select the Nano Server Image you have already created

Nano Server Image Builder WIM file

As an option you can also create a ISO file

Nano Server Image ISO

 

You can now boot from USB drive or ISO and you can get the following WinPE Image to boot and this copies the Nano Server Image to the server

Nano Server WinPe

If you want to know more, check out the blog post from Scott Johnson (Microsoft): Introducing the Nano Server Image Builder



New-NanoServerImage

How to create a Nano Server Image using PowerShell

Last week Microsoft released Windows Server 2016 with the first GA release of Nano Server. A couple of months back I already wrote a blog post how you can create a new Nano Server Image in Technical Preview 4. This post is an updated version of that this post using Windows Server 2016 GA. In this post I will quickly show you how you can create a new VHD, VHDX or WIM file with your Nano Server configuration.

This is the PowerShell option, you can also use the Nano Server Image Builder.

First you have to download the latest Windows Server 2016 ISO file.

NanoServer Folder

If you open the Windows Server 2016 ISO file you can see a folder called “NanoServer” on the medium. This folder includes:

  • NanoServer.wim – This is the Nano Server Image file
  • Packages – The Package folder includes the Nano Server Packages, Windows Roles and Features and some basic drivers
  • NanoServerImageGenerator – In this folder you can find the Nano Server Image Generator PowerShell Module

I usually create a folder on my C:\NanoServer to store all the things I need, which makes things a little simpler.

Create Nano Server Image Folder

  • Base – This is a temporary folder where the images get mounted while updating or creating new images
  • Drivers – This is the folder where I copy all the drivers for a physical image
  • Files – This is the unpacked Windows Server 2016 ISO image (including, the sources folder, NanoServer folder, support, boot and efi folder as well as the setup.exe file)
  • Images – In this folder I store all the new created images
  • Updates – In this folder I store the Windows Server 2016 Update cumulative updates (.cab files)
  • XMLs – In this folder I store unattend.xml files if I need to do a extended configuration.

Of course you don’t have to use this folder structure, but it makes things easier.

If you have a look at the Packages folder you can find all the available packages for Nano Server:

Nano Server Packages

A new Nano Server Image can be created using the New-NanoServerImage PowerShell cmdlet. This will create a new Nano Server Image in a VHDX including the VM Guest drivers and nothing more.

New-NanoServerImage

# Change Working Directory
cd C:\NanoServer
 
# Import Module
Import-Module .\NanoServerImageGenerator.psm1
 
# Create Nano Server Image VHDX
New-NanoServerImage -MediaPath .\Files -BasePath .\Base -TargetPath .\Images\NanoVMGA.vhdx -MaxSize 20GB -DeploymentType Guest -Edition Datacenter -ComputerName "Nano01"
  • MediaPath – The location with the Windows Server 2016 files
  • BasePath – Temporary folder to mount the WIM file
  • TargetPath – Where the new Image file gets stored. You can create a .wim, .vhd or .vhdx file
    • .vhd creates a Image for a Generation 1 VM (BIOS boot)
    • .vhdx create a Image for a Generation 2 VM (UEFI boot)
  • DeploymentType allows you to choose between Guest and Host
    • Guest creates a Virtual Machine
    • Host creates a Physical Image
  • Edition can be Standard or Datacenter
  • ComputerName adds the server name of the Nano Server
  • MaxSize changes the Partition size, if you are not using this parameter it will create a default partition of 4GB

Hyper-V NanoServer VHDX

You can now copy the VHDX file from the Images folder, attach this to a new Hyper-V virtual machine and boot.

This will show the Nano Server recovery console:

Hyper-V Nano Server Console

There are more parameters to add roles and features, updates, drivers and additional configuration like IP addresses and more

For example if you want to add some updates to the Nano Server Image you can use the following cmdlet:

# Create Nano Server Image VHD with updates
New-NanoServerImage -MediaPath .\Files -BasePath .\Base -TargetPath .\Images\NanoVM.vhd -MaxSize 20GB -DeploymentType Guest -Edition Datacenter -ComputerName "Nano01" -ServicingPackagePath ".\Updates\Windows10.0-KB3176936-x64.cab", ".\Updates\Windows10.0-KB3176936-x64.cab"

To add a fixed IP address you can for example use the following cmdlet:

# Create Nano Server with IP address
New-NanoServerImage -MediaPath .\Files -BasePath .\Base -TargetPath .\Images\NanoVMSetupUI.vhdx -MaxSize 20GB -DeploymentType Guest -Edition Datacenter -ComputerName "Nano01" -Ipv4Address "172.21.22.101" -Ipv4SubnetMask "255.255.255.0" -Ipv4Gateway "172.21.22.1" -Ipv4Dns "8.8.8.8"

If you have some advanced deployment you can use for example the following thing, which helps you to set different configuration options. This example here is designed for a physical Hyper-V host

# Nano Server Packages for Image
$NanoPackages = "Microsoft-NanoServer-Compute-Package",
"Microsoft-NanoServer-DCB-Package",
"Microsoft-NanoServer-DSC-Package",
"Microsoft-NanoServer-FailoverCluster-Package",
"Microsoft-NanoServer-OEM-Drivers-Package",
"Microsoft-NanoServer-Storage-Package"
 
$ServicingPackagePath = ".\Updates\Windows10.0-KB3176936-x64.cab", ".\Updates\Windows10.0-KB3176936-x64.cab"
 
$UnattanedXML = ".\XMLs\unattend.xml"
 
$MaxSize = 20GB
 
$Edition = "Datacenter"
 
$VHDXName = ".\Images\NanoHost01.vhdx"
 
$DeploymentType = "Host"
 
$DriverPath = ".\Drivers"
 
$MediaPath = ".\Files"
 
$BasePath = ".\Base"
 
$ComputerName = "Nano01"
$DomainName = "thomasmaurer.ch"
 
#IP Configuration if not DHCP
#$Ipv4Address = "172.21.22.101"
#$Ipv4SubnetMask = "255.255.255.0"
#$Ipv4Gateway = "172.21.22.1"
#$Ipv4Dns = "8.8.8.8"
# Nano Image
New-NanoServerImage -MediaPath $MediaPath -BasePath $BasePath -TargetPath $VHDXName -DriversPath $DriverPath -DeploymentType $DeploymentType -Edition $Edition -Packages $NanoPackages -MaxSize $MaxSize -ServicingPackagePath $ServicingPackagePath -UnattendPath $UnattanedXML -ComputerName $ComputerName -DomainName $DomainName

You can for example use this VHDX file now to create a boot from VHDX scenario:

# Boot from VHDX
Mount-VHD C:\VHDX\NanoHost01.vhdx -Passthru | get-disk | Get-Partition | where Size -GE 3GB | Set-Partition -NewDriveLetter V
 
# Set Boot Partition
cd v:\windows\system32
bcdboot v:\windows
 
# Unmounted
Get-VHD C:\VHDX\NanoHost01.vhdx | Dismount-VHD

I hope this helps you to get started with Nano Server in Windows Server 2016. I also prepared a blog post how you can create a Nano Server Image using the Nano Server Image Builder tool.



unatted xml file for VM

Add unattend.xml to VHDX File for VM automation

If you for example don’t have System Center Virtual Machine Manager or another tool to create Virtual Machine Templates and automate the deployment, you can also do this using Sysprep, PowerShell and an unattend.xml file to automate or simplify the Virtual Machine creation process. In other blog posts I already wrote how you can sysprep Virtual Machines or how you can create Hyper-V Virtual Machines using PowerShell. In this post I will show you how you can add an unattend.xml file to your VHD or VHDX so your virtual machine gets some default settings like regional information.

Here we have a basic unattend.xml file. If you want to enhance it, or create your own, you can also use the Windows ADK.

To use this unattend.xml you first have to sysprep a virtual machine and create a sysprep VHD file. After that you can mount the VHDX file and insert the unattend.xml file to the VHD. Copy the unattend.xml file to the following location: D:\Windows\Panther (in my case the VHD was mounted as D drive).

You can mount the VHDX using the UI or PowerShell:

 
Mount-VHD .\VHDFile.vhdx
 
Copy-Item .\unattend.xml -destination D:\Windows\Panther\
 
Dismount-VHD .\VHDFile.vhdx

There are more paths as well. You can check out the Windows Setup Automation Overview on TechNet where you can see all the possible paths to place the unattend.xml file.



sysprep.exe vm mode

Windows Sysprep for Virtual Machines

For using the same system image for different virtual machines or physical computer, Microsoft created a tool called sysprep.exe. This blog post covers Most people should be already familiar with that tool. If not here is the description:

Sysprep prepares a Windows installation (Windows client and Windows Server) for imaging, allowing you to capture a customized installation. Sysprep removes PC-specific information from a Windows installation, “generalizing” the installation so it can be reused on different PCs. With Sysprep you can configre the PC to boot to audit mode, where you can make additional changes or updates to your image. Or, you can configure Windows to boot to the Out-of-Box Experience (OOBE).

This is great so you can sysprep a virtual machine copy the VHD or VHDX file and use it for the first boot of different VMs. In Windows Server 2012 and Windows 8, Microsoft added an addition to sysprep called the mode switch “/mode:vm”. The mode:vm switch allows you to identify the Windows as a Virtual Machine and sysprep.exe will generalize a Virtual Hard Disk (VHD or VHDX) so that you can deploy the VHD as a VHD on the same Virtual Machine (VM) or hypervisor. You must deploy the VHD on a Virtual Machine (VM) or hypervisor with the same hardware profile. For example, if you created VHD in Microsoft Hyper-V, you can only deploy your VHD to Microsoft Hyper-V VMs with a matching hardware profile, and you can only run VM mode from inside a VM.

This will boost the performance and time for the virtual machine for the first startup and installation. This also work of course with virtual machines running on other hypervisors such as VMware or Xen.

Run the following command inside the Virtual Machine (You find sysprep.exe in the  C:\Windows\System32\Sysprep folder):

 
sysprep.exe /oobe /generalize /shutdown /mode:vm

Now you can copy the VHD or VHDX file from that virtual machine and use it for other VMs. Also check out my post about automating VM creation using an unattend.xml file.



Create Nano Server VHDX

How to create a Nano Server Image

Last week Microsoft released Windows Server 2016 Technical Preview 4, which includes a lot of changes and fixes. Since I had some presentations on Nano Server in the past weeks I will quickly cover how you can create a Nano Server VHD or VHDX file.

If you download the ISO with Windows Server 2016 ISO you and mount this file you can see a folder called Nano Server. In this folder you can find the NanoServer.wim file and some PowerShell scripts as well as a folder called Packages, which includes the features, roles, driver and agents for Nano Server.

I usually copy all the PowerShell scripts (and the new module) to C:\NanoServer, even if you don’t have to, but it makes it easier for me.

Nano Server on Windows Server 2016

If you have a look at the Packages folder you can find all the available packages for Nano Server:

Nano Server Packages

Now to create a new Nano Server VHD file you can use the following steps:

First go to the directory where you stored the PowerShell files, for me this would be C:\NanoServer

Import the PowerShell Module and use the command to create a new Nano Server Image

Create Nano Server VHDX

# Change Working Directory
cd C:\NanoServer
 
# Import Module
Import-Module .\NanoServerImageGenerator.psm1
 
# Create new Nano Server Image
New-NanoServerImage -MediaPath D:\ -BasePath .\Base -TargetPath '.\NanoImage\NanoVM.vhd' -GuestDrivers -EnableRemoteManagementPort

This will create a new Nano Server Image including the VM Guest drivers and nothing more. The D:\ drive still is the Windows Server Image (ISO), the Base folder is used to mount and create the temporary files and the TargetPath is where you can find the finished VHDX file. You can now create a new Virtual Machine using this VHD file.

Nano Server Hyper-V Console

Of course you can also create Nano Server including other roles:

Nano Server Container Host:

# Create new Nano Server Image
New-NanoServerImage -MediaPath D:\ -BasePath .\Base -TargetPath '.\NanoImage\NanoConHost.vhd' -EnableRemoteManagementPort -GuestDrivers  -ComputerName NanoConHost -Containers -Compute -MaxSize 60GB -ReverseForwarders

Nano Server for Apps and using a  fix IP Address and Computername

# Set IP of Nano Server
$ip = "172.91.91.12"
# Create Nano Server Image
New-NanoServerImage -MediaPath D:\ -BasePath .\Base -TargetPath '.\NanoImage\NanoDev.vhd' -GuestDrivers -EnableRemoteManagementPort -ReverseForwarders -Ipv4Address $ip -Ipv4SubnetMask 255.255.255.0 -ComputerName NanoDev -InterfaceNameOrIndex Ethernet

If you want to try Nano Server running in Microsoft Azure, you can also do this:

Nano Server on Azure

 



Windows Server 2012 R2 Private CLoud Storage and Virtualization

Windows Server 2012 R2 Private Cloud Virtualization and Storage Poster and Mini-Posters

Yesterday Microsoft released the Windows Server 2012 R2 Private Cloud Virtualization and Storage Poster and Mini-Posters. This includes overviews over Hyper-V, Failover Clustering, Scale-Out File Server, Storage Spaces and much more. These posters provide a visual reference for understanding key private cloud storage and virtualization technologies in Windows Server 2012 R2. They focus on understanding storage architecture, virtual hard disks, cluster shared volumes, scale-out file servers, storage spaces, data deduplication, Hyper-V, Failover Clustering, and virtual hard disk sharing.

Bedsides the overview poster, Microsoft Includes the following Mini-Posters:

  • Virtual Hard Disk and Cluster Shared Volumes Mini Poster
  • Virtual Hard Disk Sharing Mini Poster
  • Understanding Storage Architecture Mini Poster
  • Storage Spaces and Deduplication Mini Poster
  • Scale-Out and SMB Mini Poster
  • Hyper-V and Failover Clustering Mini Poster

You can get the posters from the Microsoft download page.



Export Templates from Virtual Machine Manager Settings

Export and Import Virtual Machine Manager Templates

If you are working with System Center Virtual Machine Manager and you want to export and import your existing VM or Service Templates. I have a customer scenario where we have two VMM installations. They are using System Center Virtual Machine Manager, Orchestrator, Serivce Manager to deploy new customer environments for their premium SaaS (Software as a Service) hosting solution where they deploy Lync, Exchange and SharePoint fully automated. Here we have a development environment where they test new System Center Orchestrator Runbooks and new Templates in Virtual Machine Manager. After they have a working RunBook with working Templates they export the templates from the dev VMM and import them in the production environment.
Because I was surprise how great this works and I think not a lot of people know about this feature, I created this short step-by-step guide.

Export Templates from Virtual Machine Manager

First select the Templates you want to export and click on the Export button on the Ribbon bar. You can also do a multiple select to export multiple templates.

Export Templates from Virtual Machine Manager

You can than configure the export, with a location, password.

Export Templates from Virtual Machine Manager Settings

 

You can also select what physical resources which should be exported with the template. For example if you are using the same VHD or VHDX for multiple templates you may want to export this resource only once to save some space.

Export Templates from Virtual Machine Manager physical resources

The export will look kind of like this. The XML files are the templates with the configurations, and in the folders are the physical resources like VHDs, XMLs or other stuff.

Exported Templates from Virtual Machine Manager

Import Templates in Virtual Machine Manager

To import a template just select the exported XML file.

Import Templates in Virtual Machine Manager

You can change or setup the resource of the template, for example you can select an already existing VHD from your Library or an already existing Run As account.

Import Templates in Virtual Machine Manager resources

And you can set the location for the new imported resources (VHDs,…)

Import Templates in Virtual Machine Manager resource location

I hope this shows you how easy an export and import of a Service or VM Template from System Center Virtual Machine Manager is. I like especially how SCVMM handles the additional resources, so you don’t have to import the same VHD every time and you can change Run As accounts very easily.

 

 



Hyper-V VHDX Format Specification v1.00

Windows Server 2012 Logo

Yesterday I posted a blog post about the new recommendations about Virtual Disks files in Hyper-V called VHD and VHDX.

Today I saw a tweet from Niklas Akerlund who posted a link to the new VHDX Format Specification v1.00.

This specification describes the VHDX virtual hard disk format that provides a disk-in-a-file abstraction.  This specification assumes that you are familiar with hard disk technologies, including how hard disks interface with the operating system or a virtual machine and understand how data is accessed and laid out on the physical medium. This specification is released under the Microsoft Open Source Promise (OSP) initiative to help guide development of VHDX virtual hard disk format implementations that are compatible with those provided by Microsoft.

Download: Hyper-V VHDX Format Specification v1.00

 

VHDX is the new format which is currently supported by Windows 8 and Windows Server 2012.



Windows Server 2012 Hyper-V: Virtual Disk VHD & VHDX recommendations

Windows Server 2012 Logo

In the new released Performance Tuning Guidelines for Windows Server 2012 you can find a lot of tuning information for Windows Server 2012 Hyper-V. One important part is the Virtual Disk chapter which is all about the VHD and the new VHDX format.

The basic key takeaways are:

  • Use VHDX every time
  • Use Dynamic VHDX

The VHDX format:

VHDX is a new virtual hard disk format introduced in Windows Server 2012, which allows you to create resilient high-performance virtual disks up to 64 terabytes. Benefits of this format include:

  • Support for virtual hard disk storage capacity of up to 64 terabytes.
  • Protection against data corruption during power failures by logging updates to the VHDX metadata structures.
  • Ability to store custom metadata about a file, which a user might want to record, such as operating system version or patches applied.

The VHDX format also provides the following performance benefits (each of these is detailed later in this guide):

  • Improved alignment of the virtual hard disk format to work well on large sector disks.
  • Larger block sizes for dynamic and differential disks, which allows these disks to attune to the needs of the workload.
  • 4 KB logical sector virtual disk that allows for increased performance when used by applications and workloads that are designed for 4 KB sectors.
  • Efficiency in representing data, which results in smaller file size and allows the underlying physical storage device to reclaim unused space. (Trim requires trim-compatible hardware.)

When you upgrade to Windows Server 2012, we recommend that you convert all VHD files to the VHDX format due to these benefits. The only scenario where it would make sense to keep the files in the VHD format is when a virtual machine has the potential to be moved to a previous release of the Windows Server operating system that supports Hyper-V.

VHD File Type

The following recommendations should be taken into consideration with regards to selecting a VHD file type:

  • When using the VHD format, we recommend that you use the fixed type because it has better resiliency and performance characteristics compared to the other VHD file types.
  • When using the VHDX format, we recommend that you use the dynamic type because it offers resiliency guarantees in addition to space savings that are associated with allocating space only when there is a need to do so.
  • The fixed type is also recommended, irrespective of the format, when the storage on the hosting volume is not actively monitored to ensure that sufficient disk space is present when expanding the VHD file at run time.
  • Snapshots of a virtual machine create a differencing VHD to store Writes to the disks. Having only a few snapshots can elevate the CPU usage of storage I/Os, but might not noticeably affect performance except in highly I/O-intensive server workloads. However, having a large chain of snapshots can noticeably affect performance because reading from the VHD can require checking for the requested blocks in many differencing VHDs. Keeping snapshot chains short is important for maintaining good disk I/O performance.

For more information checkout the Performance Tuning Guidelines for Windows Server 2012.

And check out my other post about VHD and VHDX for Hyper-V:

Update 1:

My Virtual Machine MVP colleague Carsten Rachfahl just told me that now also IDE devices can use the TRIM function for VHDX files. That means that VHDX on SCSI or IDE controller as well as pass-through disks support TRIM. The only thing which is required is trim-compatible hardware.

Update 2:

Even the GUI in Windows Server 2012 and Windows 8 recommend Fixed size for VHDs and Dynamic expanding for VHDX.

I have now server customer environment running in products for a couple of months and all are using the new Dynamic Expanding VHDX format. No problems and performance issues at all. Dynamic Expanding VHDX disks are even running faster than Fixed Size VHD files.

 



Virtual Machine Servicing Tool 2012 released

VHDX

In July Microsoft released the beta of the Virtual Machine Servicing Tool 2012  and two weeks ago Microsoft released the final of  the Virtual Machine Servicing Tool 2012 (VMST 2012). I already did a post how you can update offline VHDs via Virtual machine Servicing Tool.

Virtual Machine Servicing Tool 2012 streamlines the process of keeping your offline virtual machines, templates and VHDs up-to-date with the latest operating system and application updates, without introducing vulnerabilities into your IT infrastructure. VMST 2012 helps you effectively manage the workflow of updating your offline virtual machines according to their individual needs.

Using features in VMST 2012, customers can service:

  • Offline virtual machines in a SCVMM library.
  • Stopped and saved state virtual machines on a host.
  • Virtual machine templates.
  • Offline virtual hard disks in a SCVMM library by injecting update packages.

VMST 2012 works seamlessly with other Microsoft technologies.

VMST 2012 is designed to work with Microsoft® System Center 2012 – Virtual Machine Manager (VMM) and with the following technologies:

  • Windows Server Update Services (WSUS) WSUS 3.0 SP2.
  • System Center 2012 Configuration Manager.

You can find the Virtual Machine Servicing Tool 2012 in the Microsoft Download Center.