Everything depends on how much you want to spend.
Virtualizing and using a shared storage is good thing for many reason, but pay attention:
- when you virtualize, you can create a pool with N servers (let's say 2), you attacch a shared storage (SAN).
You create 3 VM (1 for IIS, 1 for exchange, 1 for SQL), this is just an example.
Now your VMs are running on the SERVER1 which is the POOL's master, the second server is waiting for jobs (actually it can do something...). The SERVER1 fails (hardware problem), your Virtual System (let's say XenServer), move the VMs on the other server. You are up & running.
This is the scenario evaluated by many people, BUT WAIT, what about a windows failure? I mean, something get corrupted, you can restart the VM but you have a bluescreen... what's next? Your SAN / HA / FT is almost unuseful. Here we have to use other technologies, for example clustering, CDR (exchange) or others, but all this technologies should be applied togheter.
From my experiece, I used Citrix's products.
Take a look here:
http://www.citrix.com/English/ps2/products/product.asp?contentID=21679&ntref=prod_top
Also check access gateway.
Let me know.