All Projects → gostor → Gotgt

gostor / Gotgt

Licence: apache-2.0
Simple Golang SCSI Target framework

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Gotgt

Hoarder
A simple, api-driven storage system for storing code builds and cached libraries for cloud-based deployment services.
Stars: ✭ 91 (-50.81%)
Mutual labels:  cloud-storage, storage
drive-desktop
internxt.com/drive
Stars: ✭ 102 (-44.86%)
Mutual labels:  storage, cloud-storage
Go Fastdfs
go-fastdfs 是一个简单的分布式文件系统(私有云存储),具有无中心、高性能,高可靠,免维护等优点,支持断点续传,分块上传,小文件合并,自动同步,自动修复。Go-fastdfs is a simple distributed file system (private cloud storage), with no center, high performance, high reliability, maintenance free and other advantages, support breakpoint continuation, block upload, small file merge, automatic synchronization, automatic r…
Stars: ✭ 2,923 (+1480%)
Mutual labels:  cloud-storage, storage
storage-abstraction
Provides an abstraction layer for interacting with a storage; the storage can be local or in the cloud.
Stars: ✭ 36 (-80.54%)
Mutual labels:  storage, cloud-storage
Cloudserver
Zenko CloudServer, an open-source Node.js implementation of the Amazon S3 protocol on the front-end and backend storage capabilities to multiple clouds, including Azure and Google.
Stars: ✭ 1,167 (+530.81%)
Mutual labels:  cloud-storage, storage
ddrive
A lightweight cloud storage system using discord as storage device written in nodejs
Stars: ✭ 25 (-86.49%)
Mutual labels:  storage, cloud-storage
go-storage
A vendor-neutral storage library for Golang: Write once, run on every storage service.
Stars: ✭ 387 (+109.19%)
Mutual labels:  storage, cloud-storage
Go Storage
An application-oriented unified storage layer for Golang.
Stars: ✭ 87 (-52.97%)
Mutual labels:  cloud-storage, storage
Cloudexplorer
Cloud Explorer
Stars: ✭ 170 (-8.11%)
Mutual labels:  cloud-storage, storage
Maya
Manage Container Attached Storage (CAS) - Data Engines in Kubernetes
Stars: ✭ 169 (-8.65%)
Mutual labels:  storage
Cryptag
Encrypted, taggable, searchable cloud storage
Stars: ✭ 178 (-3.78%)
Mutual labels:  cloud-storage
Kvdo
A pair of kernel modules which provide pools of deduplicated and/or compressed block storage.
Stars: ✭ 168 (-9.19%)
Mutual labels:  storage
Udisks
The UDisks project provides a daemon, tools and libraries to access and manipulate disks, storage devices and technologies.
Stars: ✭ 170 (-8.11%)
Mutual labels:  storage
Rxpaper
Reactive extension for NoSQL data storage on Android
Stars: ✭ 179 (-3.24%)
Mutual labels:  storage
Mars
Asynchronous Block-Level Storage Replication
Stars: ✭ 168 (-9.19%)
Mutual labels:  storage
Zfsbackup Go
Backup ZFS snapshots to cloud storage such as Google, Amazon, Azure, etc. Built with the enterprise in mind.
Stars: ✭ 179 (-3.24%)
Mutual labels:  cloud-storage
Sharesniffer
Network share sniffer and auto-mounter for crawling remote file systems
Stars: ✭ 168 (-9.19%)
Mutual labels:  storage
Bookstore
📚 Notebook storage and publishing workflows for the masses
Stars: ✭ 162 (-12.43%)
Mutual labels:  storage
Github Stars Manager
Chrome extension that allows you to manage your Github stars with tags, and to create a bookmark folder with all your stars organized by the tags you created
Stars: ✭ 183 (-1.08%)
Mutual labels:  storage
Storage
HTML5 Storage API implementation for Microsoft Blazor
Stars: ✭ 180 (-2.7%)
Mutual labels:  storage

gotgt Build Status

The gotgt project is a simple SCSI Target framework implemented in golang built for performance and density. Very briefly, this iSCSI/SCSI target Go implementation can be included/imported as a library to allow upper layer iSCSI clients to communicate to the actual SCSI devices. The target configuration is static with a json file for the time being. The core functionality of this target library provides the iSCSI/SCSI protocol services. A simple flat file based LUN target implementation is provided with plug-in interface. In the future, a formal plugin mechanism will be provided and supported to work with more sophisticated backend storage arrays.

What is SCSI?

Small Computer System Interface (SCSI) is a set of standards for physically connecting and transferring data between computers and peripheral devices. The SCSI standards define commands, protocols, electrical and optical interfaces. SCSI is most commonly used for hard disk drives and tape drives, but it can connect a wide range of other devices, including scanners and CD drives, although not all controllers can handle all devices.

What is iSCSI?

The iSCSI is an acronym for Internet Small Computer Systems Interface, an Internet Protocol (IP)-based storage networking standard for linking data storage facilities. In a nutshell, it provides block-level access to storage devices over a TCP/IP network.

Getting started

Currently, the gotgt is under heavy development, so there is no any release binaries so far, you have to build it from source.

There is a only one binary name gotgt, you can start a daemon via gotgt daemon and control it via gotgt list/create/rm.

Build

You will need to make sure that you have Go installed on your system and the automake package is installed also. The gotgt repository should be cloned in your $GOPATH.

$ mkdir -p $GOPATH/src/github.com/gostor/
$ cd $GOPATH/src/github.com/gostor/
$ git clone https://github.com/gostor/gotgt gotgt
$ cd gotgt
$ make

How to use

Now, there is lack of commands to operate the target and LU, however you can init the target/LU with config file in ~/.gotgt/config.json, you may find a example at here. Please note, if you want use that example, you have to make sure file /var/tmp/disk.img exists.

A quick overview of the source code

The source code repository is right now organized into two main portions, i.e., the cmd and the pkg directories.

The cmd directory implementation is intended to manage targets, LUNs and TPGTs, which includes create, remove and list actions. It provides these functionalities through a daemon. In the future, when fully enhanced and implemented, it would take RESTful syntax as well.

The pkg directory has three main pieces, i.e., the API interface, the SCSI layer and the iSCSI target layer. The API interface provides management services such as create and remove targets. The iSCSI target layer implements the protocol required to receive and transmit iSCSI PDU's, and communicates with the SCSI layer to carry out SCSI commands and processing. The SCSI layer implements the SCSI SPC and SBC standards that talks to the SCSI devices attached to the target library.

Note that the examples directory is intended to show static configurations that serve as the backend storage. The simplest configuration has one LUN and one flat file behind the LUN in question. This json configuration file is read once at the beginning of the iSCSI target library instantiation.

Test

You can test this with open-iscsi or libiscsi. For more information and example test scripts, please refer to the test directory.

Performance

TBD

Roadmap

The current roadmap and milestones for alpha and beta completion are in the github issues on this repository. Please refer to these issues for what is being worked on and completed for the various stages of development.

Contributing

Want to help build gotgt? Check out our contributing documentation.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].