Skip to content
pwehrle edited this page Jul 8, 2014 · 1 revision

Overview

What does eguan stand for?

Eguan is the anagram of 'nuage', the french word for cloud. It was implemented by Oodrive as a storage prototype for the nu@ge project. Nu@ge is a project of a french consortium aimed at developing a green cloud.

What does eguan do?

This application is a replicated storage system. It provides storage volumes to clients via an iSCSI or NBD connection and manages the history of this volumes. Each volume history is made of devices and snapshots replicated on several nodes.

The system uses copy-on-write snapshots and data deduplication to improve storage space utilization.

How does it work?

The system is composed of several nodes, connected in a cluster. Each node has an unique identifier (UUID) and automatically synchronizes its data with other nodes.

An owner or tenant is an entity which owns one or several volume manager (VOLD).

VOLD: Volume management daemon - The main program. It manages one or several versioned volumes. It contains an iSCSI server, a NBD server, several VVR and a JMX server for administration.

VVR: Versioned Volume Repository - The volume history. An history is composed of devices and snapshots. A hash value is attributed to each data block depending on its content. The block hash values for a snapshot or a device are stored in a NRS file and the blocks are stored in a key-value database (IBS).

NRS: Nuage Repository System - The file format for storing the block keys associated with each item of the history.

IBS: Immutable Block System - A Key-value base. It contains the data blocks written in a VVR.

iSCSI server: Internet Small Computer System Interface (RFC 3720 and following) server - It exposes the active devices using the iSCSI protocol.

NBD server: Network Block Device server - It exposes the active devices using the NBD protocol.

REST server: REpresentational State Transfer server - It exposes device/snapshot/VVR as resources in order to administrate them.

Cinder: The OpenStack Cinder block storage service exposes the devices as Openstack volumes (via a driver connecting to the REST server). It allows attaching volumes to virtual machines, supports the handling of snapshots and copying from and to disk images.

How is it implemented?

Where are the sources?

The following modules can be found in main/java:

dtx: The distributed transaction manager.

full: The module used to launch full coverage tests (see Unit tests)

iscsisrv: The iSCSI server.

jni: The Immutable Block System (java binding) and native hash bindings.

nbdsrv: The NBD server.

net: The client and server to exchange messages between the nodes.

nrs: The NRS module.

proto: The serialization mechanism used by the nodes to communicate.

rest: The REST server which is used to administrate the VOLD

utils: Common utility modules

vold: The Volume management Daemon

vvr: The VVR module

webui: The web user interface

External modules are in the thirdparty/ directory and the tools needed to build can be found in the tools/ directory.

Where are the assemblies?

5 different assemblies can be produced for distribution (under main/assembly):

Vold: Runs a single vold without REST server and without Cinder.

Vost: Runs a vold with the REST server.

Vostwui: Runs a vold with the REST server and the web user interface.

Cinost: Runs a vold with the REST server and cinder.

Cinostwui: Runs a vold with the REST server, cinder and the web user interface.

Summary