IBM Object Storage Device Simulator for Linux
A reference implementation of an object-based storage device that is compliant with the T10-OSD standard specification. Available at: http://www.alphaworks.ibm.com/tech/osdsim.
Features
- Execution of OSD commands arriving from an iSCSI initiator in the T10-OSD protocol format. Commands may arrive from several initiators (each on its own iSCSI sessions) but are handled one at a time.
- Support for customer data and meta data transfer simultaneously on a single command.
- Support for data transfer of up to 900 KB and metadata transfer up to 64 KB on a single command.
- Commands supported are: CREATE,CREATE PARTITION,GET ATTRIBUTES,LIST, REMOVE, REMOVE PARTITION, READ, WRITE, CLEAR, FORMAT, SET_KEY, TEST UNIT READY, INQUIRY, REPOR_LUNS.
- Metadata transfer is done using the OSD attribute list format, enabling transfer of multiple attributes within a single command. Each transferred attribute can be up to 1000 bytes long.
- Supporting all standard attributes' behavior except for collections attributes.
- Support for up to 10,000 partitions, each holding up to 10,000 objects at a time.
- The following OSD Security methods are supported: NOSEC, CAPKEY (excluding the SET MASTER KEY command).
Implementation
The OSD Simulator is an implementation of an object-based storage device. It functions as a reference implementation compliant with the T10-OSD standard specification. The protocol is implemented over iSCSI (SCSI over IP). The simulator is a Linux user mode application and was tested with the open-source OSD initiator for Linux. This simulator uses the local file system to store objects: Partitions are translated to directories and user objects to files. The simulator uses GDBM (libgdbm, which is a GNU library) to store attributes.
IBM OSD Simulator for Linux is a simple implementation in the sense that it does not support concurrent execution of commands (The simulator handles commands in a FIFO manner) and it lacks performance guarantees.
IBM OSD Simulator for Linux consists of three layers:
- An iSCSI target layer supporting SCSI requests with extended CDB as well as bi-directional data transfers.
- An SCSI-OSD layer implementing the T10-OSD protocol including CAPKEY security method.
- A simple device simulator that uses the local file system to store data and a local GDBM database to store objects' metadata.
Unsupported features
- OSD collections.
- OSD commands that are not mentioned above.
- "CREATE" command supports creation of only one object in a single command.
- Running of several simulators from the same directory.
- Recovery from failure or shutdown.
- CMDRSP and ALLDATA security methods (as defined by the OSD standard).
