Cinder块存储,为虚拟机实例提供持久化存储。它的存在简化了块存储设备的创建和管理。
在控制节点执行以下操作。
1
|
mysql -u root -p |
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数据库的密码。
1 2 |
source /etc/keystone/admin-openrc openstack user create --domain default --password-prompt cinder |
1
|
openstack role add --project service --user cinder admin |
1 2 |
openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2 openstack service create --name cinderv3 --description "OpenStack Block Storage" volumev3 |
Cinder服务需要创建两个服务实体。
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 |
在控制节点执行以下操作。
1
|
yum -y install openstack-cinder |
1
|
vim /etc/cinder/cinder.conf
|
并且完成以下操作:
1 2 |
[database] connection = mysql+pymysql://cinder:<PASSWORD>@controller/cinder |
1 2 |
[DEFAULT] transport_url = rabbit://openstack:<PASSWORD>@controller |
1 2 |
[DEFAULT] auth_strategy = keystone |
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> |
1 2 |
[DEFAULT] my_ip = 172.168.201.11 |
1 2 |
[oslo_concurrency] lock_path = /var/lib/cinder/tmp |
1
|
su -s /bin/sh -c "cinder-manage db sync" cinder |
请忽略此处输出中的任何abandoned弃用消息,由于OpenStack项目迭代较快,在Stein版本已经弃用了某些内容,这个命令行会输出一些弃用信息,属于正常的输出。
在控制节点执行以下操作。
1
|
vim /etc/nova/nova.conf
|
1 2 |
[cinder] os_region_name = RegionOne |
在控制节点执行以下操作。
1
|
systemctl restart openstack-nova-api.service |
1 2 |
systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service |
1
|
openstack volume service list |
在存储节点执行以下操作。
1
|
yum -y install lvm2 device-mapper-persistent-data |
一些发行版默认包含LVM,不需要安装。
1 2 |
systemctl enable lvm2-lvmetad.service systemctl start lvm2-lvmetad.service |
1
|
pvcreate /dev/sdb
|
1
|
vgcreate cinder-volumes /dev/sdb |
在计算节点执行以下操作。
1
|
vim /etc/lvm/lvm.conf
|
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 |
1
|
vim /etc/cinder/cinder.conf
|
并完成以下操作:
1 2 |
[database] connection = mysql+pymysql://cinder:<PASSWORD>@controller/cinder |
<PASSWORD>为Block Storage数据库选择的密码。
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服务中为用户选择的密码 。
1 2 |
[DEFAULT] my_ip = 172.168.201.12 |
1 2 3 4 5 |
[lvm] volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver volume_group = cinder-volumes target_protocol = iscsi target_helper = lioadm |
1 2 |
[DEFAULT] enabled_backends = lvm |
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 |
在控制节点执行以下操作。
1
|
source /etc/keystone/admin-openrc |
1
|
openstack volume service list |
命令行 |
功能描述 |
---|---|
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 |
虚拟机卸载卷 |