Shared File Systems
The goal of the Shared File Systems program is to provide a set of services for management of shared file systems in a multitenant cloud environment, similar to how OpenStack provides for block-based storage management through the Block Storage program.
We aim to provide a vendor neutral management interface that allows for provisioning and attaching shared file systems such as NFS, CIFS, and more. To the extent possible we aim to mirror the architecture of Block Storage program, with support for a public REST API, multiple backends, and a scheduler that performs resource assignment decisions. When differences are unavoidable, we plan to design solutions that are compatible with the OpenStack ideals of modularity and scalability.
- A set of services (API server, scheduler, and share manager) that provide an infrastructure for self-sevice provisioning and managing shared file systems in a multi-tenant cloud
- A CLI-based client for users and administrators to interact with the API
- A Horizon GUI plugin
- A "generic" software-only driver that runs on any hardware, allowing people to use the service without specialized equipment
- An example image (cirros-based) that implements part of the "generic" storage service, with documentation on how admins can create their own
- A set of drivers for commercial NAS storage servers
- API documentation, Administrator documentation, and Developer documentation
- Project code: https://github.com/stackforge/manila
- Python client: https://github.com/stackforge/python-manilaclient
The program grants Active Technical Contributor (ATC) status to anyone completing a commit to any program repository during the previous two release cycles. Core project team members may grant ATC to significant, non code-contributors for two cycles.
- Ben Swartzlander
The core teamː
- Yulia Portnova
- Valeriy Ponomaryov
- Xing Yang
- Alex Meade
- Rushil Chugh
- Clinton Knight
- Vitaly Kostenko
- Andrei Ostapenko
- Aleksandr Chirko
- Csaba Henk
- Ramana Raja
- Christian Berendt
Why a new program?
We started a new program for two main reasons:
- Initially we tried to address the above needs by expanding the scope of the Block Storage program, but the Cinder core team didn't want the additional responsibility. This left us with no option other than to start a new program.
- While there is some overlap between Block Storage and Shared File Systems, the technical implementation details and use cases are substantial enough to require a dedicated group of developers to solve the unique problems related to Shared File Systems. Keeping the programs separate has been greatly advantageous as it allows each group to focus on different problems and ultimately get more done.
NOTE: Manila started as a fork of Cinder given that it provides facility for many of the concepts that a Shared File Systems service would depend upon. The present Cinder concepts of capacity, target (server in NAS parlance), initiator (likewise the client when referring to shared file systems) are common conceptually (if not entirely semantically) and broadly applicable to both block and file-based storage. Specific Cinder capabilities (such as the filter scheduler, the notion of type, and extra specs) likewise apply to provisioning shared file systems as well. Manila is thus based on an evolution of Cinder. Manila, however, addresses a variety of additional concerns that aren't relevant to Cinder operation (e.g. provisioning into tenant SDN, mapping to auth authority / user namespace, et cetera). After involved discussion within the Cinder community and consultation with members of the Technical Committee it was determined that establishing a separate project expressly designed and developed to deliver shared / distributed file systems as a service was the most viable approach. The intention is to move any remaining commonality between Cinder and the File Share Service into Oslo over time where sensible.