Now I have seen it to many times so its time for a post about the subject, people handling SCVMM and not using templates.
First let me clarify the topic a bit, it seems that Microsoft (as always) is going for compatibility so they “optimize” for compatibility. Now most of my customers is deploying Windows and it still works, but it´s far from “optimized” for performance (That also means less load on the host, rather than only “faster” VM’s)
Now lets get down to why next next is wrong.
First out is actually a compatibility feature this will cap your VM to utilize the latest functions of the CPU but you should still use this since most likely your apps don’t use them anyway and you want to be able to migrate to another CPU revision more about this is can be found from this blog http://blogs.technet.com/b/virtualization/archive/2009/05/12/tech-ed-windows-server-2008-r2-hyper-v-news.aspx
Next is RAM default value is static 512mb RAM, to be honest how many VMs do you run with that ? so every time you run next..next..you end up with changing the amount of RAM you will use and probably changing from static to dynamic memory allocation.
Network is probably the biggest issue maker of them all.
As I said before Microsoft seems to “optimize” for compatibility, so it creates a legacy nic witch is an emulated DEC21140 this nic runs in user mode in the parent partition. This will result increase of CPU and memory usage on the host in the parent partition and also decreased performance in the VMs. Still most of my customers are using OS that have support for integrated components meaning that we want to take full advantage of the Hyper-V virtualization so delete the Legacy nic and create a new synthetic. (In VMM it just says Network Adapter)
This should be handled by VMM, you can easily see if its created with VMM because then it starts with 00:1d if its created with a node or standalone host it starts with 00:15, with standalone it has a limit of 256addresses to start with meaning that you most likely to end up with macaddress conflict.
The the dynamic address that is default value this is going to give you trouble sooner or later. I can promise you that of the VMs you create is going to be used for some sort of application server and registering SPN or some other service that is using macaddress and the service will then stop, or that you are using DHCP and add reservations instead of static ip addresses. More info about the subject http://blogs.technet.com/b/jhoward/archive/2008/07/15/hyper-v-mac-address-allocation-and-apparent-network-issues-mac-collisions-can-cause.aspx
Now you have created a new VM using next next, as I mentioned earlier Microsoft “optimize” for compatibility so you have some integrated services that’s nice, but if you are going to use this VM in an AD environment you want to disable the time synchronization under integrated services. otherwise it will get time synchronization from both your AD as well from the service.
So what is the purpose of this post? create and use templates/profiles and fix this from the start so you don’t have to think about this every time you create a new VM.