Skip to content
@uiscsi

uiscsi

Userspace iSCSI stack

uiscsi

Pure-userspace iSCSI in Go. Main focus is providing the userspace initiator - it requires no kernel modules, no open-iscsi, no iscsi-initiator-utils. Import the library and talk to iSCSI targets directly from your Go application.

Target components are mainly used for testing and not production grade.

The Stack

 tapeplayer uiscsi-tools Applications
\ /
uiscsi-tape SSC-3 tape driver
/ | \
uiscsi | tapesim-tcmu iSCSI initiator / TCMU tape emulator
| / \
tapesim go-tcmu Tape state machine / TCMU kernel API

Repositories

RepoWhat it does
uiscsiiSCSI initiator library. Full RFC 7143: login negotiation, CHAP, CmdSN windowing, error recovery (ERL 0/1/2), streaming I/O. Stdlib-only.
uiscsi-tapeSSC-3 tape driver over iSCSI. tape.Open gives you a Drive with Read, Write, WriteFilemarks, Rewind, Position, SetBlockSize, SetCompression.
tapeplayerTUI audio player that reads FLAC from iSCSI tape drives. Playlist navigation, LRU data cache, streaming playback on slow drives.
uiscsi-toolsCLI tools: uiscsi-ls (target/LUN discovery), uiscsi-tape-dd (tape data transfer).
go-tcmuGo bindings for the Linux TCM Userspace (TCMU) kernel API. Build SCSI target devices in pure Go.
tapesimIn-memory SSC-3 tape simulation. Shared tape state machine for testing and emulation.
tapesim-tcmuTCMU tape emulator. Implements all 13 SSC/SPC commands a tape driver issues. Used for kernel-path E2E testing.

Use Cases

Access iSCSI storage from Go without kernel dependencies. Import uiscsi, dial a target, execute SCSI commands. Works on any platform with TCP -- no kernel iSCSI stack required.

Drive tape over iSCSI. Import uiscsi-tape for a high-level tape API. Supports LTO and DDS drives, variable and fixed block modes, streaming I/O for large transfers.

Build userspace SCSI targets. Import go-tcmu to create SCSI devices backed by Go code. The kernel presents your handler as a real SCSI device accessible over iSCSI, vHost, or any LIO fabric.

Test tape software without hardware.tapesim + tapesim-tcmu create a virtual tape drive visible to the kernel. Write E2E tests that exercise the full iSCSI + SCSI + tape path.

Standards

  • RFC 7143 (iSCSI)
  • SSC-3 (SCSI Stream Commands -- tape)
  • SPC-4 (SCSI Primary Commands -- sense data, inquiry)

License

All repositories are Free Software under the GNU General Public License v3.0.

Pinned Loading

  1. uiscsiuiscsiPublic

    Pure userspace iSCSI initiator library

    Go

  2. uiscsi-tapeuiscsi-tapePublic

    Tape support for uiscsi - pure userspace iSCSI initiator

    Go

Repositories

Showing 8 of 8 repositories

Top languages

Loading…

Most used topics

Loading…