Deep Dive into VMware vSAN Performance Benchmarks

VMworld 2017 Breakout Session Proposal Accepted!

I am VERY happy to announce that my application for a VMworld session at VMworld in Barcelona 2017 has been accepted. I will be sharing this session with my excellent coworker Karsten Drejer.

I can’t wait to tell you all about our finding and the awesome performance that we are seeing on VMware vSAN. I will be comparing these benchmark numbers to traditional storage types from known vendors.

Please support me by attending my session at VMworld 2017 in Barcelona. My session ID is #STO1117BE. You can find it here: https://my.vmworld.com/scripts/catalog/eucatalog.jsp?search=STO1117

WARNING: My session is very technical, so please be ware. I will however also have some graphs with pretty colors, so if you are not completely down with IOPS, Read Write latency, bits and bytes, come anyway. I will try hard explain my findings. Also Karsten will give some general knowledge about vSAN in the first part of the session.

VMworld 2017 in Barcelona is running from the 11-14th of September.

Update: Our sessions is scheduled at the 13th of September in Hall 8, Room 17.

VMware Auto Deploy stopped working with Parse Error

I ran into a problem with VMware vSphere 6.5 Auto Deploy suddenly stopped working.

When trying to change rules with New-DeployRule or Repair-DeployImageCache I got the following error:

Repair-DeployImageCache
System.Runtime.Serialization.SerializationException: Parse Error, no assembly associated with Xml key ImagefactoryPkgImageProfile
at System.Runtime.Serialization.Formatters.Soap.SoapHandler.ProcessGetType(String value, String xmlKey, String& assemblyString)
at System.Runtime.Serialization.Formatters.Soap.SoapHandler.ProcessType(ParseRecord pr, ParseRecord objectPr)
at System.Runtime.Serialization.Formatters.Soap.SoapHandler.ProcessAttributes(ParseRecord pr, ParseRecord objectPr)
at System.Runtime.Serialization.Formatters.Soap.SoapHandler.StartChildren()
at System.Runtime.Serialization.Formatters.Soap.SoapParser.ParseXml()
at System.Runtime.Serialization.Formatters.Soap.SoapParser.Run()
at System.Runtime.Serialization.Formatters.Soap.ObjectReader.Deserialize(HeaderHandler handler, ISerParser serParser)
at System.Runtime.Serialization.Formatters.Soap.SoapFormatter.Deserialize(Stream serializationStream, HeaderHandler handler)
at VMware.DeployAutomation.Types.PxeProfile.get_ImageProfile()
System.Runtime.Serialization.SerializationException: Parse Error, no assembly associated with Xml key ImagefactoryPkgImageProfile
at System.Runtime.Serialization.Formatters.Soap.SoapHandler.ProcessGetType(String value, String xmlKey, String& assemblyString)
at System.Runtime.Serialization.Formatters.Soap.SoapHandler.ProcessType(ParseRecord pr, ParseRecord objectPr)
at System.Runtime.Serialization.Formatters.Soap.SoapHandler.ProcessAttributes(ParseRecord pr, ParseRecord objectPr)
at System.Runtime.Serialization.Formatters.Soap.SoapHandler.StartChildren()
at System.Runtime.Serialization.Formatters.Soap.SoapParser.ParseXml()
at System.Runtime.Serialization.Formatters.Soap.SoapParser.Run()
at System.Runtime.Serialization.Formatters.Soap.ObjectReader.Deserialize(HeaderHandler handler, ISerParser serParser)
at System.Runtime.Serialization.Formatters.Soap.SoapFormatter.Deserialize(Stream serializationStream, HeaderHandler handler)
at VMware.DeployAutomation.Types.PxeProfile.get_ImageProfile()
System.Runtime.Serialization.SerializationException: Parse Error, no assembly associated with Xml key ImagefactoryPkgImageProfile
at System.Runtime.Serialization.Formatters.Soap.SoapHandler.ProcessGetType(String value, String xmlKey, String& assemblyString)
at System.Runtime.Serialization.Formatters.Soap.SoapHandler.ProcessType(ParseRecord pr, ParseRecord objectPr)
at System.Runtime.Serialization.Formatters.Soap.SoapHandler.ProcessAttributes(ParseRecord pr, ParseRecord objectPr)
at System.Runtime.Serialization.Formatters.Soap.SoapHandler.StartChildren()
at System.Runtime.Serialization.Formatters.Soap.SoapParser.ParseXml()
at System.Runtime.Serialization.Formatters.Soap.SoapParser.Run()
at System.Runtime.Serialization.Formatters.Soap.ObjectReader.Deserialize(HeaderHandler handler, ISerParser serParser)
at System.Runtime.Serialization.Formatters.Soap.SoapFormatter.Deserialize(Stream serializationStream, HeaderHandler handler)
at VMware.DeployAutomation.Types.PxeProfile.get_ImageProfile()
System.Runtime.Serialization.SerializationException: Parse Error, no assembly associated with Xml key ImagefactoryPkgImageProfile
at System.Runtime.Serialization.Formatters.Soap.SoapHandler.ProcessGetType(String value, String xmlKey, String& assemblyString)
at System.Runtime.Serialization.Formatters.Soap.SoapHandler.ProcessType(ParseRecord pr, ParseRecord objectPr)
at System.Runtime.Serialization.Formatters.Soap.SoapHandler.ProcessAttributes(ParseRecord pr, ParseRecord objectPr)
at System.Runtime.Serialization.Formatters.Soap.SoapHandler.StartChildren()
at System.Runtime.Serialization.Formatters.Soap.SoapParser.ParseXml()
at System.Runtime.Serialization.Formatters.Soap.SoapParser.Run()
at System.Runtime.Serialization.Formatters.Soap.ObjectReader.Deserialize(HeaderHandler handler, ISerParser serParser)
at System.Runtime.Serialization.Formatters.Soap.SoapFormatter.Deserialize(Stream serializationStream, HeaderHandler handler)
at VMware.DeployAutomation.Types.PxeProfile.get_ImageProfile()

Continue reading VMware Auto Deploy stopped working with Parse Error

Migrate folder structure from old to new vSphere vCenter

Sometimes I find it easier to create a new vCenter server then migrate the old one, and it is a perfectly good solution in many cases.

But annoyingly there is a lot of manual work involved.

One problem is the VM’s and Templates folders. They do not follow the host, so you have to create the folder structure manually and move each VM into the correct folder. Well I am way to lazy to do that by hand, so it’s time to Automate!

Continue reading Migrate folder structure from old to new vSphere vCenter

FCoE Adapters and datastores missing after vSphere ESXi 6.5 Install

Today I upgraded some HP BL460c Gen9 Blade Servers from ESXi 6.0 to ESXi 6.5. I always reinstall when going from 5.5 to 6.0 or 6.0 to 6.5, so After the server was done installing I found that the FCoE adapters and datastores was missing.

The servers are connected to some HP 3PAR storage using HP FlexFabric 10Gb 2-port 536FLB Adapters.

To regain access to your storage you need to enable the FCoE adapters using the esxcli command.

Continue reading FCoE Adapters and datastores missing after vSphere ESXi 6.5 Install

VMware vCenter VCSA 6.5 Upgrade “Error: queryAaaa ENODATA”

During an upgrade I got the following error: “A problem occurred  while getting data from the source vCenter Server”

And the install log has the following information. Continue reading VMware vCenter VCSA 6.5 Upgrade “Error: queryAaaa ENODATA”

Storage Optimization for VMware vSphere

This is meant as a dynamic article for looking up best practice settings for different storage arrays when adding them to VMware.

Why modify the default settings?

When datastores are added to an ESXi host, there are multiple ways that ESXi can leverage the storage. In some cases ESXi will use Most Recently Used path (Active/Standby or MRU) by default, which means that you only leverage one path at the time. This could result in a bottleneck in your storage infrastructure. Many arrays are able to handle Round Robin (Multi path Active/Active or RR) By enabling this will distribute your storage traffic onto multiple adapters, provided that you have multiple adapters.

Other settings can involve how many I/O ESXi should send to a path before switching to another path, or advanced settings that alters the way ESXi handles the storage.

Getting these settings correct will most often result in better performance, but can also help you stay out of trouble that can lead to breakdowns. Continue reading Storage Optimization for VMware vSphere

Assigning vCenter tags using vRealize Orchestrator

Today I needed to assign some vCenter tags to some VMs I was deploying using vRealize Automation.

The scenario was that the customer did not want backup of VMs deployed by the vRA test environment, and in production they wanted a specific backup tier.

They are using Veeam backup, so the vRA test environment needed to have a NoBackup Tag, and production needed some other tag, depending on the type of server being deployed.

vRO does not provide very extensive support for these operations out of the box, but vRO 7.2 does come with some sample workflows.

To get started with vCenter tagging you need to configure a vAPI endpoint and a vAPI metamodel.

Continue reading Assigning vCenter tags using vRealize Orchestrator

Cross SSO and vCenter VMotion using PowerCLI

http://cloudmaniac.net/using-powercli-to-vmotion-vm-between-different-sso-domains-vcenters/

Roman Decker wrote an article about how to move virtual machine between vCenters that are not part of the same SSO domain, using PowerCLI.

I felt like it needed some adjustments to be more dynamic and interactive, so many of the hard coded bits I decided to make the script ask for at runtime.

Continue reading Cross SSO and vCenter VMotion using PowerCLI