---
title: 安装配置并验证Cinder
description: "Cinder块存储，为虚拟机实例提供持久化存储。它的存在简化了块存储设备的创建和管理。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcpfs/ecosystemEnable/OpenStack/kunpengopenstackqueens_04_010.html
sourcePath: /source/zh/kunpengcpfs/ecosystemEnable/OpenStack/kunpengopenstackqueens_04_010.html
indexId: bf12b8499f85b8e105fdc9dfb2fe60c74a4d3ef52d1b38998832430409109e7183
---
# 安装配置并验证Cinder

Cinder块存储，为虚拟机实例提供持久化存储。它的存在简化了块存储设备的创建和管理。

#### 创建Cinder数据库

在控制节点执行以下操作。

1. 以root用户访问数据库。
  1 mysql -u root -p

2. 创建Cinder数据库，并授予对Cinder数据库的适当访问权限。
  1 2 3 4 CREATE DATABASE cinder; GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY '<PASSWORD>'; GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY '<PASSWORD>'; exit

  为方便理解，本文将涉及的密码全部以“<PASSWORD>”代替，请用户根据实际情况进行修改。此处<PASSWORD>为Cinder数据库的密码。

3. 使用admin用户登录OpenStack命令行，创建服务凭据和Cinder用户。
  1 2 source /etc/keystone/admin-openrc openstack user create --domain default --password-prompt cinder

4. 将admin角色添加到Cinder用户。
  1 openstack role add --project service --user cinder admin

5. 创建cinderv2和cinderv3服务实体。
  1 2 openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2 openstack service create --name cinderv3 --description "OpenStack Block Storage" volumev3

  Cinder服务需要创建两个服务实体。

6. 创建Block Storage服务API端点。
  1 2 3 openstack endpoint create --region RegionOne volumev2 public http://controller:8776/v2/%\(project_id\)s openstack endpoint create --region RegionOne volumev2 internal http://controller:8776/v2/%\(project_id\)s openstack endpoint create --region RegionOne volumev2 admin http://controller:8776/v2/%\(project_id\)s

  1 2 3 openstack endpoint create --region RegionOne volumev3 public http://controller:8776/v3/%\(project_id\)s openstack endpoint create --region RegionOne volumev3 internal http://controller:8776/v3/%\(project_id\)s openstack endpoint create --region RegionOne volumev3 admin http://controller:8776/v3/%\(project_id\)s


#### 安装和配置Cinder

在控制节点执行以下操作。

1. 安装软件包。
  1 yum -y install openstack-cinder

2. 编辑配置文件“/etc/cinder/cinder.conf”。
```
vim /etc/cinder/cinder.conf
```

并且完成以下操作：

  a. 配置数据库访问，替换<PASSWORD>为合适的密码。
    1 2 [database] connection = mysql+pymysql://cinder:<PASSWORD>@controller/cinder

  b. 配置RabbitMQ消息队列访问，替换<PASSWORD>为合适的密码。
    1 2 [DEFAULT] transport_url = rabbit://openstack:<PASSWORD>@controller

  c. 配置身份服务访问，替换<PASSWORD>为Cinder在Identity服务中为用户选择的密码。
    DEFAULT模块：

    1 2 [DEFAULT] auth_strategy = keystone

    keystone_authtoken模块： 1 2 3 4 5 6 7 8 9 10 [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 = <PASSWORD>

  d. 配置my_ip选项以使用控制器节点的管理接口IP地址。
    1 2 [DEFAULT] my_ip = 172.168.201.11

  e. 配置锁定路径。
    1 2 [oslo_concurrency] lock_path = /var/lib/cinder/tmp

3. 填充块存储数据库。
  1 su -s /bin/sh -c "cinder-manage db sync" cinder


#### 配置计算使用块存储

在控制节点执行以下操作。

1. 编辑“/etc/nova/nova.conf”配置文件。
  1 vim /etc/nova/nova.conf

2. 完成以下操作：
  1 2 [cinder] os_region_name = RegionOne


#### 完成控制节点的安装

在控制节点执行以下操作。

1. 重新启动Compute API服务。
  1 systemctl restart openstack-nova-api.service

2. 启动Block Storage服务并将其配置为在系统引导时启动。
  1 2 systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service

3. 验证控制节点的安装，state为up，即为状态正常。
  1 openstack volume service list


#### 安装和配置存储节点

在存储节点执行以下操作。

1. 安装软件包。
  1 yum -y install openstack-cinder lvm2 device-mapper-persistent-data scsi-target-utils rpcbind nfs-utils

2. 配置用于存储的LVM卷，以下仅为示例。

  a. 创建LVM物理卷，以“/dev/sdb”为例。
    1 pvcreate /dev/sdb

  b. 创建LVM卷组“cinder-volumes”。
    1 vgcreate cinder-volumes /dev/sdb

  c. 配置lvm过滤器。

```
vi /etc/lvm/lvm.conf
```


    修改如下内容：

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


    在devices字段中添加过滤，以接受“/dev/sdb”设备并拒绝其他设备。 filter过滤器阵列中的每个项目开头为“a”或者“r”，用于接受或拒绝某个设备，如果操作系统本身也使用了LVM卷，则还必须将关联的系统盘设备添加到过滤器。例如，如果“/dev/sda”设备包含操作系统，则需要将“sda”添加到过滤器。

3. 编辑配置文件“/etc/cinder/cinder.conf”。
```
vim /etc/cinder/cinder.conf
```

并完成以下操作：

  a. 配置数据库访问。
    1 2 [database] connection = mysql+pymysql://cinder:<PASSWORD>@controller/cinder

    <PASSWORD>为Block Storage数据库选择的密码。

  b. 配置RabbitMQ消息队列访问。
    1 2 [DEFAULT] transport_url = rabbit://openstack:<PASSWORD>@controller

    <PASSWORD>为openstack账户选择的密码RabbitMQ。

  c. 配置身份服务访问。
    1 2 3 4 5 6 7 8 9 10 11 12 [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 = <PASSWORD>

    <PASSWORD>为Cinder在Identity服务中为用户选择的密码。

  d. 配置my_ip为存储节点上管理网络接口的IP地址。
    1 2 [DEFAULT] my_ip = 172.168.201.12

  e. 新增[lvm]配置，使用LVM驱动程序，cinder-volumes卷组，iSCSI协议和相应的iSCSI服务配置LVM后端。
    1 2 3 4 5 [lvm] volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver volume_group = cinder-volumes target_protocol = iscsi target_helper = tgtadm

  f. 启用LVM后端。
    1 2 [DEFAULT] enabled_backends = lvm

  g. 配置Image服务API的位置。
    1 2 [DEFAULT] glance_api_servers = http://controller:9292

  h. 配置锁定路径。
    1 2 [oslo_concurrency] lock_path = /var/lib/cinder/tmp

4. 当cinder使用tgtadm的方式挂载卷的时候，要修改/etc/tgt/tgtd.conf，内容如下，保证tgtd可以发现cinder-volume的iSCSI Target。

```
include /var/lib/cinder/volumes/*
```


#### 完成安装

在存储节点执行以下操作。

启动Block Storage卷服务（包括其依赖项）并将其配置为在系统引导时启动。

```
systemctl enable rpcbind.service nfs-server.service tgtd.service iscsid.service  openstack-cinder-volume.service 
systemctl start rpcbind.service nfs-server.service tgtd.service iscsid.service openstack-cinder-volume.service
```


#### 验证

在控制节点执行以下操作。

1. 使用admin用户登录OpenStack命令行。
  1 source /etc/keystone/admin-openrc

2. 列出服务组件以验证每个进程的成功启动。
  1 openstack volume service list


#### Cinder常用命令

| 命令行 | 功能描述 |
| --- | --- |
| openstack volume create \-\-size 1 volume1 | 创建存储卷 |
| openstack volume list | 显示存储卷列表 |
| openstack volume delete VOLNAME\-OR\-ID | 删除所选存储卷 |
| openstack volume snapshot create \-\-volume VOLNAME\-OR\-ID SNAPSHOT\-VOLNAME | 创建存储卷快照 |
| openstack volume snapshot list | 显示存储卷快照 |
| nova volume\-attach VM\_ID VOLUME\_ID /dev/vdb | 虚拟机挂载卷 |
| nova volume\-detach VM\_ID VOLUME\_ID | 虚拟机卸载卷 |
