
iSCSI is a protocol that allows clients (called initiators) to send SCSI commands (CDBs) to SCSI storage devices (targets) on remote servers. It is a popular Storage Area Network (SAN) protocol, allowing organizations to consolidate storage into data center storage arrays while providing hosts (such as database and web servers) with the illusion of locally-attached disks. Unlike Fibre Channel, which requires special-purpose cabling, iSCSI can be run over long distances using existing network infrastructure.
iSCSI () uses TCP/IP (typically TCP port 3260). In essence, iSCSI simply allows two hosts to negotiate and then exchange SCSI commands using IP networks. By doing this, iSCSI takes a popular high-performance local storage bus and allows it to be run over wide-area networks, creating a storage area network (SAN). Unlike some SAN protocols, iSCSI requires no dedicated cabling; it can be run over existing switching and IP infrastructure. As a result, iSCSI is often seen as a low-cost alternative to Fibre Channel, which requires dedicated infrastructure.
Although iSCSI can be used to communicate with arbitrary types of SCSI devices, it is almost always used to allow server computers (such as database servers) to access disk volumes on storage arrays. iSCSI SANs often have one of two objectives:
Organizations mirror storage resources from one data center to a remote data center, where it can serve as a hot standby in the event of a prolonged outage. In particular, iSCSI SANs allow entire disk arrays to be migrated across a WAN with minimal configuration changes, in effect making storage "routable" in the same manner as network traffic.
In the context of computer storage, a SAN system allows a machine to use a network protocol to connect to remote storage resources such as disks and tape drives on an IP network for block level I/O. From the point of view of the class drivers and application software, the devices appear as locally attached devices.
A SAN device should not be confused with a network-attached storage (NAS) device, where computers access resources through a file-based interface rather than through a low-level device interface. A NAS server arbitrates access from multiple clients, thus allowing the arbitrary addition of consumers for its resources. With iSCSI, the burden of synchronizing access to shared resources generally belongs to the initiator (network client) rather than with the target (network server). Sharing low-level device interfaces is a requirement of computer clusters which use specialized cluster software to manage the use of shared resources.
An initiator is an iSCSI client. An initiator typically serves the same purpose to a computer as a SCSI bus adapter would, except that instead of physically cabling SCSI devices (like hard drives and tape changers), an iSCSI initiator sends SCSI commands over an IP network. An initiator falls into two broad types:
An iSCSI host bus adapter (more commonly, "HBA") is a product that implements a hardware initiator. A typical HBA is packaged as a combination of a Gigabit Ethernet NIC and a SCSI bus adapter, which is what it appears as to the operating system.
An iSCSI HBA can include PCI option ROM to allow booting from an iSCSI target.
A TCP Offload Engine, or "TOE Card", is an alternative to a full iSCSI HBA. A TOE "offloads" the TCP/IP operations for this particular network interface from the host processor, freeing up CPU cycles for the main host applications. When a TOE is used rather than an HBA, the host processor still has to perform the processing of the iSCSI protocol layer itself, but the CPU overhead for that task is low.
iSCSI HBAs or TOEs are used when the additional performance enhancement justifies the additional expense of using an HBA for iSCSI, rather than using a Software-based iSCSI Client (initiator).
A target is a storage resource located on an iSCSI server (more generally, a target is one of potentially many instances of iSCSI running on that server). An iSCSI target usually represents hard disk storage. As with initiators, software to provide an iSCSI target is available for most mainstream operating systems. Common deployment scenarios for an iSCSI target include:
In SCSI terminology, a LUN is a logical unit number, and represents an individual SCSI device. In an iSCSI environment, LUNs are essentially numbered disk drives. An initiator negotiates with a target to establish connectivity to a LUN; the result is an iSCSI session that emulates a SCSI hard disk. Initiators treat iSCSI LUNs the same way as they would a raw SCSI or IDE hard drive; for instance, rather than mounting remote directories as would be done in NFS or CIFS environments, iSCSI systems format and directly manage filesystems on iSCSI LUNs.
In enterprise deployments, LUNs usually represent slices of large RAID disk arrays, often allocated one per client. iSCSI imposes no rules or restrictions on multiple computers sharing individual LUNs; shared access to a single underlying filesystem is instead left as a task for the operating system.
Both iSCSI initiators and targets are referred to by special names. iSCSI provides three name formats: