From the storage point of view, the IO-SEA project considers a vertical, multi-tier storage. Cheap but slow technologies are used for long-term storage (data that is very rarely used) while fast but expensive technologies are used to temporarily store data while in use. These tiers could go from tapes (inexpensive but slow) to Non-Volatile RAM (NV-RAM – very expensive and very fast) with Solid-State Drives (SSD – expensive but fast) and Hard-Disk Drives (HDD – intermediate price and speed) in the middle. For the SSDs, the focus is mainly on Non Volatile Memory Express (NVMe) which was developed specifically for flash memory devices. They behave like the different layers of a cache: the most used data is stored in fast, expensive storage, while data rarely used is stored in slow, cheap storage.
While data is in use, it is stored in NVMe SSDs or even NV-RAM devices. Because incorporating these technologies in all compute nodes would be very efficient but prohibitive, these devices are centralized on the datanodes. A datanode is a cluster node not used for computing but for providing I/O services allowing the compute nodes to access the data it keeps in flash storage. Those services are provided to the compute nodes over the high-speed network. From a network perspective, the datanodes are located very near the compute nodes (connected to the same fabric) reducing the overhead introduced by the already-fast network.
I/O Services provided on the datanodes allow the compute nodes to access the data temporarily stored on them. Those services not only provide access to the data but also determine how data will be seen by the client application. For instance, if the client application was written to use POSIX functions, the service will provide a POSIX filesystem. On the other side, data could be provided as an S3 object store, if the application requires this. Previous to launching the application, the required data was moved from the permanent storage to the datanodes (to the lower tiers) and the I/O service launched. Once the applications ends, the modified and new data will be moved to the next tiers until it is stored in the permanent storage and the I/O service can then stop. In other word, the I/O service’s life-cycle is closely related to the application’s life-cycle. It is because of this behavior that they are called Ephemeral I/O Services.
From the application point of view, the data is located in a node (the datanode) connected to the same network fabric, stored in flash devices (NVMe or NV-RAM) and reachable through the normal interface (POSIX or S3). In reality, the data was stored in the permanent storage, in tapes, HDDs or SDDs, and moved to the datanodes prior to the application launch; and will be moved back to the permanent storage once the application has finished.