The main goal of the project is to provide fast and reliable disk only storage technology for CERN LHC use cases. The following picture demonstrates the main use case at CERN:
The phasing-out production versions is called Beryl/Aquamarine v0.3.X.
The stable production version called Citrine is currently v4.2.X
Since release version 0.1.1 EOS is available under GPL v3 license.
EOS is made by three components:
The initial architecture is using an in-memory namespace implementation with a master-slave high-availability model. This implementation provides very low-latency for meta data access.
Since the CITRINE release, the architecture has been modified to provide an optimal in-memory namespace cache and a KV store for persistency. This was necessary to overcome the scalability limitation of the meta-data service given by the maximum available RAM of MGM nodes.
EOS is implemented using the XRootD Framework.
EOS uses a storage index concept to identify where and how files are stored. These information is stored inside the meta data of each file.
Files are stored with a a so called layout. The following layouts are supported
EOS groups storage resources into three logical categories:
A space is used to reference a physical location when files are placed by the storage system. spaces are made by placement groups. groups consist of one or many filesystems. The EOS scheduler selects a group to store all replicas or chunks of a file are stored within a single group. Therefore the filesystems within a group should never be on the same node to guarantee availability with node failures.
The native protocol is the xrootd protocol, which provides additional functionalities like vector reads, third party copy transfers etc.
A second embedded protocol is http/webdav currently implemented using libmicrohttpd.
EOS can be used like a filesystem using FUSE clients. There are two implementations available:
EOS has been extended to work similar to Owncloud as a sync and share platform. The front-end service is called CERNBox.
The target architecture for the next major release version is shown in the following figure:
The goal is to reach full scalability and high-availability of all service components and to embed better external storage resources like shared filesystems and cloud storage.