An application-oriented unified storage layer for Golang.

Overview

storage

Build Status Go dev License go storage dev

An application-oriented unified storage layer for Golang.

Goal

  • Production ready
  • High performance
  • Vendor agnostic

Features

Widely services support

Servicer operation support

  • List: list all Storager in service
  • Get: get a Storager via name
  • Create: create a Storager
  • Delete: delete a Storager

Storager operation support

Basic operations

  • Metadata: get storager metadata
  • Read: read file content
  • Write: write content into file
  • Stat: get file's metadata
  • Delete: delete a file or directory
  • List: list file in prefix or dir styles

Extended operations

  • Copy: copy a file inside storager
  • Move: move a file inside storager
  • Reach: generate a public accessible url

Multi object modes support

  • Multipart: allow doing multipart uploads
  • Append: allow appending to an object
  • Block: allow combining an object with block ids.
  • Page: allow doing random writes

Object metadata support

Common metadata

  • id: unique key in service
  • name: relative path towards service's work dir
  • type: object type cloud be file, dir, link or unknown

Optional metadata

  • size: object's content size.
  • updated-at: object's last updated time.
  • content-md5: md5 digest as defined in rfc2616
  • content-type: media type as defined in rfc2616
  • etag: entity tag as defined in rfc2616
  • storage-class: object's storage class as defined in storage proposal

Quick Start

package main

import (
	"bytes"
	"log"

	"github.com/aos-dev/go-storage/v3/pairs"
	"github.com/aos-dev/go-service-fs/v2"
)

func main() {
	// Init a service.
	store, err := fs.NewStorager(pairs.WithWorkDir("/tmp"))
	if err != nil {
		log.Fatalf("service init failed: %v", err)
	}

	content := []byte("Hello, world!")
	length := int64(len(content))
	r := bytes.NewReader(content)

	_, err = store.Write("hello", r, length)
	if err != nil {
		log.Fatalf("write failed: %v", err)
	}

	var buf bytes.Buffer

	_, err = store.Read("hello", &buf)
	if err != nil {
		log.Fatalf("storager read: %v", err)
	}

	log.Printf("%s", buf.String())
}

Examples

All examples are maintained in https://github.com/aos-dev/go-storage-example.

Sponsor

Issues
  • Idea: Notification (CDC) Support

    Idea: Notification (CDC) Support

    Our Storage Service may support sending notifications to let users get the changes of storage.

    This feature likes CDC(Change Data Capture) for DBMS.

    We may need to:

    • Define Change/Event struct that fit all storage services need
      • S3 Notification
        • https://docs.aws.amazon.com/AmazonS3/latest/userguide/notification-how-to-event-types-and-destinations.html
      • Filesystem
        • inotify
        • use eBPF to capture changes.
          • https://github.com/cilium/ebpf ?
    • Support different event receiver
      • Work as a webhook?
      • Message Queue?
    backlog idea 
    opened by Xuanwo 28
  • Tracking issues of go-storage 2021Q3 Roadmap

    Tracking issues of go-storage 2021Q3 Roadmap

    This issue will track tasks that split from BeyondStorage 2021Q3 Roadmap

    Make implemented services stable

    Steps

    • Implement features required by Storager
    • Passed integration tests.
    • Add docs and examples.
    • Update docs in go-storage and site.

    Services

    • [x] ftp: FTP
    • [x] gdrive: Google Drive
    • [x] hdfs: Hadoop Distributed File System
    • [x] ipfs: InterPlanetary File System
    • [x] memory: data that only in memory
    • [x] minio: MinIO
    • [ ] onedrive: Microsoft OneDrive
    • [ ] storj: StorJ
    • [ ] webdav: WebDAV

    Implement more services

    We expect to implement 9 of them in 2021Q3.

    • [ ] ocios: https://github.com/beyondstorage/go-storage/issues/692
    • [ ] glusterfs
    • [x] cephfs: https://github.com/beyondstorage/go-service-cephfs
    • [x] azfile: https://github.com/beyondstorage/go-service-azfile
    • [ ] LeanFile
    • [ ] rados
    • [x] us3: https://github.com/beyondstorage/go-service-us3
    • [x] bos: https://github.com/beyondstorage/go-service-bos
    • [x] Huawei Object Storage Service: https://github.com/beyondstorage/go-service-obs
    • [ ] LeanObject
    • [ ] Swift

    Usability and stability improve

    • [x] https://github.com/beyondstorage/go-storage/issues/680
    • [x] https://github.com/beyondstorage/go-storage/issues/646
    • [ ] New connection string layout
    • [ ] go-endpoint support default protocol?

    Related Sprints

    • https://github.com/beyondstorage/community/issues/48
    opened by Xuanwo 10
  • ci(*): Upgrade minimum version to Go 1.16

    ci(*): Upgrade minimum version to Go 1.16

    1. Drop Go 1.15 and add Go 1.17 to GitHub Actions workflows. ~2. Remove tidy as the dependency of build target and add another make tidy-all step to build-test.yml. This is required otherwise make build-all will report an error when the current go.mod file indicates a higher Go version than the current installed version.~
    2. The io/ioutil package has been deprecated in Go 1.16 (See https://golang.org/doc/go1.16#ioutil). This PR replaces the existing io/ioutil functions with their new definitions in io and os packages.

    EDIT: Revert Makefile changes

    opened by Juneezee 9
  • feat: Use gg to generate code for pairs

    feat: Use gg to generate code for pairs

    This is a demo PR for evaluations.

    Related to https://github.com/beyondstorage/go-storage/issues/607.

    • Is go-codegen more friendly than go template?
    • Is go-codegen easier to learn/use/understanding?
    opened by Xuanwo 9
  • Error uploading path with special characters

    Error uploading path with special characters

    s, err := s3.NewStorager(
    	pairs.WithEndpoint("http:127.0.0.1:9000"),
    	pairs.WithCredential("hmac:minio:minio123456"),
    	pairs.WithLocation("us-east-1"),
    	pairs.WithName("/default"),
    	pairs.WithWorkDir("/"),
    )
    
    if err != nil {
    	fmt.Println(err)
    }
    
    f, _ := os.Open("[email protected]@@_0960.JPG")
    fi, _ := f.Stat()
    
    fmt.Println(s.WriteWithContext(context.Background(), "[email protected]@@¥&_0960.JPG", f, fi.Size())) // error
    fmt.Println(s.WriteWithContext(context.Background(), "IMG_0960.JPG", f, fi.Size()))      // success
    
    bug 
    opened by minhjh 8
  • GCS如何配置config string?

    GCS如何配置config string?

    懵逼中,尝试了很多次都失败,貌似是仓库地址和 x-goog-project-id 的问题,能否帮我看下,我该怎么配置连接字符串, 例如:

    access_key: abc
    secret_key: qwe project-id: 123456 url: https://console.cloud.google.com/storage/browser/bucket123 怎么配是对的? gcs://static:abc:[email protected]:console.cloud.google.com:443/bucket123 gcs://static:abc:[email protected]:console.cloud.google.com:443/bucket123/?x-goog-project-id=123456

    都是错的,我该怎么配置?谢谢!

    opened by lonely2099 8
  • services: Unify error handling

    services: Unify error handling

    Proposal: https://github.com/Xuanwo/storage/blob/master/docs/design/11-error-handling.md Spec: https://github.com/Xuanwo/storage/blob/master/docs/spec/1-error-handling.md

    • [x] azblob
    • [x] cos
    • [x] dropbox
    • [x] fs
    • [x] gcs
    • [x] kodo
    • [x] oss
    • [x] qingstor
    • [x] s3
    • [x] uss
    enhancement 
    opened by Xuanwo 8
  • When migrate to Factory init, make build failed

    When migrate to Factory init, make build failed

    When migrate to Factory init, make build failed with err:

    2021/11/19 10:56:25 not handled type &ast.FuncType{Func:1884, Params:(*ast.FieldList)(0xc0002be0f0), Results:(*ast.FieldList)(0xc0002be120)}
    

    And I just don't know what happend.

    opened by Joey2132 6
  • services/s3: Integration test fails when using the latest MinIO

    services/s3: Integration test fails when using the latest MinIO

    Excepted Behavior

    go-service-s3 should compatible with MinIO and pass integration test with MinIO.

    Current Behavior

    • Integration test passed when using minio RELEASE.2021-06-17T00-10-46Z
    • Decode REST XML response failed when using MinIO Console
      When Read a file     storager.go:55: write: Storager s3 {Name: xxxxx, WorkDir: /dc2c38b3-2de2-413c-8399-92cb1ba879e8/}, [3dd549ed-b614-45b7-9848-d33fdac98238]: unexpected: SerializationError: failed to decode REST XML response
                    status code: 200, request id:
            caused by: XML syntax error on line 1: element <link> closed by </head>
      

    Steps to Reproduce

    Run integration test for go-service-s3 with the following config:

    STORAGE_S3_INTEGRATION_TEST=on
    STORAGE_S3_CREDENTIAL=hmac:minioadmin:minioadmin
    STORAGE_S3_ENDPOINT=https:play.min.io:9443
    STORAGE_S3_NAME=<bucketname>
    STORAGE_S3_LOCATION=local
    

    Also we need to set endpoint for initialization:

    pairs.WithEndpoint("https:play.min.io:9443")
    

    Environment

    • MinIO Console
    opened by JinnyYi 6
  • NewStoragerFromString doesn't register service while initiating a new storager

    NewStoragerFromString doesn't register service while initiating a new storager

    Calling NewStoragerFromString using a connection string with the value fs:///tmp, returns ErrServiceNotRegistered.

    I'm using go-service-fs/v3 as the go-storage service.

    I found out that ok's value is returned as false: https://github.com/beyondstorage/go-storage/blob/d1451868532fd29cf90633f65b607eb9ef6e472b/services/new.go#L64-L68

    Although ty is logged as fs in the error below, I think fs is not getting registered as a key in storagerFnMap, due to some issue in RegisterStorager().

    Error Returned:

    2021/07/25 21:08:35 service init failed: fs new_storager: []: service not registered
    exit status 1
    

    Code for reproducing the same error:

    package main
    
    import (
        "bytes"
        "log"
    
        "github.com/beyondstorage/go-storage/v4/pairs"
        "github.com/beyondstorage/go-service-fs/v3"
    )
    
    func main() {
        // Init a service. Fails to the register the service here.
        store, err := services.NewStoragerFromString("fs:///tmp")
        if err != nil {
            log.Fatalf("service init failed: %v", err)
        }
    
        content := []byte("Hello, world!")
        length := int64(len(content))
        r := bytes.NewReader(content)
    
        _, err = store.Write("hello", r, length)
        if err != nil {
            log.Fatalf("write failed: %v", err)
        }
    
        var buf bytes.Buffer
    
        _, err = store.Read("hello", &buf)
        if err != nil {
            log.Fatalf("storager read: %v", err)
        }
    
        log.Printf("%s", buf.String())
    }
    
    opened by burntcarrot 6
  • Add generate diff check to make sure generated.go not changed

    Add generate diff check to make sure generated.go not changed

    Background

    go-storage has build a codegen definitions (cmd/definitions) to help generated code for our services. And services will call the codegen in doc.go like:

    https://github.com/beyondstorage/go-service-s3/blob/4217898092e96b6c2163f4281133eebd8856d90b/doc.go#L4-L6

    package s3
    
    //go:generate go run -tags tools github.com/beyondstorage/go-storage/v4/cmd/definitions service.toml
    

    But new contributors could miss the code generate and send PRs with not generated code. So It's better to add a check to make sure our generated.go generated correctly.

    Moreover, this workflow checks not only geneated.go but also go.mod / go.sum and so on.

    Action

    We can add a new workflow called diff_check.yml in which we:

    • setup-go
    • checkout services
    • run make build
    • run git diff and make sure the output is empty (just we did for gofmt)
    good first issue 
    opened by Xuanwo 6
  • beyondstorage.io website is down causing dependabot to break

    beyondstorage.io website is down causing dependabot to break

    The documentation website and go.beyondstorage.io are both down which causes gitlab-dependabot to throw this error:

    go.beyondstorage.io/services/fs/[email protected]: unrecognized import path "go.beyondstorage.io/services/fs/v4": https fetch: Get "https://go.beyondstorage.io/services/fs/v4?go-get=1": dial tcp: i/o timeout
    

    Dependabot has no way to skip this dependency as ignored dependencies are only skipped after the go mod package manager fetches all new versions. This error also causes dependabot to exit so I have no automated dependency updates for any packages. Can someone please fix the website or not self host it? Great library by the way!

    opened by The-TT-Hacker 5
  • fix(services/gcs): Load more then 200 objects from GCS bucket

    fix(services/gcs): Load more then 200 objects from GCS bucket

    When listing bucket that contains > 200 objects, Iterator gets stuck (returns same first 200 objects). Fixed by adding object offset supported by official gcs library.

    opened by bart84ek 0
  • services/obs: Obs does not support read with size and offset

    services/obs: Obs does not support read with size and offset

    Currently obs does not support read with size and offset. When I migrate to Factory init, the integration test requires that TestReadWithOffset item status should be pass. Before I migrate issue #1022, which I should choose?

    1. Ignore read operation
    2. Hang up the migration of obs
    opened by Joey2132 2
  • services/fs: When migrate to Factory init, unknown err occurred in make build operation.

    services/fs: When migrate to Factory init, unknown err occurred in make build operation.

    When migrate to Factory init, unknown error occurred in make build operation. See more details of migration in draft pr #1039. An error occurred in generate step. And We didn't exit the build with error code, so the build is not break. error information:

    2021/11/19 03:02:14 not handled type &ast.FuncType{Func:1884, Params:(*ast.FieldList)(0xc000209500), Results:(*ast.FieldList)(0xc000209560)}
    

    We need to fix it.

    opened by Joey2132 0
Releases(services/s3/v3.0.1)
  • services/s3/v3.0.1(Oct 27, 2021)

  • services/uss/v3.0.0(Oct 24, 2021)

  • services/storj/v1.0.0(Oct 24, 2021)

  • services/s3/v3.0.0(Oct 24, 2021)

    v3.0.0 - 2021-10-23

    Added

    • feat(services/s3): Add missing option back (#880)

    Changed

    • feat(services/s3): Move services s3 back (#853)
    • refactor(services/s3): Cleanup the logic of client init (#876)
    • ci(*): Upgrade minimum version to Go 1.16 (#916)

    Upgraded

    • build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 (#940)
    • build(deps): bump github.com/aws/aws-sdk-go-v2/config in /services/s3 (#941)
    Source code(tar.gz)
    Source code(zip)
  • services/qingstor/v4.0.0(Oct 24, 2021)

  • services/oss/v3.0.0(Oct 24, 2021)

  • services/minio/v0.3.0(Oct 24, 2021)

    v0.3.0 - 2021-10-23

    Changed

    • feat(services/minio): Move services minio back (#913)
    • ci(*): Upgrade minimum version to Go 1.16 (#916)

    Upgraded

    • build(deps): bump github.com/minio/minio-go/v7 in /services/minio (#915)
    Source code(tar.gz)
    Source code(zip)
  • services/memory/v0.4.0(Oct 24, 2021)

  • services/kodo/v3.0.0(Oct 24, 2021)

    v3.0.0 - 2021-10-23

    Changed

    • feat(services/kodo): Move services kodo back (#911)
    • ci(*): Upgrade minimum version to Go 1.16 (#916)

    Upgraded

    • build(deps): bump github.com/qiniu/go-sdk/v7 in /services/kodo (#914)
    Source code(tar.gz)
    Source code(zip)
  • services/ipfs/v0.3.0(Oct 24, 2021)

  • services/hdfs/v0.3.0(Oct 24, 2021)

  • services/gdrive/v0.2.0(Oct 24, 2021)

    v0.2.0 - 2021-10-23

    Changed

    • feat(services/gdrive): Move services gdrive back (#903)
    • ci(*): Upgrade minimum version to Go 1.16 (#916)

    Upgraded

    • build(deps): bump google.golang.org/api in /services/gdrive (#925)
    Source code(tar.gz)
    Source code(zip)
  • services/gcs/v3.0.0(Oct 24, 2021)

    v3.0.0 - 2021-10-23

    Changed

    • feat(services/gcs): Move services gcs back (#896)
    • ci(*): Upgrade minimum version to Go 1.16 (#916)

    Upgraded

    • build(deps): bump cloud.google.com/go/storage in /services/gcs (#899)
    • build(deps): bump google.golang.org/api in /services/gcs (#926)
    Source code(tar.gz)
    Source code(zip)
  • services/ftp/v0.3.0(Oct 24, 2021)

  • services/fs/v4.0.0(Oct 24, 2021)

  • services/dropbox/v3.0.0(Oct 24, 2021)

  • services/cos/v3.0.0(Oct 24, 2021)

  • services/bos/v2.0.0(Oct 24, 2021)

  • services/azfile/v1.0.0(Oct 24, 2021)

  • services/azblob/v3.0.0(Oct 24, 2021)

  • v5.0.0(Oct 15, 2021)

    What's Changed

    • ci: Sync github actions by @BeyondRobot in https://github.com/beyondstorage/go-storage/pull/834
    • GSP-840: Convert to monorepo by @Xuanwo in https://github.com/beyondstorage/go-storage/pull/840
    • *: Rename to go.beyondstorage.io by @Xuanwo in https://github.com/beyondstorage/go-storage/pull/842
    • credential,endpoint: Split from pkg by @Xuanwo in https://github.com/beyondstorage/go-storage/pull/843
    • refactor(tests): Move go-integration-tests here by @Xuanwo in https://github.com/beyondstorage/go-storage/pull/847
    • GSP-839: Add Support for Content-Disposition by @Joey-1445601153 in https://github.com/beyondstorage/go-storage/pull/839
    • Bump to version 5.0.0 by @Xuanwo in https://github.com/beyondstorage/go-storage/pull/855

    New Contributors

    • @Joey-1445601153 made their first contribution in https://github.com/beyondstorage/go-storage/pull/839

    Full Changelog: https://github.com/beyondstorage/go-storage/compare/v4.8.0...v5.0.0

    Source code(tar.gz)
    Source code(zip)
  • endpoint/v1.2.0(Oct 14, 2021)

    v1.2.0 - 2021-10-14

    Added

    • feat: Add support for http://example.com (https://github.com/beyondstorage/go-endpoint/pull/17)

    Changed

    • Package rename to go.beyondstorage.io/endpoint
    Source code(tar.gz)
    Source code(zip)
  • credential/v1.0.0(Oct 14, 2021)

  • v4.8.0(Sep 30, 2021)

    v4.8.0 - 2021-09-30

    Added

    • feat: Generate code via Xuanwo/gg (#728, #737, #738, #739, #740, #742)
    • docs/rfcs: GSP-749 Unify Path Behavior (#749)
    • docs: Add README.zh-CN.md (#750)
    • docs/rfcs: GSP-751 Write Empty File Behavior (#751)
    • docs: Add description of GSP-751 (#759)
    • feat: Implement GSP-749 unify path behavior (#822)
    • feat: Replace separator with / in path for service (#823)
    • docs/rfcs: GSP-826 Add Multipart HTTP Signer Support (#826)
    • feat: Add Multipart HTTP Signer support (#829)

    Changed

    • docs: Add the services bos and obs to the README (#748)
    • refactor: Cleanup definition generate logic (#754)
    • feat: Migrate internal iterator generator to definitions (#755)
    • ci: Sync github actions (#757)

    Fixed

    • fix: Compilation fails if Default*Pairs unimplemented in service (#821)
    • fix: Not enough arguments in call to Service.formatError (#824)
    • fix: Replace each backslash in path with a slash (#825)
    • fix: Fixed the error when no function is declared under the namespace (#831)

    Upgraded

    • build(deps): bump github.com/pelletier/go-toml from 1.9.3 to 1.9.4 (#746)

    Join in release discussion

    Source code(tar.gz)
    Source code(zip)
  • v4.7.0(Sep 2, 2021)

    v4.7.0 - 2021-09-02

    Added

    • tests: Add test for NewStorageFromString (#724)
    • docs/rfcs: GSP-725 Add Defaultable Property for Pair (#725)
    • docs/rfcs: GSP-729 Redesign HTTP Signer (#729)
    • cmd/definitions: Implement GSP-725 Add Defaultable Property for Pair (#730)
    • definitions: Implement GSP-729 Redesign HTTP Signer (#732)

    Changed

    • docs/rfc: Remove pair declare description for GSP-729 (#735)

    Deprecated

    • definitions: Deprecate Reacher and expire (#734)

    Join in release discussion

    Source code(tar.gz)
    Source code(zip)
  • v4.6.0(Aug 25, 2021)

    v4.6.0 - 2021-08-25

    Added

    • feat: Support features and default paris in connection string (#713)
    • feat: Set Features with feature pairs (#716)
    • feat: Allow append pairs for New{Servicer,Storager}FromString (#718)
    • feat: Set DefaultPairs with defaultable pairs (#719)
    • ci: Add cross build (#721)

    Changed

    • cmd/definitions: Remove conflict from pair (#720)

    Fixed

    • definitions: Fix naming format for http signer (#714)

    Join in release discussion

    Source code(tar.gz)
    Source code(zip)
  • v4.5.0(Aug 19, 2021)

    v4.5.0 - 2021-08-19

    Added

    • tests: Implement bench for List (#687)
    • ci: Add golangci-lint (#690)
    • docs/rfcs: GSP-700 Config Features and DefaultPairs via Connetion String (#700)
    • docs/rfcs: GSP-706 Support HTTP Signer (#706)
    • feat: Generate feature pairs (#708)
    • definitions: Implement GSP-706 Support HTTP Signer (#709)
    • feat: Generate default pairs (#710)

    Changed

    • docs: Update go-storage docs link (#696)
    • docs: Update links to matrix (#701)
    • docs: Update readme about services support (#705)

    Fixed

    • *: Fix ineffectual assignments (#691)
    • definitions: Fixed a description error in CreateLink (#698)

    Join in release discussion

    Source code(tar.gz)
    Source code(zip)
  • v4.4.0(Jul 22, 2021)

    v4.4.0 - 2021-07-22

    Added

    • docs: GSP-669 Feature Lifecycle (#669)
    • definitions: Implement GSP-86 Add CreateLink (#674)

    Changed

    • docs: Update rfc README, fix GSP-669 typo (#673)
    • cmd: Remove not used package in service.tmpl (#679)
    • definitions: Implement GSP-41 Turn Pair Expire into Duration (#681)
    • tests: Split from cmd definitions (#685)

    Upgraded

    • build(deps): Bump github.com/google/uuid from 1.2.0 to 1.3.0 (675)

    Join in release discussion

    Source code(tar.gz)
    Source code(zip)
  • v4.3.2(Jul 15, 2021)

  • v4.3.1(Jul 15, 2021)

Owner
Application Oriented Storage
Application Oriented Storage
Zadig is a cloud native, distributed, developer-oriented continuous delivery product.

Zadig Developer-oriented Continuous Delivery Product English | 简体中文 Table of Contents Zadig Table of Contents What is Zadig Quick start How to use? Ho

KodeRover 1.6k Aug 9, 2022
Zadig is a cloud native, distributed, developer-oriented continuous delivery product.

Zadig Developer-oriented Continuous Delivery Product ⁣ English | 简体中文 Table of Contents Zadig Table of Contents What is Zadig Quick start How to use?

KodeRover 30 May 12, 2021
Openshift's hpessa-exporter allows users to export SMART information of local storage devices as Prometheus metrics, by using HPE Smart Storage Administrator tool

hpessa-exporter Overview Openshift's hpessa-exporter allows users to export SMART information of local storage devices as Prometheus metrics, by using

Shachar Sharon 0 Jan 17, 2022
KubeOrbit is an open-source abstraction layer library that turns easy apps testing&debuging on Kubernetes in a new way

KubeOrbit is an open-source abstraction layer library that turns easy apps testing&debuging on Kubernetes in a new way

TeamCode 443 Aug 8, 2022
Linux provisioning scripts + application deployment tools. Suitable for self-hosting and hobby-scale application deployments.

Apollo Linux provisioning scripts + application deployment tools. Suitable for self-hosting and hobby-scale application deployments. Philosophy Linux-

K T Corp. 1 Feb 7, 2022
Flash-metrics - Flash Metrics Storage With Golang

Flash Metrics Storage bootstrap: $ echo -e "max-index-length = 12288" > tidb.con

null 3 Jan 8, 2022
Imaginarium - A simple golang image storage engine

Imaginarium A simple golang image storage engine. Used to create and store diffe

Viktor Vasary 0 Jan 10, 2022
Mini file storage with Go (Golang)

#Microstorage This is my exercise of creating simple file storage with GoLang Purpose: store and manipulate with user`s images in my pet projects ##Ve

Danila Minustin 1 Mar 13, 2022
《蓝眼云盘》(Eyeblue Cloud Storage)

English Version 蓝眼云盘(3.1.2) 在线Demo (体验账号: demo 密码:123456) 蓝眼云盘是蓝眼开源系列代表作品之一,致力于打造精致,优雅,简约的云盘。核心功能如下: 文件列表 文件/文件夹上传 + 拖拽上传 文件分享 文件监控统计 回收站 多用户 WebDav 扫

蓝眼 2.6k Aug 17, 2022
Sample Driver that provides reference implementation for Container Object Storage Interface (COSI) API

cosi-driver-minio Sample Driver that provides reference implementation for Container Object Storage Interface (COSI) API Community, discussion, contri

Kubernetes SIGs 6 Apr 14, 2022
topolvm operator provide kubernetes local storage which is light weight and high performance

Topolvm-Operator Topolvm-Operator is an open source cloud-native local storage orchestrator for Kubernetes, which bases on topolvm. Supported environm

Alauda.io 21 Jun 29, 2022
An high performance and ops-free local storage solution for Kubernetes.

Carina carina 是一个CSI插件,在Kubernetes集群中提供本地存储持久卷 项目状态:开发测试中 CSI Version: 1.3.0 Carina architecture 支持的环境 Kubernetes:1.20 1.19 1.18 Node OS:Linux Filesys

BoCloud 10 May 18, 2022
Carina: an high performance and ops-free local storage for kubernetes

Carina English | 中文 Background Storage systems are complex! There are more and more kubernetes native storage systems nowadays and stateful applicatio

null 358 Aug 8, 2022
Container Storage Interface components for SPIFFE

SPIFFE CSI Driver WARNING: This project is in the "Development" phase of the SPIFFE Project Maturity Phases. A Container Storage Interface driver for

SPIFFE 19 Aug 16, 2022
StaticBackend is a simple backend server API handling user mgmt, database, storage and real-time component

StaticBackend is a simple backend that handles user management, database, file storage, forms, and real-time experiences via channel/topic-based communication for web and mobile applications.

StaticBackend 410 Aug 10, 2022
A set of components that can be composed into a highly available metric system with unlimited storage capacity

Overview Thanos is a set of components that can be composed into a highly available metric system with unlimited storage capacity, which can be added

Rohan 0 Oct 20, 2021
Dynamically provisioning persistent local storage with Kubernetes

Local Path Provisioner Overview Local Path Provisioner provides a way for the Kubernetes users to utilize the local storage in each node. Based on the

Rancher 1.3k Aug 12, 2022
A letsencrypt client that uses etcd as its storage.

letsencrypt-with-etcd This is a letsencrypt client that uses etcd as its storage. It stores your (automatically created) LetsEncrypt account in /letse

Jille Timmermans 1 Jan 20, 2022
SMART information of local storage devices as Prometheus metrics

hpessa-exporter Overview Openshift's hpessa-exporter allows users to export SMART information of local storage devices as Prometheus metrics, by using

Red Hat Storage 0 Feb 10, 2022