This post will be exploring iSCSI protocol, which allows a server to act as a data storage center accessible through existing TCP/IP protocols and, therefore, around the world. A follow-up will be posted detailing installation instructions for Linux, using CentOS.
1. The Protocol: General Overview
This is the iSCSI client machine. It is granted block level access to the iSCSI devices on the storage server.
The term for the iSCSI server. This is the machine with the data to be accessed remotely, and with the iSCSI server protocols set up.
Discovery & Discovery Methods
For our purposes, static target addressing is likely the simplest route. For scalability however, there is also the iSNS or Internet Storage Name Service standard which will likely be detailed in a later posting. In short, iSNS servers add another layer of protocols that allows for centralized storage of iSCSI server addresses and also manages iSCSI client requests of those servers.
2. The Protocol: Basic Technical Terminology & Concepts
The SCSI Layer builds/receives SCSI Command Descriptor blocks (CDBs), the data structures used to contain the command parameters that the Initiator Node sends to a Target Node. It passes/receives them to/from the iSCSI layer.
The iSCSI layer receives both CDBs (SCSI commands to SCSI devices, AKA Logical Units) and data from the SCSI layer. It then processes these commands, combines them with its own instructions and packages them into a PDU, or Protocol Data Unit. These messages define how iSCSI nodes communicate.
Each iSCSI node represents a machine sending a request to a remote server (Initiator Node) or receiving one from from a remote machine (Target Node). They are identified by iSCSI Names, which allows for flexibility in IP addressing. Simply put, each node may have many IP addresses, and each IP address may have many nodes.
After the iSCSI layer has created a PDU, it must establish a connection with the remote machine. This is the simplest concept to understand: A Network Entity is a device or gateway that is accessible through the internet (or, more literally, from the IP network).
Specifically, the iSCSI layer will use a Network Portal, a component of a Network Entity with a TCP/IP address, to send its PDUs. In more common terminology, this would be a machine connected to a LAN, with the LAN itself being the Network Entity and the machine (or switch/router) being the Network Portal.
iSCSI protocol acts like a layer between a server using SCSI standards and the machine requesting the data stored on the server. In technical terms, the SCSI Layer builds/receives SCSI CDBs and passes/receives them to/from the iSCSI layer which, in turn, builds/receives iSCSI PDUs and relays/receives them through TCP to/from a node.
The next step will be an investigation of the Open-iSCSI project, and a test implementation.