EdgeFS - decentralized data fabric layer for Edge/IoT, Edge/Fog and Cloud Computing
EdgeFS is high-performance, low-latency, small memory footprint, decentralized data fabric system released under Apache License v2.0 developed in C/Go.
EdgeFS is built around decentralized immutable metadata consistency to sustain network partitioning up to many days and yet provide consistent global data fabric namespace via unique versions reconciliation technique.
EdgeFS advanced globally immutable versioning with file-level granularity unlimited snapshots, global (LAN/WAN) data deduplication and geo-transparent data access enables variety of decentralized Edge/Fog/Cloud Computing use cases.
It integrates with Kubernetes and Docker Compose. Enables Edge/Fog/Cloud applications to use Amazon S3 compatible API with AI/ML S3X enhancements, built-in NoSQL Database, scale-out File via NFS, scale-out block via iSCSI/NBD.
EdgeFS is capable of spanning unlimited number of geographically distributed sites (Geo-site), connected with each other as one global name space data fabric running on top of Kubernetes platform, providing persistent, fault-tolerant and high-performance fully compatible S3 Object API and CSI volumes for stateful Kubernetes Applications.
At each Edge location, EdgeFS segment nodes deployed as containers (Kubernetes StatefulSet or Docker Compose) on physical or virtual nodes, pooling available storage capacity and presenting it via compatible S3/NFS/iSCSI/etc storage emulated protocols for cloud-native applications running on the same or dedicated servers.
EdgeFS can run on top of any underlying storage architecture - high-performance NVMe Fabric, local raw devices, existing filesytems or high-performance key-value databases.
How it works, in a Nutshell?
Essentially it is high-performance versioning system that is capable of achieving 1,000,000+ versions per second rates, where each version is universally identifieable and location independent.
If you familiar with "git", where all modifications are fully versioned and globally immutable, it is highly likely you already know how it works at its core. Think of it as a world-scale copy-on-write technique. Now, if we can make a parallel for you to understand it better - what EdgeFS does, it expands "git" paradigm to object storage and making Kubernetes Persistent Volumes accessible via emulated storage standard protocols e.g. File, Object, NoSQL databases and even block devices, in a high-performance and low-latency ways. With fully versioned modifications, fully immutable metadata and data, users data can be transparently replicated, distributed and dynamically pre-fetched across many Geo-sites.
Developer Guides, Services and APIs
- Development Guide - details on build environment
- Harness Tests - details on how to run Harness Test package
- Minimalistic CLI tool - CLI tool implemented in Go
- LIBCCOW API - generic client library and its direct access API
- NFS and FSIO API - POSIX file system layer API
- Block and LIBCCOWVOL API - Block device API and iSCSI/NBD integration
- Edge-X S3 API - details on advanced S3-compabile features, e.g. Versioned Edits, Snapshots, etc
- FIO Engines - details on how to run FIO benchmarking tool at various directly conntected I/O layers
- LIBPMU userspace networking - details on libpmu, DPDK-like library
Build it (Production Image)
Make sure Docker package is installed on your build server with version >= 17.05 with support for staged builds. Execute the following command:
git clone firstname.lastname@example.org:Nexenta/edgefs.git cd edgefs docker build -t edgefs .
- Initialization - generic initialization procedure, applicable
- Kubernetes RookIO Deployment - segment deployment procedure
- Kubernetes RookIO CSI Integration - detailed instructions on how to get CSI configured with EdgeFS RookIO
- Kubernetes RookIO Monitoring - Prometheus and Graphana integrations
- Kubernetes RookIO VDEV Management - disk/VDEV health checking, replacement, addition, etc
- Kubernetes RookIO Upgrade - detailed instructions on how to execute rolling upgrade
- Kubernetes RookIO GUI - segment dashboard, CRD wizard
- Kubernetes RookIO NFS - setting up Scale-Out NFS (File)
- Kubernetes RookIO S3 - setting up AWS S3 compatible interface (Object)
- Kubernetes RookIO S3X AI/ML - setting up S3X interface for AI/ML, NoSQL and other intensive low latency workloads
- Kubernetes RookIO iSCSI - setting up Scale-Out iSCSI (Block)
- Kubernetes RookIO ISGW (Global Namespaces) - setting up geo-transparent capable global name space
- Kubernetes RookIO OpenStack/SWIFT) - setting up OpenStack/SWIFT inteface (Object)
Join our growing community!
Anyone who wants to discuss the direction of the project, design and implementation reviews, or general questions with the broader community is welcome and encouraged to join.