块存储服务cinder
块存储服务cinder为实例提供块存储
本身并不提供存储技术,都是通过调用其他的存储,例如NFS,LVM,ceph等,真正提供存储的是这些
cinder-api :接收外部的api请求
cinder-volume:提供存储空间
cinder-scheduler:调度器,决定将要分配的空间由哪一个cinder-volume提供
cinder-backup:备份存储
控制节点操作:
1.数据库创库授权
CREATE DATABASE cinder;
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
IDENTIFIED BY 'CINDER_DBPASS';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \
IDENTIFIED BY 'CINDER_DBPASS';

2.在keystone上创建用户,关联角色
openstack user create --domain default --password CINDER_PASS cinder
openstack role add --project service --user cinder admin

3.创建 cinder 和 cinderv2 服务实体,注册api
openstack service create --name cinder \
--description "OpenStack Block Storage" volume

openstack service create --name cinderv2 \
--description "OpenStack Block Storage" volumev2

创建块存储服务的 API
openstack endpoint create --region RegionOne \
volume public http://controller:8776/v1/%\(tenant_id\)s

openstack endpoint create --region RegionOne \
volume internal http://controller:8776/v1/%\(tenant_id\)s

openstack endpoint create --region RegionOne \
volume admin http://controller:8776/v1/%\(tenant_id\)s

openstack endpoint create --region RegionOne \
volumev2 public http://controller:8776/v2/%\(tenant_id\)s

openstack endpoint create --region RegionOne \
volumev2 internal http://controller:8776/v2/%\(tenant_id\)s

openstack endpoint create --region RegionOne \
volumev2 admin http://controller:8776/v2/%\(tenant_id\)s

3.yum安装软件包
yum install openstack-cinder -y
4.编辑配置文件
vim /etc/cinder/cinder.conf
[database]
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
[DEFAULT]
rpc_backend = rabbit
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
[DEFAULT]
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = CINDER_PASS
[DEFAULT]
my_ip = 控制节点IP
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp
5.同步数据库
su -s /bin/sh -c "cinder-manage db sync" cinder
验证
mysql cinder -e 'show tables;'

6.修改控制节点的计算服务配置文件
vim /etc/nova/nova.conf
[cinder]
os_region_name = RegionOne
7.启动服务
重启计算服务
systemctl restart openstack-nova-api.service
systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service
验证:
cinder service-list

cinder对接lvm后端存储
在存储节点上执行的操作
安装 LVM 包
yum install lvm2 -y
添加两块硬盘后重新扫描硬盘
echo '- - -' >/sys/class/scsi_host/host0/scan

添加硬盘后创建物理卷
pvcreate /dev/sdb
pvcreate /dev/sdc

创建卷组
vgcreate cinder-ssd /dev/sdb
vgcreate cinder-sata /dev/sdc

只有实例可以访问块存储卷组
底层的操作系统管理这些设备并将其与卷关联。默认情况下,LVM卷扫描工具会扫描/dev 目录,查找包含卷的块存储设备。如果项目在他们的卷上使用LVM,扫描工具检测到这些卷时会尝试缓存它们,可能会在底层操作系统和项目卷上产生各种问题。您必须重新配置LVM,让它只扫描包含cinder-volume卷组的设备。编辑/etc/lvm/lvm.conf文件并完成下面的操作:
添加过滤器避免失去对主机的权限
vim /etc/lvm/lvm.conf

安装并配置组件
yum install openstack-cinder targetcli python-keystone -y
修改配置文件
vim /etc/cinder/cinder.conf
在 [database] 部分,配置数据库访问:
[database]
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
在 "[DEFAULT]" 和 "[oslo_messaging_rabbit]"部分,配置 "RabbitMQ" 消息队列访问:
[DEFAULT]
rpc_backend = rabbit
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
在 "[DEFAULT]" 和 "[keystone_authtoken]" 部分,配置认证服务访问:
[DEFAULT]
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = CINDER_PASS
在 [DEFAULT] 部分,配置 my_ip 选项:
[DEFAULT]
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
在``[lvm]``部分,配置LVM后端以LVM驱动结束,卷组``cinder-volumes`` ,iSCSI 协议和正确的 iSCSI服务:
[ssd]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = 此处改为自己创建的卷组(cinder-ssd)
iscsi_protocol = iscsi
iscsi_helper = lioadm
volume_backend_name = ssd(配置多个后端存储的时候,进行区分)
[sata]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = 此处改为自己创建的卷组(cinder-sata)
iscsi_protocol = iscsi
iscsi_helper = lioadm
volume_backend_name = sata(配置多个后端存储的时候,进行区分)
在 [DEFAULT] 部分,启用 自己配置的 后端(这里我配置的ssd,sata):
[DEFAULT]
enabled_backends = ssd,sata
在 [DEFAULT] 区域,配置镜像服务 API 的位置:
[DEFAULT]
glance_api_servers = http://此处如果迁移过glance服务的话要改成新的glance地址: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
启动后进行验证
在控制节点查看
cinder service-list

如果出现state是down的情况,先检查控制节点与计算节点之间的时间同步服务,确认时间是否都同步
时间同步之后,再次进行确认

OpenStack 服务状态的 up/down 判定逻辑:
服务会定期(report_interval,默认 10s)向数据库更新心跳时间;如果当前时间 - 最后心跳时间 > service_down_time(默认 60s),状态就会被标记为 down。
如果 compute2 节点和 controller 节点时间不同步(比如 NTP 服务异常、时间差超过 60s),就会导致心跳超时,服务被判定为 down。
在web端操作创建卷


在存储节点查看lvs

注意:卷的大小只能往大调不能往小调
创建卷类型


通过之前配置的键值进行区分
同样的步骤创建另外一个卷类型


再次创建卷
创建不同的类型


将创建好的卷连接给实例使用

选择要连接到的实例

进入实例验证
可以看到多了一块盘

格式化新加的盘

挂载
