ZFS (on Linux) Driver
Manila ZFSonLinux share driver uses ZFS filesystem for exporting NFS shares.
Written and tested using Linux version of ZFS.
Requirements
- ‘NFS’ daemon that can be handled via “exportfs” app.
- ‘ZFS’ filesystem packages, either Kernel or FUSE versions.
- ZFS zpools that are going to be used by Manila should exist and be
configured as desired. Manila will not change zpool configuration.
- For remote ZFS hosts according to manila-share service host SSH should be
installed.
- For ZFS hosts that support replication:
- SSH access for each other should be passwordless.
- Service IP addresses should be available by ZFS hosts for each other.
Supported Operations
The following operations are supported:
- Create NFS Share
- Delete NFS Share
- Manage NFS Share
- Unmanage NFS Share
- Allow NFS Share access
- Only IP access type is supported for NFS
- Both access levels are supported - ‘RW’ and ‘RO’
- Deny NFS Share access
- Create snapshot
- Delete snapshot
- Manage snapshot
- Unmanage snapshot
- Create share from snapshot
- Extend share
- Shrink share
- Replication (experimental):
- Create/update/delete/promote replica operations are supported
- Share migration (experimental)
Possibilities
- Any amount of ZFS zpools can be used by share driver.
- Allowed to configure default options for ZFS datasets that are used
for share creation.
- Any amount of nested datasets is allowed to be used.
- All share replicas are read-only, only active one is RW.
- All share replicas are synchronized periodically, not continuously.
So, status ‘in_sync’ means latest sync was successful.
Time range between syncs equals to value of
config global opt ‘replica_state_update_interval’.
- Driver is able to use qualified extra spec ‘zfsonlinux:compression’.
It can contain any value that is supported by used ZFS app.
But if it is disabled via config option with value ‘compression=off’,
then it will not be used.
Restrictions
The ZFSonLinux share driver has the following restrictions:
- Only IP access type is supported for NFS.
- Only FLAT network is supported.
- ‘Promote share replica’ operation will switch roles of
current ‘secondary’ replica and ‘active’. It does not make more than
one active replica available.
- ‘SaMBa’ based sharing is not yet implemented.
- ‘Thick provisioning’ is not yet implemented.
Known problems
- ‘Promote share replica’ operation will make ZFS filesystem that became
secondary as RO only on NFS level. On ZFS level system will
stay mounted as was - RW.
Backend Configuration
The following parameters need to be configured in the manila configuration file
for the ZFSonLinux driver:
- share_driver = manila.share.drivers.zfsonlinux.driver.ZFSonLinuxShareDriver
- driver_handles_share_servers = False
- replication_domain = custom_str_value_as_domain_name
- if empty, then replication will be disabled
- if set then will be able to be used as replication peer for other
backend with same value.
- zfs_share_export_ip = <user_facing IP address of ZFS host>
- zfs_service_ip = <IP address of service network interface of ZFS host>
- zfs_zpool_list = zpoolname1,zpoolname2/nested_dataset_for_zpool2
- can be one or more zpools
- can contain nested datasets
- zfs_dataset_creation_options = <list of ZFS dataset options>
- readonly,quota,sharenfs and sharesmb options will be ignored
- zfs_dataset_name_prefix = <prefix>
- Prefix to be used in each dataset name.
- zfs_dataset_snapshot_name_prefix = <prefix>
- Prefix to be used in each dataset snapshot name.
- zfs_use_ssh = <boolean_value>
- set ‘False’ if ZFS located on the same host as ‘manila-share’ service
- set ‘True’ if ‘manila-share’ service should use SSH for ZFS configuration
- zfs_ssh_username = <ssh_username>
- required for replication operations
- required for SSH’ing to ZFS host if ‘zfs_use_ssh’ is set to ‘True’
- zfs_ssh_user_password = <ssh_user_password>
- password for ‘zfs_ssh_username’ of ZFS host.
- used only if ‘zfs_use_ssh’ is set to ‘True’
- zfs_ssh_private_key_path = <path_to_private_ssh_key>
- used only if ‘zfs_use_ssh’ is set to ‘True’
- zfs_share_helpers = NFS=manila.share.drivers.zfsonlinux.utils.NFSviaZFSHelper
- Approach for setting up helpers is similar to various other share driver
- At least one helper should be used.
- zfs_replica_snapshot_prefix = <prefix>
- Prefix to be used in dataset snapshot names that are created
by ‘update replica’ operation.
- zfs_migration_snapshot_prefix = <prefix>
- Prefix to be used in dataset snapshot names that are created
for ‘migration’ operation.
Restart of manila-share service is needed for the configuration
changes to take effect.
The manila.share.drivers.zfsonlinux.driver
Module
The manila.share.drivers.zfsonlinux.utils
Module