第 6 章 配置 OpenStack 使用 NFS 后端
本章介绍了如何配置 OpenStack 卷服务(openstack-cinder-volume
)来使用一个存在的 NFS 服务器作为一个额外的后端。另外,本章还介绍了如何创建一个云硬盘类型,从而可以在创建云硬盘时使用它来设置 NFS 共享作为后端。
先决条件:
- 要作为后端的 NFS 共享已被正确配置。
- 提供 OpenStack 卷服务的节点有到 NFS 共享的读/写访问权限。
-
具有运行 OpenStack 卷服务的系统的
root
访问权限。
基于的假设:
- 您的 OpenStack 环境不是通过 Red Hat Enterprise Linux OpenStack Platform Installer 进行部署的。
-
您的 OpenStack Block Storage 服务使用默认的后端(通过 Packstack 部署的、名为
lvm
的后端)。
6.1. 配置 SELinux
当客户端启用了 SELinux 时,如果需要从这个客户端访问一个实例上的 NFS 卷,则需要启用 virt_use_nfs 布尔值。以 root
身份运行以下命令来启用这个布尔值(并使它在重启后仍然有效):
# setsebool -P virt_use_nfs on
在需要访问实例上的 NFS 共享的所有客户端主机上运行这个命令(包括所有 Compute 节点)。
6.3. 创建一个新的后端定义
在默认情况下,Packstack 在 /etc/cinder/cinder.conf
中为 LVM 定义一个后端:
[lvm] iscsi_helper=lioadm volume_group=cinder-volumes iscsi_ip_address= volume_driver=cinder.volume.drivers.lvm.LVMISCSIDriver volume_backend_name=lvm
在 /etc/cinder/cinder.conf
中定义了一个 NFS 共享后,可以按照以下步骤为它配置一个额外的后端:
-
以
root
身份登录到运行 OpenStack 卷服务的节点上。 为 NFS 后端创建一个新定义,把卷服务设置为使用定义了 NFS 共享的文件(
/etc/cinder/nfs_share
):# openstack-config --set /etc/cinder/cinder.conf nfs nfs_shares_config /etc/cinder/nfs_shares
在这里,我们使用
nfsbackend
作为一个定义的名称。配置卷服务使用 NFS 卷驱动(名为
cinder.volume.drivers.nfs.NfsDriver
):# openstack-config --set /etc/cinder/cinder.conf nfs volume_driver cinder.volume.drivers.nfs.NfsDriver
为 NFS 后端定义一个卷后端名(在以下命令中是
nfs
):# openstack-config --set /etc/cinder/cinder.conf nfs volume_backend_name nfsbackend
在 nfs_mount_options 配置关键字中添加需要的挂载选项(
MOUNTOPTIONS
):# openstack-config --set /etc/cinder/cinder.conf nfs nfs_mount_options _MOUNTOPTIONS_
现在,以下项应该出现在 /etc/cinder/cinder.conf
中:
[nfs] nfs_shares_config = /etc/cinder/nfs_shares volume_driver = cinder.volume.drivers.nfs.NfsDriver volume_backend_name = nfsbackend nfs_mount_options =
现在,您可以启用 NFS 后端(使用 /etc/cinder/cinder.conf
中的 enabled_backends
配置关键字)。Packstack 创建的默认后端应该已在这里列出:
enabled_backends=lvm
在这个列表中添加新的 NFS 后端定义:
enabled_backends=lvm,nfs
当 NFS 后端被启用后,重启 OpenStack 卷服务:
# openstack-service restart cinder-volume
6.4. 为 NFS 后端创建一个云硬盘类型
现在,新创建的 NFS 后端已经有效,但在创建新的云硬盘时还不能使用。为了使新的云硬盘可以使用这个 NFS 后端,您需要首先为它创建一个云硬盘类型。
查看存在的云硬盘类型。在默认情况下,使用 lvm 后端的云硬盘类型应该已经存在(名为 iscsi):
+--------------------------------------+-------+ | ID | Name | +--------------------------------------+-------+ | f8d31dc8-a20e-410c-81bf-6b0a971c61a0 | iscsi | +--------------------------------------+-------+
为 NFS 后端创建一个新的、名为
nfstype
的云硬盘类型:# cinder type-create nfstype
使用后端的名称(
nfsbackend
)把nfstype
云硬盘类型配置为使用 NFS 后端:# cinder type-key nfstype set volume_backend_name=nfsbackend
检查新创建的云硬盘类型被正确创建并配置:
+--------------------------------------+---------+ | ID | Name | +--------------------------------------+---------+ | bbff44b5-52b1-43d6-beb4-83aa2d20bc59 | nfstype | | f8d31dc8-a20e-410c-81bf-6b0a971c61a0 | iscsi | +--------------------------------------+---------+ +-----------------------+-------+---------------------------------------+ | ID | Name | extra_specs | +-----------------------+-------+---------------------------------------+ |bbff44b5-~-83aa2d20bc59|nfstype|{u'volume_backend_name': u'nfsbackend'}| |f8d31dc8-~-6b0a971c61a0| iscsi | {u'volume_backend_name': u'lvm'} | +-----------------------+-------+---------------------------------------+
您可以通过 dashboard 创建并配置云硬盘类型。如需了解更多信息,请参阅 第 4.2.3 节 “使用云硬盘类型进行云硬盘分组设置”。
6.5. 测试新的 NFS 后端
为了测试新的 NFS 后端,在创建一个名为 nfsvolume
的云硬盘时调用云硬盘类型 nfstype
:
+---------------------+--------------------------------------+ | Property | Value | +---------------------+--------------------------------------+ | attachments | [] | | availability_zone | nova | | bootable | false | | created_at | 2015-01-06T05:14:09.271114 | | display_description | None | | display_name | nfsvolume | | encrypted | False | | id | 0cd7ac45-622a-47b0-9503-7025bbedc8ed | | metadata | {} | | size | 1 | | snapshot_id | None | | source_volid | None | | status | creating | | volume_type | nfstype | +---------------------+--------------------------------------+
当云硬盘被成功创建后,在 NFS 服务器上检查 NFS 共享。一个相应的云硬盘(它的名字中包括新创建云硬盘的 ID)应该在那里出现:
drwxrwxrwx. 2 root root 4.0K Jan 6 15:14 . drwxr-xr-x. 18 root root 4.0K Jan 5 04:03 .. -rw-rw-rw-. 1 nfsnobody nfsnobody 1.0G Jan 6 15:14+ +volume-0cd7ac45-622a-47b0-9503-7025bbedc8ed