Learn OpenStack · core/storage/shared-filesystem
Manila Operations
Shares
Create a Share
openstack share create --share-type default --name my-share NFS 10
- Protocol:
NFS,CIFS,CephFS,GlusterFS,HDFS,MAPRFS(driver-dependent) - Size: in GiB
--share-type: required unless a default share type is configured--availability-zone: pin the share to a specific AZ--share-network: required for DHSS=true share types--description: human-readable description--public: make the share visible to all projects (admin only)--share-group: place in an existing share group--snapshot-id: create from an existing snapshot--metadata key=value: arbitrary key-value metadata
List Shares
openstack share list
openstack share list --all-projects # admin: show all tenants
openstack share list --status available
openstack share list --share-type default
openstack share list --long # include extra columns
openstack share list --name my-share
Show Share Details
openstack share show my-share
The output includes export_locations — the mount paths clients use. For NFS these look like 10.0.1.10:/path/to/share.
Delete a Share
openstack share delete my-share
openstack share delete my-share --force # admin: bypass status checks
A share must not have dependent snapshots. Delete snapshots first, or use --force.
Set Share Properties
openstack share set my-share --name new-name
openstack share set my-share --description "Updated description"
openstack share set my-share --public True
openstack share set my-share --property key=value
openstack share unset my-share --property key
Extend a Share
openstack share extend my-share 20
Grows the share to 20 GiB. The new size must be larger than the current size. The share must be in available state. Extension may be immediate or require backend provisioning time.
Shrink a Share
openstack share shrink my-share 15
Reduces the share to 15 GiB. The new size must be smaller than the current size and larger than current usage. Not all backends support shrink. The share must be in available state.
Show Export Locations
openstack share export location list my-share
openstack share export location show my-share <export-location-id>
Export locations are mount paths. For NFS: 10.0.1.10:/path/to/share. For CephFS: 10.0.0.5:6789:/volumes/_nogroup/share-uuid.
Share Types
Create a Share Type
openstack share type create my-type true
The second positional argument is the value of driver_handles_share_servers:
- true — DHSS=true (Manila manages share servers)
- false — DHSS=false (backend manages its own servers)
Additional options:
openstack share type create my-type false \
--extra-spec snapshot_support=True \
--extra-spec create_share_from_snapshot_support=True \
--extra-spec revert_to_snapshot_support=True \
--description "NFS shares on NetApp"
List Share Types
openstack share type list
openstack share type list --all # admin: include private types
openstack share type show my-type
Set/Unset Extra Specs
openstack share type set my-type --extra-spec snapshot_support=True
openstack share type set my-type --extra-spec replication_type=readable
openstack share type unset my-type --extra-spec snapshot_support
Delete a Share Type
openstack share type delete my-type
Cannot delete a type that has shares using it.
Share Networks
Share networks are only needed for DHSS=true share types.
Create a Share Network
openstack share network create \
--neutron-net-id NET_ID \
--neutron-subnet-id SUBNET_ID \
share-net
NET_ID: UUID of the Neutron networkSUBNET_ID: UUID of the Neutron subnet within that network--description: optional description--availability-zone: restrict to a specific AZ
# Look up your Neutron network and subnet UUIDs
openstack network list
openstack subnet list --network private
List and Show Share Networks
openstack share network list
openstack share network show share-net
Add a Subnet to an Existing Share Network
openstack share network subnet create \
--neutron-net-id NET_ID2 \
--neutron-subnet-id SUBNET_ID2 \
--availability-zone az2 \
share-net
This extends an existing share network into another AZ or subnet.
Delete a Share Network
openstack share network delete share-net
Fails if share servers (and thus shares) are still using the network. Delete shares first.
Access Rules
Access rules control which clients can mount a share.
Grant Access
openstack share access create my-share ip 10.0.0.0/24 --access-level rw
Access types:
| Type | Value Format | Description |
|---|---|---|
ip |
CIDR (IPv4 or IPv6) | Client IP range — most common for NFS |
user |
username | Windows/Active Directory user — for CIFS |
cert |
TLS certificate common name | For CephFS with x509 |
cephx |
CephX key name | For CephFS with CephX auth |
Access levels:
- rw — read-write (default)
- ro — read-only
# Multiple access rules can be added
openstack share access create my-share ip 192.168.1.0/24 --access-level ro
openstack share access create my-share user DOMAIN\\alice --access-level rw
List Access Rules
openstack share access list my-share
Delete an Access Rule
openstack share access delete my-share <access-id>
Get the <access-id> from openstack share access list my-share.
Snapshots
Create a Snapshot
openstack share snapshot create my-share --name my-snap
openstack share snapshot create my-share --name my-snap --description "Before upgrade"
openstack share snapshot create my-share --force # snapshot even if share is busy
List Snapshots
openstack share snapshot list
openstack share snapshot list --share my-share
openstack share snapshot list --status available
openstack share snapshot list --all-projects # admin
Show a Snapshot
openstack share snapshot show my-snap
Delete a Snapshot
openstack share snapshot delete my-snap
openstack share snapshot delete my-snap --force
Create a Share from a Snapshot
openstack share create \
--share-type default \
--snapshot-id <snapshot-id> \
--name share-from-snap \
NFS 10
The new share inherits the snapshot's content. Requires create_share_from_snapshot_support=True on the share type.
Revert a Share to a Snapshot
openstack share revert-to-snapshot my-snap
Reverts my-share in-place to the state of my-snap. Destructive — all data written after the snapshot is lost. Requires revert_to_snapshot_support=True on the share type.
Share Groups
Create a Share Group Type
openstack share group type create my-group-type default
Associates the group type with the default share type. Multiple share types can be specified.
Create a Share Group
openstack share group create \
--share-group-type my-group-type \
--share-type default \
my-group
List and Show Share Groups
openstack share group list
openstack share group show my-group
Create a Share in a Group
openstack share create \
--share-type default \
--share-group my-group \
--name grouped-share \
NFS 10
Create a Share Group Snapshot
openstack share group snapshot create my-group --name my-group-snap
openstack share group snapshot list
openstack share group snapshot show my-group-snap
openstack share group snapshot delete my-group-snap
Delete a Share Group
openstack share group delete my-group
All member shares must be deleted first.
Share Migration
Migration moves a share from one backend to another (or one availability zone to another).
Start Migration
openstack share migration start \
my-share \
<destination-host> \
--new-share-type new-type \
--new-share-network new-net \
--writable \
--preserve-metadata \
--preserve-snapshots \
--nondisruptive
<destination-host>: themanila-sharehost inhost@backend#poolformat (e.g.,manila@cephfs#ceph)--new-share-type: optional; use a different share type on the destination--new-share-network: optional; use a different share network (for DHSS=true destinations)--writable: keep the share writable during migration (driver support required)--preserve-metadata: copy all share metadata to the destination--preserve-snapshots: migrate snapshots too (driver support required)--nondisruptive: attempt to migrate without interrupting client I/O
Check Migration Progress
openstack share migration get progress my-share
openstack share show my-share # check task_state field
Complete Migration (Cutover)
openstack share migration complete my-share
Triggers the final cutover. After this call, the share export location changes to the destination backend. Clients must remount.
Cancel Migration
openstack share migration cancel my-share
Only valid before migration_complete is called.
Share Replicas
Replication is available when the share type has replication_type set.
Create a Replica
openstack share replica create my-share \
--availability-zone az2 \
--share-network share-net-az2
--availability-zone: the AZ where the replica should reside--share-network: required for DHSS=true backends
List Replicas
openstack share replica list --share-id my-share
Output includes replica_state (active, in_sync, out_of_sync) and status.
Show a Replica
openstack share replica show <replica-id>
Promote a Replica
openstack share replica promote <replica-id>
Makes the specified replica the new active replica. The previous active becomes a secondary. Useful for manual failover.
Resync a Replica
openstack share replica resync <replica-id>
Triggers an immediate out-of-band sync from the active replica to the specified secondary. Normally sync is periodic (backend-controlled).
Delete a Replica
openstack share replica delete <replica-id>
Cannot delete the active replica. Promote another replica first.
Administration
List Share Backends and Pools
openstack share pool list
openstack share pool list --long # includes capacity and capabilities
openstack share pool list --host manila@cephfs
openstack share pool list --backend cephfs
openstack share pool list --pool ceph-pool-1
openstack share pool list --capabilities snapshot_support=True
Manage an Existing Share
Bring an existing export (created outside of Manila) under Manila management:
openstack share manage \
<host> \
NFS \
<export-path> \
--name managed-share \
--share-type default \
--driver-options key=value
Unmanage a Share
Remove a share from Manila without deleting the data:
openstack share unmanage my-share
Quota Management
openstack quota show --project my-project
openstack quota set --shares 50 --gigabytes 10000 --snapshots 100 --project my-project
openstack quota delete --project my-project # revert to default quota
Default quota defaults (configurable in manila.conf):
- quota_shares = 50
- quota_gigabytes = 1000
- quota_snapshots = 50
- quota_share_networks = 10
- quota_share_groups = 10
- quota_share_group_snapshots = 10
- quota_share_replicas = 100
- quota_replica_gigabytes = 1000
Configuration Reference
[DEFAULT] Section
[DEFAULT]
# Transport URL for oslo.messaging (RabbitMQ)
transport_url = rabbit://guest:guest@controller:5672/
# Hostname for this node (used in pool reporting)
host = manila@cephfs
# Enabled share backends (comma-separated; each must have its own [section])
enabled_share_backends = cephfs
# Default share type name (used when no type is specified)
default_share_type = default
# Share server cleanup interval (DHSS=true, in seconds)
unused_share_server_cleanup_interval = 10
# API rate limiting
api_rate_limit = true
[database] Section
[database]
connection = mysql+pymysql://manila:MANILA_DBPASS@controller/manila
max_pool_size = 10
max_overflow = 20
pool_timeout = 30
[keystone_authtoken] Section
[keystone_authtoken]
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = manila
password = MANILA_PASS
[oslo_messaging_rabbit] Section
[oslo_messaging_rabbit]
rabbit_ha_queues = true
amqp_durable_queues = true
rabbit_retry_interval = 1
rabbit_retry_backoff = 2
rabbit_max_retries = 0
Generic Driver (DHSS=true, NFS-Ganesha/Samba via VMs)
[generic]
share_driver = manila.share.drivers.generic.GenericShareDriver
driver_handles_share_servers = True
# Nova image used for share server VMs
service_image_name = manila-service-image
# Flavor for share server VMs
service_instance_flavor_id = 100
# Nova keypair injected into share server VMs
path_to_public_key = /etc/manila/manila.id_rsa.pub
path_to_private_key = /etc/manila/manila.id_rsa
# Neutron network for service (management) network
service_net_name = manila_service_net
# Connect share server to tenant network via this interface type
interface_driver = manila.network.linux.interface.OVSInterfaceDriver
# Protocol: nfs or smb
share_volume_fstype = ext4
CephFS Driver (DHSS=false)
[cephfs]
share_driver = manila.share.drivers.cephfs.driver.CephFSDriver
driver_handles_share_servers = False
# CephFS backend name in manila.conf
share_backend_name = CEPHFS
# Ceph cluster name
cephfs_cluster_name = ceph
# Auth ID Manila uses to communicate with Ceph
cephfs_auth_id = manila
# Path to ceph.conf and keyring
cephfs_conf_path = /etc/ceph/ceph.conf
cephfs_keyring_path = /etc/ceph/ceph.client.manila.keyring
# Native CephFS (kernel or FUSE) or via NFS-Ganesha
cephfs_protocol_helper_type = CEPHFS
# Volume mode: either 'native' or 'nfs'
# For NFS-Ganesha: cephfs_protocol_helper_type = NFS
NetApp ONTAP Driver
[netapp]
share_driver = manila.share.drivers.netapp.common.NetAppDriver
driver_handles_share_servers = False
share_backend_name = NETAPP_NAS
# ONTAP management LIF (cluster or SVM management IP)
netapp_server_hostname = 192.168.1.100
netapp_server_port = 443
netapp_transport_type = https
netapp_login = admin
netapp_password = NETAPP_PASS
# SVM (Vserver) to use
netapp_vserver = vs_manila
# Root aggregate for SVM (DHSS=true mode only)
# netapp_root_volume_aggregate = aggr1
# Aggregate for share volumes
netapp_aggregate_name_search_pattern = aggr.*
# Thin provisioning
netapp_thin_provisioned = true