Configure an NFS storage back end
This section explains how to configure OpenStack Block Storage to use
NFS storage. You must be able to access the NFS shares from the server
that hosts the cinder volume service.
Note
The cinder volume service is named
openstack-cinder-volume on the following distributions:
- CentOS
- Fedora
- openSUSE
- Red Hat Enterprise Linux
- SUSE Linux Enterprise
In Ubuntu and Debian distributions, the cinder volume
service is named cinder-volume.
Configure Block Storage to use an NFS storage back
end
-
Log in as
rootto the system hosting the
cindervolume service. -
Create a text file named
nfs_sharesin the
/etc/cinder/directory. -
Add an entry to
/etc/cinder/nfs_sharesfor each NFS
share that thecindervolume service should use for back
end storage. Each entry should be a separate line, and should use the
following format:Where:
- HOST is the IP address or host name of the NFS server.
- SHARE is the absolute path to an existing and accessible NFS
share.
-
Set
/etc/cinder/nfs_sharesto be owned by the
rootuser and thecindergroup:# chown root:cinder /etc/cinder/nfs_shares -
Set
/etc/cinder/nfs_sharesto be readable by members
of the cinder group:# chmod 0640 /etc/cinder/nfs_shares -
Configure the
cindervolume service to use the
/etc/cinder/nfs_sharesfile created earlier. To do so, open
the/etc/cinder/cinder.confconfiguration file and set the
nfs_shares_configconfiguration key to
/etc/cinder/nfs_shares.On distributions that include
openstack-config, you can
configure this by running the following command instead:# openstack-config --set /etc/cinder/cinder.conf \ DEFAULT nfs_shares_config /etc/cinder/nfs_sharesThe following distributions include openstack-config:
- CentOS
- Fedora
- openSUSE
- Red Hat Enterprise Linux
- SUSE Linux Enterprise
-
Optionally, provide any additional NFS mount options required in
your environment in thenfs_mount_optionsconfiguration key
of/etc/cinder/cinder.conf. If your NFS shares do not
require any additional mount options (or if you are unsure), skip this
step.On distributions that include
openstack-config, you can
configure this by running the following command instead:# openstack-config --set /etc/cinder/cinder.conf \ DEFAULT nfs_mount_options OPTIONSReplace OPTIONS with the mount options to be used when accessing NFS
shares. See the manual page for NFS for more information on available
mount options (man nfs). -
Configure the
cindervolume service to use the
correct volume driver, namely
cinder.volume.drivers.nfs.NfsDriver. To do so, open the
/etc/cinder/cinder.confconfiguration file and set the
volume_driver configuration key to
cinder.volume.drivers.nfs.NfsDriver.On distributions that include
openstack-config, you can
configure this by running the following command instead:# openstack-config --set /etc/cinder/cinder.conf \ DEFAULT volume_driver cinder.volume.drivers.nfs.NfsDriver -
You can now restart the service to apply the configuration.
Note
The
nfs_sparsed_volumesconfiguration key determines
whether volumes are created as sparse files and grown as needed or fully
allocated up front. The default and recommended value is
true, which ensures volumes are initially created as sparse
files.Setting
nfs_sparsed_volumestofalsewill
result in volumes being fully allocated at the time of creation. This
leads to increased delays in volume creation.However, should you choose to set
nfs_sparsed_volumesto
false, you can do so directly in
/etc/cinder/cinder.conf.On distributions that include
openstack-config, you can
configure this by running the following command instead:# openstack-config --set /etc/cinder/cinder.conf \ DEFAULT nfs_sparsed_volumes falseWarning
If a client host has SELinux enabled, the
virt_use_nfs
boolean should also be enabled if the host requires access to NFS
volumes on an instance. To enable this boolean, run the following
command as therootuser:# setsebool -P virt_use_nfs onThis command also makes the boolean persistent across reboots. Run
this command on all client hosts that require access to NFS volumes on
an instance. This includes all compute nodes.