Monday, April 27, 2009

Types of Virtualization / Types of Hypervisors

This blog post will explain the types of server virtualization that is prevalent today and the various types of hypervisors ( the virtualization layer) in scope today.

Types of Virtualization:
1) FULL VIRTUALIZATION
This is also known as native virtualization. This method consists of a virtualization layer or a hypervisor that intermediates between the guest operating system and the underlying hardware.
For Example: VMWARE ESX SERVER .
This runs on top of a native hardware and intermedites the guest OS and the hardware. The hypervisor monitors the instructions executed by the guest OS and traps certain privileged instructions that directly meddle with the underlying hardware since it is shared across the guest OSes. The guest OS can run unmodified in the case of Full / Native Virtualization.

2) PARA VIRTUALIZATION
This type of virtualization still consists of a virtualization layer called the hypervisor to co-ordinate access to the shared hardware by multiple guest Operating Systems, but the guest OSes are themselved tuned to be virtualization aware so that there is no need of any trapping and hence close to performance of a OS running on top of a real hardware.
Ex: XenServer
The guest OS need to be modified for the hypervisor on which it will run.

Type of Hypervisors:
"Hypervisor" - The "visor" who manages multiple "Super" visors. In early days , each Operating system itself was termed as the "Super"visor since it manages the hardware and software resources. Now, since the hypervisor abstracts or manages the resources across multiple guest Oses or Supervisors , it is called as "Hypervisor".

1) Type 1 Hypervisor: Hypervisors that run directly on top of physical hardware are called as Type 1 or bare-metal hypervisors.
Ex: ESX Server , Citrix XenServer, Oracle VM, Microsoft Hyper-V
The guest OSes run at the second-level on top of the Type 1 hypervisors.
Hardware -> Type 1 Hypervisor -> Guest OS

2) Type 2 Hypervisor: Hypervisors that run within an Operating System Environment are called as Type 2 Hypersiors or Hosted Hypervisors.
Ex: Vmware Workstation, Microsoft Virtual PC
The guest Oses run at the third-level on top of the Type 2 hypervisors.
Hardware -> Base-OS -> Type-2 Hypervisor -> Guest OS.

Tuesday, April 14, 2009

Fabric Discovery and Initialization

One of the most frequent questions that people ask is how does the FibreChannel initiators intialize and discover the targets and what happens before the initiator and the target start
communicating. Let me try to explain the same in a sequence of steps.

When a Node initializes in a Fibre Channel environment, the potential actions include the following
1. Link Speed Negotiation
2. Link Initialization and Determination of the port's operation mode(N_Port)
3. Fabric Login (FLOGI) with the Fabric Login Server ( 0xFF FF FE ). FLOGI is an ELS (Extended Link Service provided by FC)
4. Port Login (PLOGI) with the Name Server or Directory Server ( 0xFF FF FC) .This is infact the mechanism of the N_Port to register information with the Name Server.
5. Registering to receive State Change Notifications (SCR). This is typically done with the Fabric Controller ( 0X FF FF FD)
6. Retrieving Information from the Name Server. This is done using Name Server queries. This is the mechanism for address discovery of SCSI Storage Devices
(Ex: Some of the commonly used queries to get objects from the directory server are GA_NXT - Get al Next , GID_FT - Get FCID)
7. Once the address are retrieved, the initiator port does a logging in (PLOGI) with other node ports. Typically the SCSI-FCP initiators initiate the login and the targets wait for the login to occur.
8. The initiators then perform a Process Login (PRLI) to negotiate other information before they start sending commands to the target.
9. The initiator may then perform a TUR (Test Unit Ready) to check the readiness of the target unit. It will then do a REPORT LUNS to discover the LUNS supported by the target and then a SCSI Inquiry to obtain information about each LUN.

This sums up the typical initialization sequence and the stuff that happens.......

Hook up an analyzer between a Server and a Fabric Switch and capture the trace....

If you see something different from the sequence described above...let me know..:)-