# Enterprise Storage OS

Enterprise Storage OS, also known as ESOS, is a Linux distribution that serves as a block-level storage server in a storage area network (SAN). ESOS is composed of open-source software projects that are required for a Linux distribution and several proprietary build and install time options. The SCST project is the core component of ESOS; it provides the back-end storage functionality.

## Platform

ESOS is a niche Linux distribution. ESOS is intended to run on a USB flash drive, or some other type of removable media such as Secure Digital, CompactFlash, etc. ESOS is a memory resident operating system: At boot, a tmpfs file system is initialized as the root file system and the USB flash drive image is copied onto this file system. Configuration files and logs are periodically written to a USB flash drive (persistent storage) or by user intervention when configuration changes occur.

## Interface

ESOS utilizes a text-based user interface (TUI) for system management, network configuration, and storage provisioning functions. The TUI used in ESOS is written in C; the ncurses and CDK libraries are used.

## Front-end connectivity

ESOS supports connectivity on several different front-end storage area network technologies. These core functions are supported by SCST and third-party target drivers that vendors have developed for SCST:
* Fibre Channel: QLogic HBAs are natively supported, and Emulex OneConnect FC HBAs can be supported by a build time option (requiring the Emulex OCS SDK)
* InfiniBand: Mellanox, QLogic, and Chelsio IB HCAs, among others, are supported
* Fibre Channel over Ethernet (FCoE): A software target implementation supports NICs with DCB/DCBX capabilities, or build time options exist for supporting Emulex OneConnect FCoE CNAs (requires the Emulex OCS SDK) and Chelsio Uwire FCoE CNAs.
* iSCSI: Will work over any IP communication method supported by ESOS (Ethernet, IPoIB).

## Back-end storage

Open-source software projects and commodity computing server hardware are used on the back-end side to provide the underlying storage utilized by the front-end target interfaces:
* Btrfs, XFS, and ext4 are all supported file systems for virtual disk files used with the "vdisk_fileio" device handler.
* Popular, modern hardware RAID controllers from LSI, Adaptec, HP, and Areca are also supported in ESOS, including install-time CLI tool integration for these adapters.
* Clustering and high-availability support is made possible by the Pacemaker and Corosync cluster software stack.
* DRBD is fully supported to facilitate replication between ESOS storage servers, and/or to create redundant ESOS storage server clusters.
* Virtual Tape Library (VTL) support by the mhVTL project.
* Three SSD caching solutions: EnhanceIO, bcache, and dm-cache (lvmcache).
* Other block storage functions include the automated tiered storage via the BTIER project and Ceph RBD mapping.

## Installation

ESOS differs from popular Linux distributions in that there is no bootable ISO image provided. ESOS consists of one archive file that is extracted on a local computer running a supported operating system (Linux, Windows, or Mac OS X). The local computer is only used for installing the ESOS image to a USB flash drive (or other removable media device). Users of ESOS extract the archive and execute the ESOS install script. The ESOS installer script prompts the user for the installation target device, writes the image, and allow users to integrate proprietary CLI RAID controller utilities into the ESOS USB flash drive.

## License Change

On January 16, 2019 (commit bfb8c55) the license of the ESOS project was changed from GNU General Public License (GPL) to Apache License, Version 2.0.