I was recently engaged in a project deploying PVS 5.6 SP1 in an environment running VMWare vSphere 4.1. This was not the first such environment, but we encountered some interesting issues. I figured if this helps someone else out there, I am happy to share.
What made this environment different is they had an automated/scripted build process, as opposed to templates. So the XenApp Master Image was created with a script, which used a VMXNET3 network driver. Citrix recommends using the E1000 driver due to known issues with the VMXNET3 driver when using PVS.
So, we added a second network card (e1000), then removed the VMXNET3 card. Windows was still aware that a virtual NIC had been removed, so the e1000 card was treated as a second NIC. We installed the PVS Target software and associated to the e1000 NIC. Everything was good, streaming was fine, HA was fine… sweet!
Then we tried to stream the same vDisk to a second data center. BOOM! Blue screen of death -STOP 0x7B. Windows would start to load, then BSOD. We tried streaming to an existing VM, tried a new blank VM, tried to export/import the template… still no go.
So we did a reverse image, exported the complete VM, imported into the second datacenter, performed a fresh capture in the second datacenter, no problems. Streamed to both locations… again, all good. Then we updated the image in datacenter 1, and the BSOD came back in datacenter 2.
Finally, we figured out what was happening. The error is associated with a hard disk driver error… turns out, PVS was trying to stream to a NIC in a different location. When a VM or Template is exported and imported, it appears to re-order the NICs if available (since we removed NIC1, NIC2 got moved into NIC1, creating a mis-match).
Now, we may have been able to edit the VMX file, but that was beyond our comfort level. So in DC 1, we exported/imported the VM as a whole so everything was “reset” then created a new Template and a new vDisk capture and successfully streamed to all datacenters. Now we have a good vDisk and a good Template for global deployment.
Sorry for the long-winded post, but it was an interesting scenario that took some time to deconstruct. Granted, had we started with a blank VM with the e1000 driver, this would not have been an issue. Alternately, had we edited the VMX file, we may have saved some time and headache… but in the heat of the moment, sometimes those things elude you.