Implementing OpenStack Manila shared file systems for multi-project workloads
This page covers how to implement OpenStack Manila shared file systems, when teams should implement it, and what it provides once it is running. Manila is the OpenStack service for shared file systems. Its main job is to let projects request file shares themselves through the API, within limits the cloud operator sets such as quotas, without waiting for an infrastructure team to build and hand over an NFS server for each application. Teams usually reach this point when several projects need file storage, the work of building it by hand keeps recurring, and the existing NFS servers are hard to track, secure and reclaim. The sections that follow focus on the decisions that shape a multi-project deployment and the checks that prove it works.
The design decisions start with the back end. Manila relies on back-end drivers to create and export shares, so the driver you choose determines which storage systems your projects can draw on, which share protocols they can use and how share networks reach the storage. Share networks tie shares to the tenant networks that can mount them, so network design belongs in the same review as driver selection. Access rules control which clients or users may mount a given share, and they should be designed per project before the first share is created. Ask your storage vendor or driver maintainers to confirm which protocols, share types and isolation features the driver supports on the release you plan to run, and record the answers in the design document.
Kubernetes workloads consume Manila shares through the Manila Container Storage Interface (CSI) plugin, which lets a cluster request and mount shares as persistent volumes. This matters in multi-project environments because platform teams can offer shared file storage to workloads without handing each team direct credentials for the OpenStack API. Before you commit to this path, confirm three pairings: the Manila release, the CSI plugin version and the Kubernetes version of the cluster, along with the protocols the plugin supports for your driver. Test a mount from a pod in each project's namespace and confirm that a pod in one project cannot reach another project's share. The Kubernetes deployment work covers the cluster side of this setup.
Release data is the first thing to verify. The pillar facts available for this page do not include Manila-specific release notes, driver matrices or feature support tables, so do not assume that a driver or feature works in a given release. OpenStack publishes its own release schedule: 2026.1 Gazpacho, a SLURP release, came out on 2026-04-01, and 2026.2 Hibiscus was released on 2026-09-30. Check the Manila release notes and driver documentation for the exact release you target, and confirm whether that release sits on your planned upgrade path. Ask the same questions of the CSI plugin project. A driver that works on one release can lag on another, so schedule version confirmation as a gate that must pass before design is signed off.
Before design sign-off, the team should be able to answer five questions in writing: which back-end drivers and share types each project may use, how share networks map to tenant networks, who approves access rules and how they are reviewed, which Manila and CSI versions the plan targets, and what test proves that one project cannot see another project's shares. Those answers feed the quote, because each one changes the amount of design, testing and integration work. Ask any implementation partner to show how each answer will be verified in your environment, and to state which items are included in the fixed scope and which are optional.
What Manila does in an OpenStack cloud
Manila gives users shares they can mount, and the settings around each share decide who can reach it, from which storage and over which network. The six capabilities below are the ones your design review should walk through, and each needs checking against the Manila documentation for the release you plan to run.
Share creation
Users request a share of a chosen size and protocol through the API, the CLI or the dashboard, and Manila schedules it onto a back end that can satisfy the request. Confirm which share protocols your chosen release supports for your back end, and which quota and sizing checks apply to project requests. Test creation under a non-administrator project before you publish the service, since permissions there often differ from what administrators see.
Share types
A share type bundles the settings Manila applies to a share, including the back ends it may use and the extra specifications the scheduler matches against. Share types are the usual way to separate service tiers, for example a general tier and a performance tier (illustrative). Confirm which extra specifications each driver honors in your release, because a specification that a driver ignores will not produce a visible error.
Back-end drivers
Back-end drivers connect Manila to the storage system that holds the data, and the driver you choose determines which protocols, snapshot behavior and network models are available to users. Check the driver documentation for your release, and confirm support for your storage platform with its vendor rather than assuming it. Plan for driver-specific configuration and upgrade steps, which are often the largest part of a Manila rollout.
Share networks
A share network defines the network and subnet that share servers use to reach clients, so it sets the boundary for tenant traffic to storage. Decide early whether shares will sit on tenant networks, provider networks or a dedicated storage network, because that choice drives security zones, routing and firewall rules. Confirm in the release documentation which drivers and network plugins require share networks at all.
Access rules
Access rules grant a client permission to mount a share, typically by IP address, user or certificate, depending on the share protocol and driver. Each rule carries an access level, so read-only and read-write grants need separate review and separate approval paths. Confirm which access types each protocol and driver supports in your release, and test that revoking a rule takes effect on mounts that are already active.
Share snapshots
Snapshots capture a point-in-time copy of a share and support rollback and staging, but they are not a backup on their own. Confirm for your driver whether snapshots are supported, whether shares can be created from them, and how they consume capacity over time. Restore into a separate share during testing so the procedure is proven before an incident depends on it.
Which back end, share network and access model fit your workloads
This table compares the main Manila configuration decisions: the back-end driver, the share network design, the share type and the access rules for each protocol. Read each row as a question to settle before build, with the confirmation column naming what to check with the driver vendor or in the release notes for your target OpenStack release. The main takeaway is that driver support, network placement and protocol access are tightly linked, so decide them together.
| Decision | When it fits | Trade-off | What to confirm before committing |
|---|---|---|---|
| Vendor array driver | Your storage array already serves NFS or CIFS and your team has vendor support for it | Full vendor feature set, but tied to that array's lifecycle and licensing | Which Manila driver version matches your array firmware, which share protocols and snapshot features the driver exposes in your target release |
| Generic driver backed by Nova instances | A proof of concept or a small team that accepts shares served from service VMs | Simple to stand up on commodity hardware, but share server VMs add capacity, patching and performance limits | Whether the generic driver is still supported in your target release, required image and flavor settings, and its documented limits for protocols and scale |
| Ceph-backed file interface (CephFS) | Your organization already runs Ceph and wants POSIX-style shares from the same cluster | Shares depend on Ceph metadata servers and CephFS sizing, and not every Manila protocol path applies | Whether your target OpenStack release includes the CephFS driver, which access types and protocols it supports, and the Ceph release pairing in the release notes |
| Share network on a tenant network | Tenants need isolated share servers reachable from their own project networks | Isolation improves, but each share network adds Neutron subnets, routers and address planning | Which Neutron driver and network plugin the share server needs, and whether your driver creates share servers per tenant network |
| Share network on a provider network | Shares must be reachable from shared infrastructure such as hypervisors, Kubernetes nodes or legacy clients | Simpler routing and fewer moving parts, but weaker tenant separation and shared address space | Whether the driver supports provider network attachment, how VLAN or segmentation is set, and the firewall rules that protect the share server |
| Share type with snapshot and replication flags | You need a standard offering such as bulk storage, snapshot support or a tier with specific performance traits | Each extra capability narrows the drivers that qualify and can raise cost | Which extra specs the driver reads, how they are named in your release, and whether snapshots and replication are supported for the protocol you chose |
| NFS access by IP or CIDR | Linux clients, hypervisors or Kubernetes nodes on known address ranges | Simple to grant, but IP-based trust is coarse and changes when addresses move | Which access levels (read-only or read-write) the driver supports, how root squash and user mapping are handled, and whether IPv6 is supported |
| CIFS access by user or group | Windows clients or mixed environments that authenticate against a directory | Needs identity integration on the share server, so directory design becomes part of the Manila rollout | Which authentication modes the driver supports, how the directory is joined, and which CIFS features are available in your release |
Implementation sequence and what each step produces
The rollout runs in a fixed order because each step depends on the one before it: the release and driver decision constrains the network design, which in turn shapes how services are deployed and which share types can be offered. Each step closes with a named artifact that the owners sign off before the team moves forward.
Confirm the release and driver support
The team checks the target OpenStack release against the release calendar, preferring a release in the maintained phase and noting whether it is a SLURP release, since SLURP releases support upgrades between one another. Next, they match the back-end driver they plan to use against that release's documented support, and confirm open questions with the driver maintainers and the storage vendor. Do not move on until the owners of cloud operations and storage have both signed the matrix. Output: a signed-off driver matrix listing the release, driver, back-end version and known limitations.
Design the back end and share networks
Architects decide which storage platform backs each share type, where share data lives and how tenant traffic reaches the file servers. They map share networks to Neutron provider or tenant networks, plan addressing and DNS, and separate storage traffic from tenant traffic, then review the security boundaries with the network team. Before drawing the design, ask the driver documentation or vendor which network modes the chosen driver supports. Output: a network diagram and a back-end design note that names the storage pool, the network path for each share network and the owner of each component.
Deploy and enable the Manila services
Platform engineers add Manila to the deployment tool already used for the cloud, such as Kolla-Ansible or OpenStack-Ansible, following the deployment guide for the chosen release. They configure the back-end driver, database and message queue settings and the Keystone service catalog entries, then run the deployment in a staging environment before production. Verify that the API responds, the share service reports the back end as up and the back end appears in the service list. Output: running Manila services, a configuration review record and a first draft of the runbook covering restarts, logs and driver upgrades.
Define share types and quotas
Cloud owners define share types that map to storage classes, such as performance tiers or protocol options, and set the extra specs the scheduler uses to place shares. They agree default and per-project quotas for shares, capacity and snapshots with the resource owners, and decide which share types each project can see. Create a test share on every type to confirm it lands on the intended back end. Output: a share type catalog with extra specs, a quota table with named approvers and a naming convention that project teams will see.
Validate share creation and access
Testers create shares from test instances in a non-production project, mount them using a protocol the driver supports and check read, write and delete behavior under each access rule. They confirm that access rules grant and revoke correctly, that identities outside the approved list cannot reach the share, and that snapshots and resizing behave as the design states. If Kubernetes workloads will consume shares, run the same checks through the Manila CSI plugin. Output: a tested access policy and a test report with pass and fail results, signed by the cloud owner and the security reviewer.
Open the service to projects
After tests pass, cloud operations publishes the share types, quota defaults and request process to project teams and assigns a support queue for share incidents. Operators confirm that monitoring covers Manila API and share service health and back-end capacity, and that backups of the Manila database and service configuration appear in the runbook. Start with a small set of pilot projects, record their issues and widen access only after those issues are closed. Output: a published service catalog entry, the support runbook, monitoring dashboards and an onboarding guide for projects.
What drives the cost and effort of a Manila rollout
This table lists the factors that most change the work in a Manila rollout, how each one changes it, and what to request in a written scope to keep it controlled. Read each row against your own environment to see which drivers apply to your estimate. The main takeaway is that back-end count, network design and migration volume usually matter more than the number of users.
| Driver | How it changes the work | What to ask for in the written scope |
|---|---|---|
| Back ends and driver vendors | Each back-end driver adds its own configuration, capability mapping, upgrade check and failure testing. Mixing vendor drivers in one region multiplies test cases. | A list of each back end, its Manila driver and version, the share types it will serve and the operations tested for each. |
| Share networks across tenants | Share networks tie tenant subnets to storage export paths. Overlapping address plans, routed versus flat tenant networks and firewall rules add design and validation effort. | A network diagram with tenant subnets, the share network definitions, routing and firewall rules, and the tests that prove tenants cannot reach each other's exports. |
| Existing Ceph or storage array | A team that already runs Ceph or an array can reuse operating skills and monitoring. A new storage platform adds hardware, capacity planning, and new runbooks to the scope. | A statement of which storage platform will back Manila, who operates it today, and which runbooks and monitoring must be handed over. |
| Identity and access integration | Access rules are based on client identity, IP ranges or certificates, and the mapping to corporate directories changes which access rules must be designed and tested. | The identity sources in use, the access rule types to be supported, and the test cases that show each user group gets only the access it should. |
| Kubernetes consumption | Workloads that consume shares through the Manila CSI plugin need cluster configuration, secrets handling, storage class design and upgrade testing for the plugin. | The cluster versions, the number of clusters, the storage classes to be published and the workloads used for acceptance testing. |
| Data volume and NFS or CIFS migration | Moving existing shares means inventory, permission mapping, cutover windows, rollback and verification of file ownership and locks. Large or many shares extend each of these steps. | An inventory of source shares with protocols, sizes and owners, the migration method, the cutover and rollback plan, and the verification checks for each share. |
| Depth of testing required | Organizations with formal change control or assessment obligations need documented test cases, evidence capture and retesting after changes. Light acceptance testing takes less time but leaves more risk open. | The test categories in scope, the evidence format expected by your assessors, who signs off each test and how retests after fixes are handled. |
How Manila connects to Keystone, Neutron, Ceph and the rest of the cloud
Manila relies on Keystone to decide who may act, Neutron to place share traffic on the network, and the storage back end to hold the data. The cards below cover the connections your team must plan and the checks to run before go-live. For integration patterns across OpenStack services, see the OpenStack integrations group.
Keystone projects, roles and share types
Keystone determines which projects and roles can create share types, shares and access rules, so the role model shapes the Manila design from the start. Map the roles your operators and tenants already hold to two groups: those who manage back ends and share types, and those who only create shares and grant access to them. Confirm which Keystone policy settings your release applies to Manila before you publish share types to tenants.
Neutron share network segments
A share network ties a set of shares to a Neutron network and subnet that the storage back end can reach. Decide early which tenant networks, provider networks or dedicated storage segments will carry share traffic, and who may attach instances to them. Check that IP ranges, segmentation and firewall rules match the access paths the back end needs, and confirm which share network options your release and chosen driver support.
Ceph storage back end and driver choice
The driver you choose determines where Manila stores shares and how clients connect to them. If the driver uses Ceph, the shared file service depends on a Ceph cluster that must be planned alongside the rest of your Ceph estate, including failure domains, pools and network placement. Confirm the supported Ceph release, driver and client protocol combination for your OpenStack release before you commit to a design.
Monitoring the storage back end
Manila reports the state of its own services, but the health users feel sits in the storage system underneath. Collect capacity, latency, client session and error metrics from the Ceph or vendor back end, and alert on them alongside Manila service status. Agree who owns each alert, which thresholds page someone, and how share growth is forecast, so a filling pool does not first show up as failed mounts.
Backup and restore of shares
Backups must cover the share contents, the share metadata that Manila records, and the database holding shares, share types and access rules. Decide whether backups run at the storage layer, through a file-level tool or both, and test a restore into a separate share network. Confirm with your back end vendor or Ceph documentation how snapshots interact with access rules and what a consistent restore requires.
How Kubernetes workloads consume shares through the Manila CSI plugin
Kubernetes workloads reach Manila shares through the Manila Container Storage Interface (CSI) plugin, which maps PersistentVolumeClaims to Manila shares. Before the cluster is built, the team has to settle two things: the network path from worker nodes to the share network's export locations, and the identity the plugin uses to call the OpenStack APIs. Both decisions shape the storage class design and the access rules, so they belong in the design phase, not after the first volume fails to mount. The plugin runs controller components that talk to the Manila and Keystone APIs and node components that mount the share on each host, and each part needs a route to the services it depends on.
The first decision is which OpenStack project and credentials the plugin uses. A dedicated project, with a service identity or an application credential limited to that project, keeps share creation and deletion inside one set of quotas and one set of audit logs. Ask who owns that project, who approves quota changes and whether the cluster's share network is reachable from it. Store the credential as a Kubernetes Secret, restrict which service accounts and administrators can read it, and set a rotation procedure. Confirm in the plugin documentation how it handles expired or rotated application credentials, because a silent authentication failure can look like a storage outage.
The second decision is how each storage class maps to Manila. A storage class is effectively a policy: it selects the share type (which backend, performance tier and snapshot capability), the share network and the access rule the plugin applies. Most teams create one class per tier rather than one per application. Confirm which parameters the plugin accepts, which access types it supports for ReadWriteMany volumes and whether it can apply access rules based on node addresses or on identities in the backend. Node-address rules break when nodes are replaced, so plan the identity model before workloads depend on it. Also set the reclaim policy deliberately, because deleting a PersistentVolume may delete the underlying share and its data.
The third decision is how cluster upgrades affect the plugin version. The plugin, its CSI sidecar images and the Kubernetes minor version have to be compatible with each other, and a Kubernetes upgrade can make the installed plugin unsupported. Plan the plugin upgrade into the same change window as the cluster upgrade, test it on a non-production cluster that mounts real shares, and verify that existing volumes still attach and unmount afterward. OpenStack upgrades can also change Manila API behavior, so include them in the test matrix. Before planning any of this, confirm the plugin's supported Kubernetes and OpenStack versions in the vendor or project documentation, and record the versions you intend to run.
Questions teams ask before bringing in a partner for Manila
What does a Manila implementation cost, and what drives the price?
The price follows the written scope, and the main cost components are discovery and design, back-end driver integration with your storage, share network and identity design, testing, documentation and handover. Kubernetes consumption through the Manila CSI plugin adds work if your clusters need shares. The build is one-time work, while support, upgrades, testing retainers and any storage vendor licensing recur. Costs rise with the number of storage back ends, the maturity of each driver for your protocols, the complexity of your network topology, the number of identity sources, and any compliance evidence you need. Ask for a quote broken into those line items, with what is one-time and what recurs shown separately, and confirm driver-specific requirements with the storage vendor before you compare offers.
How long does a Manila implementation take?
Duration depends on scope, so the honest answer is that the number of back ends, the readiness of your storage and network, and the approval cycle for changes set the schedule more than the Manila configuration itself. Work usually moves through design, a lab build, integration with production storage, workload testing and a controlled cutover. Each step can wait on hardware delivery, network approvals, identity decisions and change windows. Ask for a milestone plan that names the inputs each milestone depends on, and confirm with the storage vendor how long their driver validation and support steps typically take for your configuration. A fixed scope gives you an agreed timeline in writing before work starts.
What must our internal team provide before a Manila project starts?
Your team needs named owners for storage, networking and identity, because Manila depends on decisions from all three. The storage owner provides access to the back end, capacity plans and the protocols you need. The network owner confirms the subnets, VLANs or routing that share networks will use. The identity owner confirms how tenants, projects and administrators authenticate through Keystone. You also need test workloads that resemble production, such as a database, a file-based application and a Kubernetes namespace if CSI is in scope. Finally, agree on change windows, a rollback approach and an approver for each production step. Missing owners are one of the most common reasons schedules slip.
Can our own team implement Manila without a partner?
Your team can implement Manila alone if it already has working experience with OpenStack, Keystone, the storage back end, the network design that share access depends on, and Kubernetes if CSI is in scope. The gaps usually show up in driver configuration, share network design, access rule policy and upgrade testing, because these interact with each other. Assess your team honestly against those areas, and check whether the people who would run the platform after go-live will also be available during the build. A partner can fill specific gaps, such as design review or driver integration, while your team keeps ownership. Ask any partner to show how knowledge transfer and documentation will work so your team can operate the result.
How does Manila fit our OpenStack release and upgrade plan?
Plan Manila against the OpenStack release you intend to run for the life of the platform, not only the release you install first. OpenStack 2026.1 Gazpacho, a SLURP release, was released on 2026-04-01, and 2026.2 Hibiscus was released on 2026-09-30. 2027.1 Indri, also a SLURP release, is in development with an estimated release of 2027-03-24. Upgrades are supported between SLURP releases as well as between adjacent releases, and stable branches are maintained for approximately 18 months. Confirm with your storage vendor which Manila driver versions support each release you plan to use, and schedule Manila upgrades in the same cycle as the rest of your cloud. Test the upgrade path in a lab before production.
How should we choose the Manila back end and share protocols?
Choose the back end based on the storage you already operate, the share protocols your applications need, and the support model your storage vendor offers for the Manila driver. The driver determines which protocols and share behaviors are available, so do not assume that a protocol supported by the storage platform is available through Manila. If you run Ceph, confirm whether its file share support fits your tenancy model and performance needs. Map each application to a protocol and an access pattern, then check the driver documentation for that exact combination. Ask the storage vendor to confirm supported features, known limitations and the versions they test against before you commit to a design.
How do Kubernetes workloads consume Manila shares, and what should we test?
Kubernetes workloads typically consume Manila shares through the Manila CSI plugin, which lets a cluster request shares and mount them into pods. The plugin's compatibility with your Kubernetes version, OpenStack release and Manila driver must be confirmed before the build, because each layer can constrain the others. Test provisioning and deletion of shares, access rule behavior for each node or network, mounting from several pods at once, pod rescheduling across nodes, node reboots and any share resizing your driver supports. Include role-based access checks so a namespace can only request the shares it is allowed to use. Record the results so the test evidence can support later operations and audits.
What does the engagement cover after the Manila handover?
Most DeployOpen engagements are fixed-scope, so the deliverables, handover documents and acceptance criteria are agreed in writing before work starts. After handover, your team owns the platform unless you choose ongoing support. DeployOpen offers support, upgrades and continuous testing as retainers, and those recur on a schedule you agree. Ask the proposal to state what happens to upgrades between OpenStack releases, how driver updates from your storage vendor are tested, who responds to incidents, and how documentation is maintained. Retainer scope and response expectations should be written down so your team knows what is included and what would be quoted separately.
How DeployOpen works on this
DeployOpen plans, implements, integrates, hardens, backs up, upgrades, documents and supports OpenStack Manila shared file systems inside your own cloud accounts, data centers or air-gapped networks. Most engagements run on a written, fixed scope that sets out the back-end drivers, share networks, access rules and Kubernetes consumption paths to be delivered. Ongoing support, upgrades and continuous testing are available as retainers after handover.
How we scope
- Back-end driver selection for your storage platform, confirmed against the Manila release you plan to run
- Share network design covering tenant subnets, provider networks and the client paths that reach each share
- Written scope listing share types, access rules, Kubernetes consumers and the acceptance tests that close the work
How we build
- Deploy the Manila API, scheduler and share services using the OpenStack deployment tooling your platform already uses
- Configure share types, share networks and access rules, then test mounts from each client network
- Set up the Manila CSI plugin so Kubernetes workloads can claim shares through persistent volume claims
How we hand over
- Runbooks for share provisioning, access grant and revocation, and back-end driver maintenance
- Documentation of network, driver and access configuration, kept in your own repository or wiki
- Test evidence and configuration records prepared for your internal reviews or external compliance assessments
How we support
- Retainer options covering upgrades, release-note review and driver compatibility checks after go-live
- Upgrade planning under the SLURP cadence, so Manila moves with the rest of your OpenStack release
- Security testing of share access paths and API exposure, available as a separate engagement

