My first book is published! (VMM 2016 Cookbook)

My first book that I have been working day and night on for the last four months is published and globally available! The System Center Virtual Machine Manager 2016 Cookbook (English, 575 pages) includes multiple tips, tricks and techniques to help you make the perfect VMM fabric (see What this book covers  section at the bottom of this post for details)

I have done a complete makeover of the previous edition and,therefore, we have the  chapters written from the scratch, plenty of new recipes and revised old ones to meet changes in VMM 2016.  This book is essentially intended to system engineers, solution architects, administrators and anyone who want to learn and master Virtual Machine Manager 2016 (however, since we have two channels (LTSB/SAC), you will also find references to the latest VMM 1801 release in the semi-annual channel).

The book is available in paperback and ebook formats at Amazon and Packt

Please don’t forget to write your feedback/review on Amazon.

Get the ebook for free! 

I am happy to be giving away 10 copies of the ebook in collaboration with Altaro Software! If you want to get it for free, follow these steps:

  • Download Altaro VM Backup using a business email address
  • Install Altaro VM Backup and add at least 1 virtual machine
  • Send a screenshot of the main dashboard view of your running Altaro VM Backup to Make sure that the added VM/s is visible in the screenshot.

The first 10 valid entries, will get a copy of my ebook!


I am grateful to all of those with whom I have had the pleasure to work during this project. This book would not be possible without Packt team who found me and offered to take up the writing. I say thank you to Devika Battike, Manish Shanbhag, Heramb Bhavsar and Prateek Bharadwaj for supporting and helping me along the way.

A special thank goes to Edvaldo Alessandro Cardoso, an author of two previous editions, for an active participation and for being a technical reviewer together with Tomica Kaniski. I could not have finished this edition without your help.

In addition, I wish to mention the Microsoft team for helping to make this book as accurate as possible, in particular: Steven Ekren, Elden Christensen Sai Prasanna Vudataneni, Krupesh Dhruva and Sonal Agarwal. I am pretty sure our long discussions and your feedbacks will be appreciated by readers.

I have worked nonstop on the book for the last months and truly couldn’t survive without my family. Nobody has been more important to me than you. Thank you very much for your support, inspiration and love.

What this book covers
  • Chapter 1, VMM 2016 Architecture, provides an understanding of the VMM modular architecture, which is useful when designing VMM and troubleshooting deployment. This chapter also covers all requirements that must be satisfied to make a private cloud.
  • Chapter 2, Upgrading from Previous Versions, walks through all the necessary steps to upgrade the previous version of Virtual Machine Manager to the new VMM 2016, covering its database, highly available configurations and post-upgrade tasks.
  • Chapter 3, Installing VMM 2016, focus on deploying VMM and it’s dependencies. It gives also a plenty of tips and tricks to install and automate VMM and SQL Server deployments in both Windows Server Core and Full environments.
  • Chapter 4, Installing a High Available VMM Server, dives into more advanced VMM configuration, and provides an understanding how VMM has become a critical part of the private cloud infrastructure. You will also learn how to make a highly available library server and VMM configuration database.
  • Chapter 5, Configuring Fabric Resources, discusses building a new fabric in VMM by configuring compute, storage and networking resources. It starts by adding hosts group and ends by creating a hyper-converged cluster with Storage Spaces Direct and Hyper-V. It also covers a deployment of a Network Controller providing a good start point for network virtualization implementation.
  • Chapter 6, Configuring Guarded Fabric, walks you through the recipes to help protect confidential data by deploying new shielded VMs as a part of Guarded Fabric consisting of Guarded Hosts and Host Guardian Service. It also discusses how to convert existing VMs to shielded and manage them through VMM.
  • Chapter 7, Deploying Virtual Machines and Services, provides information to help the administrator to create,deploy and manage private clouds, virtual machines, templates, and services in VMM 2016; it provides recipes to assist you in getting the most our of deployment.
  • Chapter 8, Managing VMware ESXi Hosts, shows you how to manage and make VMware recources available to private cloud deployments. It also covers converting VMware machines to Hyper-V (V2V), deploying virtual machines and templates, all from the VMM console.
  • Chapter 9, Managing Clouds, Fabric Updates, Resources, Clusters and the New Features of 2016, covers other new features of VMM 2016 such as Cluster OS Rolling upgrade and Production Checkpoints. You will also learn how to integrate VMM 2016 with Windows Azure Pack for VM Clouds management.
  • Chapter 10, Integration with System Center Operations Manager 2016, guides you through the steps required to complete integration of SCOM 2016 with VMM in order to enable monitoring of the private cloud infrastructure.

VMM 2016 Cookbook

PS: code files will be uploaded soon (Packt team is still working on it)

Deploying VMFleet to test S2D performance

VMfleet is a storage load generator to stress your S2D. Actually it burns your disks/cpu/storage network to check whether S2D is stable or not. VMFleet is also used to get performance results of S2D storage subsystem.

To get started, you need to do the following:

  1. Download VMFleet located at , click on Clone/Download and then extract archive to the folder named C:\VMFleet, for example.

  2. Download DiskSpd tool from and extract to C:\diskspd

  3. Prepare gold image of Windows Server 2016 Core. After OS installation, provide admin credentials and shutdown the VM. Sysprep is not required.

  4. Prepare VMFleet :

#Create new virtual disks for VMFleet by running this command:

Get-ClusterNode |% { New-Volume -StoragePoolFriendlyName S2D* -FriendlyName $_ -FileSystem CSVFS_ReFS -Size 1Tb }

#Create new volume for VMFleet files with friendly name Collect:

New-Volume -StoragePoolFriendlyName S2D* -FriendlyName Collect -FileSystem CSVFS_ReFS -Size 500GB

#Install VMFleet by running the following one-liner:

.\install-vmfleet.ps1 -Source C:\VMFleet\diskspd-master\diskspd-master\Frameworks\VMFleet

#Copy the DISKSPD.exe to the Tools folder:

 Copy-Item c:\diskspd\diskspd.exe -Destination c:\clusterstorage\collect\control\tools

#Copy gold image (VHDX) with Windows Server 2016 Core (not sysprepped) to the Collect folder:

 Copy-Item C:\ClusterStorage\Volume03_test\VMFleet-Gold\VMFleet-Gold_disk_1.vhdx `
 -Destination C:\ClusterStorage\Collect

# Run update-csv.ps1 script to manage the placement of CSV volumes and VMs per a naming convention.
# This script also changes ownership of test CSV volumes if required.

.\update-csv.ps1 -renamecsvmounts $true

# Start creating VMs for VMfleet environment.
# In the following example, 15 VMs will be created on each host,
# adminpass represents my local administrator password used in the gold image
#  connectuser and connectpass are credentials with cluster management rights:

.\create-vmfleet.ps1 -basevhd 'C:\ClusterStorage\Collect\VMFleet-Gold_disk_1.vhdx'-vms 15 `
-adminpass 'Pass123' -connectuser 'rllab\rlevchenko' -connectpass '''RTM$nRdT@5J5'''

#Once VMs are created, change their configuration if required:

.\set-vmfleet.ps1 -ProcessorCount 2 -MemoryStartupBytes 4GB `
-MemoryMinimumBytes 4GB -MemoryMaximumBytes 4GB

At this step, you are ready to start VMFleet VMs and then check system’s status:

#To start VMs

#To check cluster health

#To get the current status of cluster

To run stress test, execute start-sweep.ps1 script that uses the following parameters for diskspd.exe:

  • b: list of buffer sizes (KiB)
  • t: list of thread counts
  • o: list of outstanding IO counts
  • w: list of write ratios
  • p: list of patterns (random: r, sequential: s, sequential interlocked: si)
  • warm: duration of pre-measurement warmup (seconds)
  • d: duration of measured interval (seconds)
  • cool: duration of post-measurement cooldown (seconds)

In the following example, I run 100% read test with 20 outstanding IOs and 8 threads, duration is set to 60 seconds excluding default 120 seconds for cooldown and warmup.

.\Start-Sweep.ps1 -b 4 -t 8 -o 20 -w 0 -d 60

To get the live test results, use then watch-cluster.ps1:


To stop VMFleet VMs after testing:

.\stop-vmfleet.ps1 -method Shutdown

To destroy VMFleet (CAUTION! This script stops and removes all clustered VMs) :