本教程将详细介绍如何在OpenStack打算用于块存储的存储节点上安装和配置 Cinder。请确保遵循每个步骤,并在必要时根据自己的环境进行适当的调整。
一、先决条件
在存储节点中,必须准备好存储设备。
1、安装LVM和相关软件包
2、安装 LVM 软件包:
zypper install lvm2
3、(可选)如果打算使用非 Raw 图像类型,例如 QCOW2 和 VMDK,请安装 QEMU 软件包:
zypper install qemu
注意:某些发行版默认包含 LVM。
4、创建和配置 LVM
创建 LVM 物理卷:
pvcreate /dev/sdb Physical volume "/dev/sdb" successfully created
5、创建 LVM 卷组:
vgcreate cinder-volumes /dev/sdb
输出示例:
Volume group "cinder-volumes" successfully created
Block Storage 服务将在此卷组中创建逻辑卷。
6、只有实例才能访问块存储卷。底层操作系统将管理卷。默认情况下,LVM 卷扫描工具会扫描目录以查找符合条件的块存储设备。但如果项目在其卷上使用 LVM,扫描工具可能会检测这些卷并尝试缓存它们,这可能会导致底层操作系统出现各种问题。必须重新配置 LVM 以仅扫描包含卷组的设备。
编辑配置文件以限制 LVM 扫描:
请编辑文件 “/etc/lvm/lvm.conf” 并完成以下设置:
在 “devices” 部分中,添加仅接受设备 “/dev/sdb” 并拒绝所有其他设备的过滤器:
devices { ... filter = [ "a/sdb/", "r/.*/"]
警告:如果存储节点的操作系统磁盘也使用 LVM,请确保在过滤器中添加与操作系统相关的设备。例如,如果设备包含操作系统 “/dev/sda”:
filter = [ "a/sda/", "a/sdb/", "r/.*/" ]
同样如果计算节点在运行系统磁盘时,也必须修改这些节点上的过滤器,以仅包含操作系统磁盘,例如 “/etc/lvm/lvm.conf” 中的:
filter = [ "a/sda/", "r/.*/" ]
二、安装和配置组件
1、安装所需软件包:
zypper install openstack-cinder-volume tgt
2、编辑配置文件 “/etc/cinder/cinder.conf”,并完成以下部分:
配置数据库访问:
[database] # ... connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
请将 “CINDER_DBPASS” 替换为为 Block Storage 数据库选择的密码。
配置消息队列访问:
[DEFAULT] # ... transport_url = rabbit://openstack:RABBIT_PASS@controller
请将 “RABBIT_PASS” 替换为在 RabbitMQ 中为 “openstack” 帐户选择的密码。
配置 Identity Service 访问:
[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 = CINDER_PASS
请将 “CINDER_PASS” 替换为在 Identity 服务中为用户 “cinder” 选择的密码。
注意:请确保注释掉或删除 “[keystone_authtoken]” 部分中的任何其他选项。
配置管理接口 IP 地址:
[DEFAULT] # ... my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
请将 “MANAGEMENT_INTERFACE_IP_ADDRESS” 替换为存储节点上管理网络接口的 IP 地址,通常为 “10.0.0.41”。
配置 LVM 驱动程序和 iSCSI 协议:
[lvm] # ... volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver volume_group = cinder-volumes target_protocol = iscsi target_helper = tgtadm
启用 LVM 后端:
[DEFAULT] # ... enabled_backends = lvm
注意:后端名称是任意的。例如本指南使用驱动程序名称作为后端名称。
配置图片服务 API:
[DEFAULT] # ... glance_api_servers = http://controller:9292
配置锁定路径:
[oslo_concurrency] # ... lock_path = /var/lib/cinder/tmp
3、创建文件 “/etc/tgt/conf.d/cinder.conf”,并添加以下内容:
include /var/lib/cinder/volumes/*
三、完成安装
启动 Block Storage 卷服务及其依赖项,并将它们配置为在系统引导时自动启动:
systemctl enable openstack-cinder-volume.service tgtd.service systemctl start openstack-cinder-volume.service tgtd.service