Server mirroring is an expensive but effective strategy for achieving fault tolerance. It’s expensive because each server must be mirrored by an identical server whose only purpose is to be there in the event of a failure. A less expensive technique that is becoming more and more popular is clustering.
Also see the Server Types page in the Quick Reference section of Webopedia for a comparison of server types.