安装和配置存储节点

先决条件

在存储节点上安装和配置块存储服务之前,您必须准备存储设备。

注意

在存储节点上执行以下步骤。

  1. 安装支持的实用程序包

    • 安装 LVM 软件包

      # yum install lvm2 device-mapper-persistent-data
      
    • 对于 CentOS 8 或更高版本,这不是必需的,因为它们自带一个不使用 lvmetad 服务的 LVM 版本

      # systemctl enable lvm2-lvmetad.service
      # systemctl start lvm2-lvmetad.service
      

    注意

    某些发行版默认包含 LVM。

  2. 创建 LVM 物理卷 /dev/sdb

    # pvcreate /dev/sdb
    
    Physical volume "/dev/sdb" successfully created
    
  3. 创建 LVM 卷组 cinder-volumes

    # vgcreate cinder-volumes /dev/sdb
    
    Volume group "cinder-volumes" successfully created
    

    块存储服务在此卷组中创建逻辑卷。

  4. 只有实例才能访问块存储卷。但是,底层操作系统管理与卷关联的设备。默认情况下,LVM 卷扫描工具会扫描 /dev 目录中的块存储设备,这些设备包含卷。如果项目在其卷上使用 LVM,则扫描工具会检测到这些卷并尝试对其进行缓存,这可能会导致底层操作系统和项目卷出现各种问题。您必须重新配置 LVM,使其仅扫描包含 cinder-volumes 卷组的设备。编辑 /etc/lvm/lvm.conf 文件并完成以下操作

    • devices 部分,添加一个过滤器,该过滤器接受 /dev/sdb 设备并拒绝所有其他设备

      devices {
      ...
      filter = [ "a/sdb/", "r/.*/"]
      

      过滤器数组中的每个项目都以 a 表示 接受r 表示 拒绝,并包含设备名称的正则表达式。数组必须以 r/.*/ 结尾,以拒绝任何剩余的设备。您可以使用 vgs -vvvv 命令来测试过滤器。

      警告

      如果您的存储节点在操作系统磁盘上使用 LVM,您还必须将关联的设备添加到过滤器中。例如,如果 /dev/sda 设备包含操作系统

      filter = [ "a/sda/", "a/sdb/", "r/.*/"]
      

      同样,如果您的计算节点在操作系统磁盘上使用 LVM,您还必须修改这些节点上的 /etc/lvm/lvm.conf 文件中的过滤器,以仅包含操作系统磁盘。例如,如果 /dev/sda 设备包含操作系统

      filter = [ "a/sda/", "r/.*/"]
      

安装和配置组件

  1. 安装软件包

    # yum install openstack-cinder targetcli
    
  2. 编辑 /etc/cinder/cinder.conf 文件并完成以下操作

    • [database] 部分,配置数据库访问

      [database]
      # ...
      connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
      

      CINDER_DBPASS 替换为您为块存储数据库选择的密码。

    • [DEFAULT] 部分中,配置 RabbitMQ 消息队列访问

      [DEFAULT]
      # ...
      transport_url = rabbit://openstack:RABBIT_PASS@controller
      

      RABBIT_PASS 替换为您为 RabbitMQ 中的 openstack 帐户选择的密码。

    • [DEFAULT][keystone_authtoken] 部分中,配置身份服务访问

      [DEFAULT]
      # ...
      auth_strategy = keystone
      
      [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 = cinder
      password = CINDER_PASS
      

      CINDER_PASS 替换为您在身份服务中为 cinder 用户选择的密码。

      注意

      注释掉或删除 [keystone_authtoken] 部分中的任何其他选项。

    • [DEFAULT] 部分中,配置 my_ip 选项

      [DEFAULT]
      # ...
      my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
      

      MANAGEMENT_INTERFACE_IP_ADDRESS 替换为存储节点上管理网络接口的 IP 地址,通常对于 示例架构 中的第一个节点为 10.0.0.41。

    • [lvm] 部分,使用 LVM 驱动程序、cinder-volumes 卷组、iSCSI 协议和适当的 iSCSI 服务配置 LVM 后端。如果 [lvm] 部分不存在,请创建它

      [lvm]
      volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
      volume_group = cinder-volumes
      target_protocol = iscsi
      target_helper = lioadm
      
    • [DEFAULT] 部分,启用 LVM 后端

      [DEFAULT]
      # ...
      enabled_backends = lvm
      

      注意

      后端名称是任意的。作为示例,本指南使用驱动程序的名称作为后端的名称。

    • [DEFAULT] 部分,配置 Image 服务 API 的位置

      [DEFAULT]
      # ...
      glance_api_servers = http://controller:9292
      
    • [oslo_concurrency] 部分中,配置锁路径

      [oslo_concurrency]
      # ...
      lock_path = /var/lib/cinder/tmp
      

完成安装

  • 启动块存储卷服务及其依赖项,并配置它们在系统启动时启动

    # systemctl enable openstack-cinder-volume.service target.service
    # systemctl start openstack-cinder-volume.service target.service