这个部分描述怎样为块存储服务安装并配置存储节点。为简单起见,这里配置一个有一个空的本地块存储设备的存储节点。这个向导用的是 /dev/sdb
,但是你可以为你特定的节点中替换成不同的值。
该服务在这个设备上使用:term:‘LVM<Logical Volume Manager (LVM)>’提供逻辑卷,‘ISCSI<iSCSI Qualified Name (IQN)>’提供实例使用协议。你可以按照这些提示对你的其他存储节点的环境对水平环境稍作修改。
在你安装和配置块存储服务之前,你必须准备好存储设备。
注解
在存储节点实施这些步骤。
安装支持的工具包:
安装 LVM 包:
# yum install lvm2
启动LVM的metadata服务并且设置该服务随系统启动:
# systemctl enable lvm2-lvmetad.service
# systemctl start lvm2-lvmetad.service
注解
一些发行版默认包含了LVM。
创建LVM 物理卷 /dev/sdb
:
# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created
创建 LVM 卷组 cinder-volumes
:
# vgcreate cinder-volumes /dev/sdb
Volume group "cinder-volumes" successfully created
块存储服务会在这个卷组中创建逻辑卷。
只有实例可以访问块存储卷组。但是,底层的操作系统管理着与这些卷相关联的设备。默认情况下,LVM卷扫描工具会扫描``/dev`` 目录,查找包含卷的块存储设备。如果项目在他们的卷上使用了LVM,扫描工具便会在检测到这些卷时尝试缓存它们,这可能会在底层操作系统和项目卷上产生各种问题。所以您必须重新配置LVM,让它扫描仅包含``cinder-volume``卷组的设备。编辑``/etc/lvm/lvm.conf``文件并完成下面的操作:
在``devices``部分,添加一个过滤器,只接受``/dev/sdb``设备,拒绝其他所有设备:
devices {
...
filter = [ "a/sdb/", "r/.*/"]
每个过滤器组中的元素都以``a``开头,即为 accept,或以 r
开头,即为**reject**,并且包括一个设备名称的正则表达式规则。过滤器组必须以``r/.*/``结束,过滤所有保留设备。您可以使用 :命令:`vgs -vvvv` 来测试过滤器。
警告
如果您的存储节点在操作系统磁盘上使用了 LVM,您还必需添加相关的设备到过滤器中。例如,如果 /dev/sda
设备包含操作系统:
filter = [ "a/sda/", "a/sdb/", "r/.*/"]
类似地,如果您的计算节点在操作系统磁盘上使用了 LVM,您也必需修改这些节点上 /etc/lvm/lvm.conf
文件中的过滤器,将操作系统磁盘包含到过滤器中。例如,如果``/dev/sda`` 设备包含操作系统:
filter = [ "a/sda/", "r/.*/"]
安装软件包:
# yum install openstack-cinder targetcli python-keystone
编辑 /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
用你在 “RabbitMQ” 中为 “openstack” 选择的密码替换 “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
将 CINDER_PASS
替换为你在认证服务中为 cinder
用户选择的密码。
注解
在 [keystone_authtoken]
中注释或者删除其他选项。
在 [DEFAULT]
部分,配置 my_ip
选项:
[DEFAULT]
# ...
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
将其中的``MANAGEMENT_INTERFACE_IP_ADDRESS``替换为存储节点上的管理网络接口的IP 地址,例如样例架构 <overview-example-architectures>中所示的第一台节点 10.0.0.41 。
在``[lvm]``部分中,配置LVM后端,包括LVM驱动,``cinder-volumes``卷组 ,iSCSI 协议和适当的 iSCSI服务。如果``[lvm]``部分不存在,则创建它:
[lvm]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
iscsi_protocol = iscsi
iscsi_helper = lioadm
在 [DEFAULT]
部分,启用 LVM 后端:
[DEFAULT]
# ...
enabled_backends = lvm
注解
后端名字是任意的。比如,本教程使用驱动的名字作为后端的名字。
在 [DEFAULT]
区域,配置镜像服务 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
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.