Skip to main content

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).