Virtualization
You maybe know a little about virtualization if you have ever use a software to allow a piece of hardware to run multiple operating system images at the same time. A large cluster of servers does not essentially constitute a grid. In order to manage those resources, virtualization is required so that resources are aggregated, and expanded or pulled back as the computational, storage, or bandwidth requirements of applications change. Virtualization can be performed at three levels:Network virtualization is a technique of combining the existing resources in a network by splitting up the available bandwidth into channels, each of which is independent from the others, and each of which can be assigned (or reassigned) to a particular server or device in real time. The idea is that virtualization hides the factual complexity of the network by separating it into manageable parts, much like your partitioned hard drive makes it easier to manage your files.
Server virtualization uses software that allows a server to be logically partitioned so that applications have a dedicated space in which to execute. The partitions and underlying resources are constantly balanced, based on the requirements of applications running on it. The purpose is to spare the user from having to understand and manage complicated details of server resources while increasing resource sharing and utilization and maintaining the capacity to expand later.
Storage virtualization is the pooling of physical storage from multiple network storage devices into what appears to be a single storage device that is managed from a central console.
Grid Computing
When hundreds or thousands of servers are clustered and managed as a single massive computing resource, the processing power available for use is enormous. Grid computing is the act of sharing tasks over multiple computers. Tasks can range from data storage to complex calculations and can be spread over large geographical distances. Grids are often constructed with the aid of general-purpose grid software libraries known as middleware. Grids allow customers to pay only for the processing capability, storage, and network bandwidth they use.Grid computing can be thought of as distributed and large-scale cluster computing and as a form of network-distributed parallel processing. Grid computing is similar to cluster computing, but there are a number of distinct differences. In a grid, there is no centralized management; computers in the grid are independently controlled, and can perform tasks unrelated to the grid at the operator's discretion. The computers in a grid are not required to have the same operating system or hardware. Grids are also usually loosely connected, often in a decentralized network, rather than contained in a single location, as computers in a cluster often are.