Date: March,21 1993 X3T9.2/93-003 rev 3 To: X3T9.2 Committee (SCSI) From: George Penokie (IBM) Subject: SCSI Disk Array Model 1.0 Glossary 1. Check Data - Information contained within a LBA set which allows lost or destroyed user data to be reconstructed. 1. Check Data Mapping - The distribution of the check data within a LBA set. 1. Data Mapping - The distribution of user data within a LBA set. 1. Disk Array Conversion Layer (DACL) - Converts input logical unit identifiers to output logical unit identifiers and may convert input LBAs to output LBAs. 1. LBA Set - A LBA range that has a single mapping. Sets are independent from one another and may contain more than one device. A single device may contain more that one LBA set. 1. Mapping - The distribution of user data and check data (if any) within a LBA set. 1. SCSI Disk Array (SDA) - A device which may process SCSI command descriptor blocks and performs the services of a disk array conversion layer. 2.0 Model for SCSI disk arrays The following is a model which defines SCSI disk arrays. It is not intended to define any requirements nor is it intended to alter any requirements defined elsewhere in this standard. 3.0 SCSI Disk Array Requests 3.1 Identification Services A SCSI disk array returns the following parameters in the confirmation of a request for identification service: -User data LBAs per device -Start LBA -Number of LBAs -Logical Unit Identifier -Mapping (Note: Data mapping may allow user data to be duplicated) [Ed Note: I believe the LBAs per device should include all possible ways a ULP could access the DACL. (ie a DACL with x drives attached could have x+1 LUIs, one of the LUIs LBA range information would overlay the other x LUIs. gop] [Ed Note: One way to do this would be as an extension to the read capacity command. gop] [Ed Note: If a device is added or deleted to the DACL an Unit Attention should be created. gop] 3.2 Configuration Services A SCSI disk array configuration is initialized and controlled by requests for configuration services. Configuration services are used to define a LBA set: -User data LBA range -Mapping (Note: Data mapping may allow user data to be duplicated) 3.3 SCSI Disk Array Services The disk array conversation layer performs the following services: -Regenerate the check data within a LBA set. -Reconstruct the user data within the LBA set using check data information or duplicate data. -Disable a LBA range 4.0 Disk Array Conversion Layer Functions A disk array conversion layer initiates several functions when a request for a media access service is requested. The type of media access and the mapping in effect determine which functions are used. The following are the functions available within a disk array conversion layer: -Translation of input Logical Unit Identifiers to output Logical Unit Identifiers. -Translation of input LBAs to output LBAs. -Reading data from and writing data to locations based on the mapping in effect for the addressed LBA set. -Calculates and updates the check data (if any). -Reconstruction of user data within the LBA set using check data information or duplicate data. -Regeneration of the check data within a LBA set. -Determines when a LBA range should be disabled and/or replaced. -Returns a confirmation to the higher level as to the success or failure of a service request and, in the case of a failure, gives possible corrective actions. 5.0 Exception Conditions Exception conditions inform a higher level that: -a repair action is requested, -a repair action is required, or -an error occurred. Which exception conditions are returned in confirmations and how often they are returned is based on configuration requests received from a higher level. 6.0 System Layering Model A system is typically composed of many protocol conversion layers, and these layers may exist in hardware or software. Each of these layers has input(s) and output(s). The output determines which layer is accessed next. These protocol conversion layers include, but is not limited to: transport modules, host adapter drivers, SIMs, HBAs, bridge controllers, and disk drives. Each of these layers will be represented by a simple block which has an input and output. To better demonstrate the effects of SCSI disk arrays only an input logical unit identifier (LUI(IN)) and a output logical unit identifier (LUI(OUT)) will be shown. Note:The logical unit identifier is fully defined in SAM. LUI(IN) + LBA(IN) | | V -------------- | | | | -------------- | | V LUI(OUT) + LBA(OUT) 6.1 Generic Layer Generic Layers do not modify the logical unit identifier or the LBA. Note: There are types of layers other than generic and disk array conversion layers, however, these are not covered in this model. 6.2 Disk Array Conversion Layer (DACL) The disk array conversion layer is capable of extensive manipulation on the logical unit identifier and the LBA, based upon a fixed algorithm. It is possible that a single LUI(IN) or LBA(IN) may be converted to multiple LUI(OUT)s and LBA(OUT)s. Disk array conversion layers will be shown with 'DACL' in the block. Disk array conversion layers provide the functions listed in section 4.0. 7.0 Examples of SCSI Disk Array Variations Typically a system diagram will be composed of many layers combined into a tree. For example, a driver may connect to multiple HBAs, which in turn may connect to multiple Targets, etc. An example is shown below: Operating system | V ------------------------------------------------------------- | Software | | (driver) | ------------------------------------------------------------- | | . . . | | | -----> V V -------------------------- -------------------------------- | HBA | | HBA | | (Initiator) | | (Initiator) | -------------------------- -------------------------------- | | | |...| V V V V --> ----------- ----------- -------------------- ----------- | Drive | | Drive | | DACL | | Drive | | (Target)| | (Target)| |(Target/Initiator)| | (Target)| ----------- ----------- -------------------- ----------- | | | | |...| | | | | | -------------> --------------------------- | | | ---------- | ------------------- | | | | | ---------- | | | | | | | V V V V V ----------- ----------- ----------- ----------- ----------- | Drive | | Drive | | Drive | | Drive | | Drive | | (Target)| | (Target)| | (Target)| | (Target)| | (Target)| ----------- ----------- ----------- ----------- ----------- In the following diagrams, only a single branch of this tree will be shown. 7.1 Branch of Generic Layers This diagram shows that all layers pass the logical unit identifier and LBA directly through. Operating system | | LUI(X) + LBA(X) V -------------- | | Software (driver) | | -------------- | | LUI(X) + LBA(X) V -------------- | | HBA (Initiator) | | -------------- | | LUI(X) + LBA(X) V -------------- | | Drive (Target) | | -------------- 7.2 Software Array with a Branch of SCSI Disks This diagram shows software performing SCSI Disk Array functions. These functions convert the input logical unit identifier (LUI(X)) and the output LBA (LBA(X)) to the output logical unit identifier (LUI(Y)) and output LBA (LBA(Y)). All other layers pass the logical unit identifier and LBA through. Operating system | | LUI(X) + LBA(X) V -------------- | | Software (driver) | DACL | -------------- | | LUI(Y) + LBA(Y) V -------------- | | HBA (Initiator) | | -------------- | | LUI(Y) + LBA(Y) V -------------- | | Drive (Target) | | -------------- 7.3 Branch with HBA SCSI Disk Array This diagram shows a HBA performing SCSI Disk Array functions. These functions convert the input logical unit identifier (LUI(X)) and the output LBA (LBA(X)) to the output logical unit identifier (LUI(Y)) and output LBA (LBA(Y)). All other layers pass the logical unit identifier and LBA through. Operating system | | LUI(X) + LBA(X) V -------------- | | Software (driver) | | -------------- | | LUI(X) + LBA(X) V -------------- | | HBA (Initiator) | DACL | -------------- | | LUI(Y) + LBA(Y) V -------------- | | Drive (Target) | | -------------- 7.4 Branch with Bridge Controller SCSI Disk Array This diagram shows a bridge controller performing SCSI Disk Array functions. These functions convert the input logical unit identifier (LUI(X)) and the output LBA (LBA(X)) to the output logical unit identifier (LUI(Y)) and output LBA (LBA(Y)). All other layers pass the logical unit identifier and LBA through. Operating system | | LUI(X) + LBA(X) V -------------- | | Software (driver) | | -------------- | | LUI(X) + LBA(X) V -------------- | | HBA (Initiator) | | -------------- | | LUI(X) + LBA(X) V -------------- | | Bridge Controller | DACL | (Target/Initiator) -------------- | | LUI(Y) + LBA(Y) V -------------- | | Drive (Target) | | -------------- 7.5 Branch with Multiple Layers of SCSI Disk Arrays This diagram shows one example with two disk array controller layers. This example shows a software layer performing SCSI disk array functions and a bridge controller performing SCSI disk array functions. The software functions convert the input logical unit identifier (LUI(X)) and the output LBA (LBA(X)) to the output logical unit identifier (LUI(Y)) and output LBA (LBA(Y)). The bridge controller functions then convert the input logical unit identifier (LUI(Y)) and the output LBA (LBA(Y)) to the output logical unit identifier (LUI(Z)) and output LBA (LBA(Z)). All other layers pass the logical unit identifier and LBA through. Operating system | | LUI(X) + LBA(X) V -------------- | | Software (driver) | DACL | -------------- | | LUI(Y) + LBA(Y) V -------------- | | HBA (Initiator) | | -------------- | | LUI(Y) + LBA(Y) V -------------- | | Bridge Controller | DACL | (Target/Initiator) -------------- | | LUI(Z) + LBA(Z) V -------------- | | Drive (Target) | | --------------