Extending Ceph Objects to Support WebAssembly Executables
- Author(s): Rane, Saloni
- Advisor(s): LeFevre, Jeff
- Maltzahn, Carlos
- et al.
Programmable storage provides a means by which existing services in the storage system can be generalized, exposed, extended, combined and reused to support applications through the creation of domain-specific interfaces for use by external storage clients. Current work on programmable storage has shown how to embed user-defined functions that perform data management tasks into an object storage system. However, these functions are closely tied to the storage software code base, for instance they require an SDK and must be compiled against specific storage software versions, making them less portable and less future proof. We propose extending this capability by creating a dynamic object interface with WebAssembly - a portable binary format that facilitates generic code execution, and leveraging WebAssembly’s high-level goals to enable clients to add user-defined functionality to the OSD to support the needs of their applications. This thesis explores the design space of interfaces in a programmable storage system and introduces a method to embed a WebAssembly runtime environment, enabling dynamic injection of generic user-defined functions into a running storage system without requiring much knowledge of the internals of the storage layer.