There are three major types of virtualisation engine: server-based, fabric-based and array-based. Each abstracts the storage at a different level: on the server, fabric or array.
Processing is performed locally on the host system using a management console to enforce policies.
Advantages: Tends to be very scalable.
Disadvantages: Does not usually offer advanced data movement features, such as mirroring and replication.
Examples: Sun's ZFS or Veritas Volume Manager.
Processing is performed within the storage network, using one or more appliances to enforce data access and storage policies.
Advantages: Many options available, from in- or out-of-band appliances, stand alone boxes or switch-based appliances.
Disadvantages: Some in-band appliances may struggle to scale in some environments.
Examples: IBM's San Volume Controller, Network Appliances gFiler, or the Cisco switch-based Storage Services Module.
A recent twist on the fabric-based manager is to move all storage administration functions into one huge storage subsystem, and in theory it should be possible to link multiple storage controllers together in a storage pool of almost infinite capacity. Control in this model may reside either on a server running a policy management utility or the storage subsystem itself.
Advantages: There is only one point of control through which every I/O request must pass.
Disadvantages: Potentially a single point of failure. No supplier encapsulates all of their competitors' installed arrays, so this model will be the hardest to implement in a mixed-supplier shop.
Examples: Hitachi's Tagmastore, StorageTek's Iceberg and 3PAR's Utility Storage array.