搜索

第 6 章 配置 OpenStack 使用 NFS 后端

download PDF

本章介绍了如何配置 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.2. 配置共享

添加 NFS 后端的第一步是定义 OpenStack 卷服务要使用的 NFS 共享。根据以下步骤进行操作:

  1. 以 root 身份登录到运行 OpenStack 卷服务的节点上。
  2. /etc/cinder/ 目录中创建一个新的、名为 nfs_share 的文本文件:

    /etc/cinder/nfs_share
  3. /etc/cinder/nfs_share 中使用以下格式定义 NFS 共享:

    HOST:SHARE

    其中:

    • HOST 是 NFS 服务器的 IP 地址或主机名。
    • SHARE 是 HOST 输出的 NFS 共享的绝对路径。
  4. /etc/cinder/nfs_share 的所有者设置为 root 用户和 cinder 组:

    # chown root:cinder /etc/cinder/nfs_share
  5. 最后,把 /etc/cinder/nfs_share 设置为 cinder 组中的用户可以进行读访问:

    # chmod 0640 /etc/cinder/nfs_share

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 共享后,可以按照以下步骤为它配置一个额外的后端:

  1. root 身份登录到运行 OpenStack 卷服务的节点上。
  2. 为 NFS 后端创建一个新定义,把卷服务设置为使用定义了 NFS 共享的文件(/etc/cinder/nfs_share):

    # openstack-config --set /etc/cinder/cinder.conf nfs nfs_shares_config /etc/cinder/nfs_shares

    在这里,我们使用 nfsbackend 作为一个定义的名称。

  3. 配置卷服务使用 NFS 卷驱动(名为 cinder.volume.drivers.nfs.NfsDriver):

    # openstack-config --set /etc/cinder/cinder.conf nfs volume_driver cinder.volume.drivers.nfs.NfsDriver
  4. 为 NFS 后端定义一个卷后端名(在以下命令中是 nfs):

    # openstack-config --set /etc/cinder/cinder.conf nfs volume_backend_name nfsbackend
  5. 在 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 后端,您需要首先为它创建一个云硬盘类型

  1. 查看存在的云硬盘类型。在默认情况下,使用 lvm 后端的云硬盘类型应该已经存在(名为 iscsi):

      +--------------------------------------+-------+
      |                  ID                  |  Name |
      +--------------------------------------+-------+
      | f8d31dc8-a20e-410c-81bf-6b0a971c61a0 | iscsi |
      +--------------------------------------+-------+
  2. 为 NFS 后端创建一个新的、名为 nfstype 的云硬盘类型:

    # cinder type-create nfstype
  3. 使用后端的名称(nfsbackend)把 nfstype 云硬盘类型配置为使用 NFS 后端:

    # cinder type-key nfstype set volume_backend_name=nfsbackend
  4. 检查新创建的云硬盘类型被正确创建并配置:

    +--------------------------------------+---------+
    |                  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
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.