All Projects → gluster → Glusterfs Java Filesystem

gluster / Glusterfs Java Filesystem

Licence: other
GlusterFS for Java

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Glusterfs Java Filesystem

gcsfs
Google Cloud Storage filesystem for PyFilesystem2
Stars: ✭ 36 (-28%)
Mutual labels:  storage, filesystem
Flydrive
☁️ Flexible and Fluent framework-agnostic driver based system to manage storage in Node.js
Stars: ✭ 275 (+450%)
Mutual labels:  storage, filesystem
FireFiles
Powerful Android File Manager for everything that runs on Android OS (Android TV, Android Watch, Mobile, etc)
Stars: ✭ 37 (-26%)
Mutual labels:  storage, filesystem
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 (+5746%)
Mutual labels:  storage, filesystem
S5cmd
Parallel S3 and local filesystem execution tool.
Stars: ✭ 565 (+1030%)
Mutual labels:  storage, filesystem
datoteka
A filesystem toolset and storage implementation for Clojure.
Stars: ✭ 59 (+18%)
Mutual labels:  filesystem, nio
Shrine
File Attachment toolkit for Ruby applications
Stars: ✭ 2,903 (+5706%)
Mutual labels:  storage, filesystem
Mc
MinIO Client is a replacement for ls, cp, mkdir, diff and rsync commands for filesystems and object storage.
Stars: ✭ 1,962 (+3824%)
Mutual labels:  storage, filesystem
Infinit
The Infinit policy-based software-defined storage platform.
Stars: ✭ 363 (+626%)
Mutual labels:  storage, filesystem
Juicefs
JuiceFS is a distributed POSIX file system built on top of Redis and S3.
Stars: ✭ 4,262 (+8424%)
Mutual labels:  storage, filesystem
Autarky
Liberating disk space from 📁 node_modules
Stars: ✭ 203 (+306%)
Mutual labels:  storage, filesystem
Diskover
File system crawler, disk space usage, file search engine and file system analytics powered by Elasticsearch
Stars: ✭ 977 (+1854%)
Mutual labels:  storage, filesystem
Tus Ruby Server
Ruby server for tus resumable upload protocol
Stars: ✭ 172 (+244%)
Mutual labels:  storage, filesystem
MeowDB.js
Database in JSON (Node.JS Library)
Stars: ✭ 12 (-76%)
Mutual labels:  storage, filesystem
Sharesniffer
Network share sniffer and auto-mounter for crawling remote file systems
Stars: ✭ 168 (+236%)
Mutual labels:  storage, filesystem
vzvol
vzvol is a general use ZFS zvol management tool, that handles creation, destruction, listing, and formatting with various FSes, in an easy to use single program
Stars: ✭ 27 (-46%)
Mutual labels:  storage, filesystem
File Storage
File storage abstraction for Yii2
Stars: ✭ 116 (+132%)
Mutual labels:  storage, filesystem
Diskover Web
Web file manager, disk space usage, storage search engine and file system analytics for diskover
Stars: ✭ 121 (+142%)
Mutual labels:  storage, filesystem
Glusterfs
Gluster Filesystem : Build your distributed storage in minutes
Stars: ✭ 3,437 (+6774%)
Mutual labels:  storage, filesystem
Filegator
Powerful Multi-User File Manager
Stars: ✭ 587 (+1074%)
Mutual labels:  storage, filesystem

glusterfs-java-filesystem

This project aims to be a complete implementation of a Java7/NIO.2 File System Provider backed by GlusterFS via libgfapi-jni

Build Status

Test coverage

Test Coverage & Code Quality

Please let me know if you use this project, even if you're just checking it out, I'd like to hear from you.

I prefer to be contacted on IRC, Twitter, or a Github issue. You can find me, semiosis, in #gluster on Freenode IRC. My twitter handle is @pragmaticism.

Thanks!

Use

Adding to your maven project

<dependencies>
    <dependency>
        <groupId>com.peircean.glusterfs</groupId>
        <artifactId>glusterfs-java-filesystem</artifactId>
        <version>1.0.4</version>
    </dependency>
</dependencies>

Adding to your non-maven project

The maven shade plugin can build a unified (shaded) JAR suitable for dropping in to the classpath of any JVM application.

You can build a "shaded" JAR by cloning the project and running the following command in the glusterfs-java-filesystem subdirectory:

cd glusterfs-java-filesystem
mvn package shade:shade

Maven will report the path of this shaded JAR. You can run export CLASSPATH=<path-to-shaded.jar> in a terminal before running your other application.

Contact me (on IRC, Twitter, or in a Github issue) if you need help obtaining a JAR, if you can't, or don't want to, build it with maven yourself.

Access GlusterFS volumes with the NIO.2 API

Once this library is in your classpath all you need to do in your code is access a GlusterFS URI, for example

gluster://server:volume/path

Example usage

A Vagrantfile in the root of this repository sets up a VM with a volume called foo at IP address 172.31.31.31 on a private network.

The Example.java file in the glusterfs-java-filesystem-example project provides a demonstration of the capabilities of this project from a high level consumer's point of view, it connects to the volume on the vagrant VM.

To run:

cd glusterfs-java-filesystem-example
vagrant up
mvn exec:exec

Roadmap

TODO:

  • Replace Example program with formal integration test suite
  • Align project versions with glusterfs (this project & libgfapi-jni)
  • Update watch service to use libgfchangelog (instead of polling)
  • Finish attribute support
    Owner/group names & ability to change
    More ways to set permissions
  • Finish integration testing for advanced synchronous file IO (reading/writing portion of file)
  • Asychronous file I/O
  • Better error reporting & handling (utilize UtilJNI.strerror() as part of IOException throws)
  • Finish readSymbolicLink unit tests
  • Publish test coverage report to Coveralls.io
    Blocked due to use of Atlassian Clover
  • Create hard links

Completed:

  • Connect to a GlusterFS volume using the NIO.2 API
  • Basic synchronous file I/O
    Read the contents of a file all at once
    Write a chunk of bytes to a file all at once
  • File attributes
    See owner/group id, size, permissions, and last modified timestamp on files and directories
    Set permissions
  • Filesystem/volume stats
    See the total, free, and usable bytes in a volume
  • Directory listing (with filtering)
  • Move/rename files
  • Watch files for changes
    Complete except for GlusterWatchKeyTest, in progress
  • Create & Read symlinks (read tests incomplete)
  • Publish test coverage & code quality reports to SonarQube
  • Delete files
  • Copy files
  • Advanced synchronous file IO

Contributing/Development

I'd appreciate your help with this project. If you have any feedback at all please get in touch. I'm interested in everything from gripes to pull requests.

Project License

Until further notice (made here and in LICENSE.txt) this project is licensed under the terms of the 3-clause BSD license, as written in LICENSE.txt.

The licensing is likely to change in the near future as the project matures.

Acknowledgements

  • May G. & Ian H. for their hard work & dedication to improving this project.
  • Atlassian for providing a free license for their most excellent Java code quality analyzer, Clover.
  • All the open source projects we depend on: GlusterFS, HawtJNI, Lombok, JUnit, Mockito, PowerMock, TestNG, sonarqube, Hadoop (whose Glob to Regex converter we borrowed), Maven and all the Maven plugins, and of course Java.
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].