安装配置并验证Cinder
Cinder块存储,为虚拟机实例提供持久化存储。它的存在简化了块存储设备的创建和管理。
创建Cinder数据库
在控制节点执行以下操作。
- 以root用户访问数据库。
1
mysql -u root -p
- 创建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数据库的密码。
- 使用admin用户登录OpenStack命令行,创建服务凭据和Cinder用户。
1 2
source /etc/keystone/admin-openrc openstack user create --domain default --password-prompt cinder
- 将admin角色添加到Cinder用户。
1
openstack role add --project service --user cinder admin
- 创建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服务需要创建两个服务实体。
- 创建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
yum -y install openstack-cinder
- 编辑配置文件“/etc/cinder/cinder.conf”。
1
vim /etc/cinder/cinder.conf
并且完成以下操作:
- 配置数据库访问,替换<PASSWORD>为合适的密码。
1 2
[database] connection = mysql+pymysql://cinder:<PASSWORD>@controller/cinder
- 配置RabbitMQ消息队列访问,替换<PASSWORD>为合适的密码。
1 2
[DEFAULT] transport_url = rabbit://openstack:<PASSWORD>@controller
- 配置身份服务访问,替换<PASSWORD>为cinder在Identity服务中为用户选择的密码。
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>
- 配置my_ip选项以使用控制器节点的管理接口IP地址。
1 2
[DEFAULT] my_ip = 172.168.201.11
- 配置锁定路径。
1 2
[oslo_concurrency] lock_path = /var/lib/cinder/tmp
- 配置数据库访问,替换<PASSWORD>为合适的密码。
- 填充块存储数据库。
1
su -s /bin/sh -c "cinder-manage db sync" cinder
请忽略此处输出中的任何abandoned弃用消息,由于OpenStack项目迭代较快,在Stein版本已经弃用了某些内容,这个命令行会输出一些弃用信息,属于正常的输出。
配置计算使用块存储
在控制节点执行以下操作。
- 编辑“/etc/nova/nova.conf”配置文件。
1
vim /etc/nova/nova.conf
- 完成以下操作:
1 2
[cinder] os_region_name = RegionOne
完成控制节点的安装
在控制节点执行以下操作。
- 重新启动Compute API服务。
1
systemctl restart openstack-nova-api.service
- 启动Block Storage服务并将其配置为在系统引导时启动。
1 2
systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service
- 验证控制节点的安装,state为up,即为状态正常。
1
openstack volume service list
安装和配置LVM卷
在存储节点执行以下操作。
- 安装LVM包。
1
yum -y install lvm2 device-mapper-persistent-data
一些发行版默认包含LVM,不需要安装。
- 启动LVM元数据服务并将其配置为在系统引导时启动。
1 2
systemctl enable lvm2-lvmetad.service systemctl start lvm2-lvmetad.service
- 创建LVM物理卷“/dev/sdb”。
1
pvcreate /dev/sdb
- 创建LVM卷组“cinder-volumes”。
1
vgcreate cinder-volumes /dev/sdb
在计算节点执行以下操作。
- 编辑配置文件“/etc/lvm/lvm.conf”。
1
vim /etc/lvm/lvm.conf
- 在devices部分中,添加一个接受“/dev/sdb”设备的过滤器并拒绝所有其他设备。
1 2
devices { filter = [ "a/sda/", "a/sdb/", "r/.*/"]
filter过滤器阵列中的每个项目开头为“a”或者“r”,用于接受或用于拒绝某个设备,如果存储节点在操作系统磁盘上使用LVM,则还必须将关联的系统盘设备添加到过滤器。同样,如果计算节点在操作系统磁盘上使用LVM,也需要修改这些节点上“/etc/lvm/lvm.conf”文件中的过滤器以包括操作系统磁盘。例如,如果“/dev/sda”设备包含操作系统,则需要将“sda”添加到过滤器。
安装和配置存储节点
在存储节点执行以下操作。
- 安装软件包。
1
yum -y install openstack-cinder targetcli python-keystone
- 编辑配置文件“/etc/cinder/cinder.conf”。
1
vim /etc/cinder/cinder.conf
并完成以下操作:
- 配置数据库访问。
1 2
[database] connection = mysql+pymysql://cinder:<PASSWORD>@controller/cinder
<PASSWORD>为Block Storage数据库选择的密码。
- 配置RabbitMQ消息队列访问。
1 2
[DEFAULT] transport_url = rabbit://openstack:<PASSWORD>@controller
<PASSWORD>为openstack账户选择的密码rabbitmq。
- 配置身份服务访问。
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服务中为用户选择的密码 。
- 配置my_ip为存储节点上管理网络接口的IP地址。
1 2
[DEFAULT] my_ip = 172.168.201.12
- 新增[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 = lioadm
- 启用LVM后端。
1 2
[DEFAULT] enabled_backends = lvm
- 配置Image服务API的位置。
1 2
[DEFAULT] glance_api_servers = http://controller:9292
- 配置锁定路径。
1 2
[oslo_concurrency] lock_path = /var/lib/cinder/tmp
- 配置数据库访问。
完成安装
在存储节点系以下操作。
启动Block Storage卷服务(包括其依赖项)并将其配置为在系统引导时启动。
1 2 |
systemctl enable openstack-cinder-volume.service target.service systemctl start openstack-cinder-volume.service target.service |
验证
在控制节点执行以下操作。
- 使用admin用户登录OpenStack命令行。
1
source /etc/keystone/admin-openrc
- 列出服务组件以验证每个进程的成功启动。
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 |
虚拟机卸载卷 |