分享

openstack【juno】入门 【cinder篇】二十一:安装配置块存储节点(cinder)

问题导读


1.如何让Linux新增硬盘生效被openstak cinder使用?
2.对于任何一个新增的openstack节点,如果不安装openstack包,是否可以?
3.如何验证创建的volume是否有效?



接上篇:openstack【juno】入门 【cinder篇】二十:cinder介绍及安装配置【控制节点】

此为新增节点



准备

这一部分描述怎么样安装配置cinder,为了简单起见,这个配置引用了空的本地存储设备 /dev/sdb的存储节点。它包含一个分区表和一个分区/dev/sdb1 暂满整个设备。这个规定使用LVM驱动的逻辑卷。通过 iSCSI提供给实例。按照下面说明,做一些改动。
安装openstack包

  1. apt-get install ubuntu-cloud-keyring
复制代码
  1. echo "deb http://ubuntu-cloud.archive.canonical.com/ubuntu" \
  2.   "trusty-updates/juno main" > /etc/apt/sources.list.d/cloudarchive-juno.list
复制代码

更新源
  1. apt-get update && apt-get dist-upgrade
复制代码


###################################

1.配置管理网络网卡

IP address: 10.0.0.41

  1. sudo nano /etc/network/interfaces
复制代码



这里配置如下:



  1. auto eth0
  2. iface eth0 inet static
  3. address 10.0.0.41
  4. netmask 255.255.255.0
  5. gateway 10.0.0.2
  6. dns-nameservers 8.8.8.8
复制代码


2.修改hosts为block

  1. sudo nano /etc/hosts
复制代码
修改如下:

  1. 127.0.0.1       localhost
  2. #127.0.1.1      ubuntu
  3. 10.0.0.41 block
复制代码


3.修改hostname


  1. sudo nano /etc/hostname
复制代码
内容:
  1. block
复制代码


4.重启
修改完毕,重启
  1. sudo reboot
复制代码



5.安装NTP

  1. apt-get install ntp
复制代码


修改配置文件
  1. sudo nano  /etc/ntp.conf
复制代码
添加如下内容:

  1. server controller iburst
复制代码
(如果没有配置host,则直接写ip地址,10.0.0.11 )
其他server注释掉

删除ntp.conf.dhcp
为防止ntp.conf.dhcp文件存在,执行下面命令
  1. rm /var/lib/ntp/ntp.conf.dhcp
复制代码


重启NTP
  1. service ntp restart
复制代码


查看
  1. ntpq -c peers
复制代码
2.png


6.安装LVM 包

创建物理卷/dev/sdb1
  1. pvcreate /dev/sdb1
复制代码
1.png

这里如果遇到Device /dev/sdb1 not found (or ignored by filtering)?,查看   

openstack【juno】入门 【cinder外篇】Device /dev/sdb1 not found (or ignored byfiltering)

需要补充的知识:
openstack存储基础1:浅谈Linux磁盘存储管理

openstack存储基础2:Linux LVM硬盘管理及LVM扩容


当然上面你也可以使用其它device。

7.创建LVM 卷组cinder-volumes

  1. vgcreate cinder-volumes /dev/sdb1
复制代码


2.png


存储节点服务在卷组里创建逻辑卷

8.lvm扫描修改

只有实例才能访问块存储卷,底层操作系统管理关于卷的管理设备,默认LVM 卷扫描工具会为块存储扫描 /dev目录。如果租户使用lvm,扫描工具会检测这些卷和缓存他们,这会造成各种各样的问题,必须重新配置lvm扫描设备。

编辑 /etc/lvm/lvm.conf文件完成下面内容
  1. sudo nano  /etc/lvm/lvm.conf
复制代码

a.在devices 部分,添加一个筛选器接受/dev/sdb设备并拒绝所有其他设备:
  1. devices {
  2. ...
  3. filter = [ "a/sdb/", "r/.*/"]
复制代码

1.png


说明:

array数组里包含可以访问和拒绝选项,里面使用正则表达式来表示。这个array数组,必须以 r/.*/结束拒绝其他设备。你可以使用 vgs -vvvv命令,测试过滤器。
提示:
如果你的存储节点底层操作系统使用LVM,也必须添加相关的设备到过滤器。例如:如果操作系统包含 /dev/sda 设备,
  1. filter = [ "a/sda/", "a/sdb/", "r/.*/"]
复制代码

类似如下:
如果你的计算节点底层操作系统使用LVM,你必须修改 /etc/lvm/lvm.conf文件,在这些底层操作系统磁盘的节点上,例如操作系统包含/dev/sda
  1. filter = [ "a/sda/", "r/.*/"]
复制代码


安装配置块存储卷组件

1.安装
  1. apt-get install cinder-volume python-mysqldb -y
复制代码

2.编辑文件 /etc/cinder/cinder.conf完成下面内容

  1. sudo nano /etc/cinder/cinder.conf
复制代码


a.在[database]部分,配置数据库访问
  1. [database]
  2. ...
  3. connection = mysql://cinder:CINDER_DBPASS@controller/cinder
复制代码

密码需要替换成自己的密码,这里使用的是默认。


b.在 [DEFAULT]部分,配置RabbitMQ消息代理
  1. [DEFAULT]
  2. ...
  3. rpc_backend = rabbit
  4. rabbit_host = controller
  5. rabbit_password = RABBIT_PASS
复制代码


c.在[DEFAULT] 和 [keystone_authtoken] 部分,配置身份认证访问
  1. [DEFAULT]
  2. ...
  3. auth_strategy = keystone
  4. [keystone_authtoken]
  5. ...
  6. auth_uri = http://controller:5000/v2.0
  7. identity_uri = http://controller:35357
  8. admin_tenant_name = service
  9. admin_user = cinder
  10. admin_password = CINDER_PASS
复制代码

同样这里使用的是默认密码 CINDER_PASS,如果自定义,则需要替换。
注意:
替换掉 auth_host, auth_port, 和 auth_protocol,防止配置被覆盖。

d.在[DEFAULT]部分,配置my_ip 选项
  1. [DEFAULT]
  2. ...
  3. my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
复制代码
替换为下面形式

  1. [DEFAULT]
  2. ...
  3. my_ip = 10.0.0.41
复制代码
2.png


e.在 [DEFAULT] 部分,配置image服务的位置
  1. [DEFAULT]
  2. ...
  3. glance_host = controller
复制代码
记得这里配置hosts,如果之前没有配置,则补上
#############################################
打开文件
  1. sudo nano /etc/hosts
复制代码
添加如下即可
3.png

#######################################################


f.为排除故障,启用verbose logging 在[DEFAULT] 部分
  1. [DEFAULT]
  2. ...
  3. verbose = True
复制代码
############################
贴出配置文件如下
  1. [DEFAULT]
  2. rootwrap_config = /etc/cinder/rootwrap.conf
  3. api_paste_confg = /etc/cinder/api-paste.ini
  4. iscsi_helper = tgtadm
  5. volume_name_template = volume-%s
  6. volume_group = cinder-volumes
  7. verbose = True
  8. auth_strategy = keystone
  9. state_path = /var/lib/cinder
  10. lock_path = /var/lock/cinder
  11. volumes_dir = /var/lib/cinder/volumes
  12. rpc_backend = rabbit
  13. rabbit_host = controller
  14. rabbit_password = RABBIT_PASS
  15. auth_strategy = keystone
  16. my_ip = 10.0.0.41
  17. glance_host = controller
  18. verbose = True
  19. [database]
  20. connection = mysql://cinder:CINDER_DBPASS@controller/cinder
  21. [keystone_authtoken]
  22. auth_uri = http://controller:5000/v2.0
  23. identity_uri = http://controller:35357
  24. admin_tenant_name = service
  25. admin_user = cinder
  26. admin_password = CINDER_PASS
复制代码
#########################################


完成安装

1.重启块存储volume 服务,包括它的依赖
  1. service tgt restart
  2. service cinder-volume restart
复制代码
4.png


2.SQLite 如果存在,则移除
  1. rm -f /var/lib/cinder/cinder.sqlite
复制代码






验证安装

这里描述了怎样验证块存储服务创建volume,注意执行下面命令在控制节点

1.环境变量生效
  1. source admin-openrc.sh
复制代码
内容如下
  1. export OS_TENANT_NAME=admin
  2. export OS_USERNAME=admin
  3. export OS_PASSWORD=ADMIN_PASS
  4. export OS_AUTH_URL=http://controller:35357/v2.0
复制代码


2.列出安装成功的服务组件

  1. cinder service-list
复制代码

5.png


3.生效demo 租户,作为一个非管理员租户执行下面步骤

  1. source demo-openrc.sh
复制代码
内容如下:
  1. export OS_TENANT_NAME=demo
  2. export OS_USERNAME=demo
  3. export OS_PASSWORD=DEMO_PASS
  4. export OS_AUTH_URL=http://controller:5000/v2.0
复制代码


4.创建一个1 GB volume:

  1. cinder create --display-name demo-volume6 1
复制代码
2.png





5.验证volume有效性

  1. cinder list
复制代码

1png.png

由于刚开始没有安装openstack包,所以导致前面创建错误,后来补上,问题得到解决

########################################################
6.出现错误:

问题1:openstack包未安装
  1. cinder list
复制代码
  1. +--------------------------------------+----------+--------------+------+-------------+----------+-------------+
  2. |                  ID                  |  Status  | Display Name | Size | Volume Type | Bootable | Attached to |
  3. +--------------------------------------+----------+--------------+------+-------------+----------+-------------+
  4. | 9941d347-a589-453a-9136-c327659c7a5f | creating | demo-volume1 |  1   |     None    |  false   |             |
  5. +--------------------------------------+----------+--------------+------+-------------+----------+-------------+
复制代码

7.png

查看日志:
  1. 2015-02-16 09:26:13.585 1659 ERROR oslo.messaging._drivers.common [req-0d06d502-d895-4c89-8f47-dde86f696bcc 9695ee1a49a342aa9a78890896b99605 bfb31e69f05b44cd89e1336c09042e2f - - -] ['Traceback (most recent call last):\n', '  File "/usr/lib/python2.7/dist-packages/oslo/messaging/rpc/dispatcher.py", line 133, in _dispatch_and_reply\n    incoming.message))\n', '  File "/usr/lib/python2.7/dist-packages/oslo/messaging/rpc/dispatcher.py", line 176, in _dispatch\n    return self._do_dispatch(endpoint, method, ctxt, args)\n', '  File "/usr/lib/python2.7/dist-packages/oslo/messaging/rpc/dispatcher.py", line 122, in _do_dispatch\n    result = getattr(endpoint, method)(ctxt, **new_args)\n', "TypeError: create_volume() got an unexpected keyword argument 'source_replicaid'\n"]
复制代码

经过查找资料:
https://bugs.launchpad.net/cinder/+bug/1389687
原因为没有安装Ubuntu云 archive keyring 和 库:

解决办法:
  1. apt-get install ubuntu-cloud-keyring
复制代码
  1. echo "deb http://ubuntu-cloud.archive.canonical.com/ubuntu" \
  2.   "trusty-updates/juno main" > /etc/apt/sources.list.d/cloudarchive-juno.list
复制代码

  1. apt-get update && apt-get dist-upgrade
复制代码

问题2:新增加硬盘未生效

在我们安装cinder的过程中:官网地址
在执行到创建LVM 物理卷:

  1. pvcreate /dev/sdb1
复制代码
遇到下面错误

  1. Device /dev/sdb1 not found (or ignored by filtering).
复制代码
这是由于我们只是挂载了硬盘,但是并没有格式化使用。所以下面交给大家怎么使用起来
  1. fdisk /dev/sdb1
  2. #Type in the followings:
  3. n
  4. p
  5. 1
  6. ENTER
  7. ENTER
  8. t
  9. 8e
  10. w
复制代码



对于上面的 /dev/sdb1是如何来的那。这里由于使用的是虚拟机,是通过虚拟机增加的第二块硬盘:如下图:




增加硬盘之后,我们通过

  1. fdisk -l
复制代码
命令,可以查看到



所以我们通过

下面命令,即可完成:
  1. fdisk /dev/sdb1
  2. #Type in the followings:
  3. n
  4. p
  5. 1
  6. ENTER
  7. ENTER
  8. t
  9. 8e
  10. w
复制代码


更多信息参考:
openstack存储基础1:浅谈Linux磁盘存储管理

openstack存储基础2:Linux LVM硬盘管理及LVM扩容







相关内容:

openstack【juno】入门 【准备篇】零:整体介绍

openstack【juno】入门 【准备篇】一: Ubuntu14.04远程连接(ssh安装)

openstack【juno】入门 【准备篇】二::NTP安装

openstack【juno】入门 【准备篇】三:mysql(MariaDB)安装

openstack【juno】入门 【准备篇】四::RabbitMQ 安装

openstack【juno】入门 【keystone篇】五::Keystone部署及介绍

openstack【juno】入门 【keystone篇】六::Keystone使用及遇到问题解决办法

openstack【juno】入门 【keystone篇】七:创建 service entity 和 API endpoint

openstack【juno】入门 【keystone篇】八:新手操作篇(验证操作篇)

openstack【juno】入门 【keystone篇】九:创建openstack客户端环境变量脚本

openstack【juno】入门 【glance 篇】十:glance初步介绍

openstack【juno】入门 【glance 篇】十一:glance安装配置

openstack【juno】入门 【glance 篇】十二:glance安装配置验证及相关操作

openstack【juno】入门 【nova 篇】十三(1):nova简单介绍

openstack【juno】入门 【nova 篇】十三(2):安装配置计算服务

openstack【juno】入门 【网络篇】十四:neutron介绍

openstack【juno】入门 【网络篇】十五:neutron安装部署(控制节点)

openstack【juno】入门 【网络篇】十六:neutron安装部署(网络节点)

openstack【juno】入门 【网络篇】十七:neutron安装部署(计算节点)

openstack【juno】入门 【网络篇】十八:创建实例化网络

openstack【juno】入门 【dashboard篇】十九:添加dashboard

openstack【juno】入门 【cinder篇】二十:cinder介绍及安装配置【控制节点】

openstack【juno】入门 【cinder篇】二十一:安装配置块存储节点(cinder)

openstack【juno】入门 【swift篇】二十二:对象存储安装配置【控制节点】

openstack【juno】入门 【swift篇】二十三:安装配置swift节点

openstack【juno】入门 【swift篇】二十四:创建初始rings

openstack【juno】入门 【swift篇】二十五:验证安装(控制节点)

openstack【juno】入门 【实例篇】二十六:创建实例(neutron)

openstack【juno】入门 【总结篇】二十七:openstack排除故障及常见问题记录

openstack【juno】入门 【总结篇】二十八:keystone及网络总结


已有(19)人评论

跳转到指定楼层
496487028 发表于 2015-4-13 15:20:50
版主你好,可以提供个把swift应用于cinder的方法吗?

点评

siwft和cinder是两个不同组件,有不同的用途  发表于 2015-4-13 15:29
回复

使用道具 举报

百威 发表于 2015-4-17 09:51:45
请教一下,这个是什么问题?
cinder.jpg
回复

使用道具 举报

百威 发表于 2015-4-17 10:14:28
继续做下去就出现问题了。

cinder2.jpg

点评

看看日志  发表于 2015-4-17 10:28
回复

使用道具 举报

百威 发表于 2015-4-17 10:54:09
太长了,还是传个附件上来吧。



cinder-volume.log.zip

2.97 KB, 下载次数: 5

回复

使用道具 举报

百威 发表于 2015-4-17 10:57:59
需要说明一下。我是在vmware中安装,原来在block节点上已安装好了cinder,后来在做object1节点的时候,由于我理解错误,错把swift安装在了block节点上。后来我删掉了原来的block节点,重新新建了block节点,又安装了一次cinder,就出现了上面的问题。
回复

使用道具 举报

百威 发表于 2015-4-17 11:11:32
再补充一下。
cinder_volume服务在block节点启动是成功的。


cinder3.jpg
回复

使用道具 举报

sec 发表于 2015-4-21 10:46:38
百威 发表于 2015-4-17 11:11
再补充一下。
cinder_volume服务在block节点启动是成功的。

你的服务也起来了  你看日志了吗  
回复

使用道具 举报

百威 发表于 2015-4-21 12:58:44
sec 发表于 2015-4-21 10:46
你的服务也起来了  你看日志了吗

日志看不懂,哪位大侠帮忙看看。日志发在5楼。
回复

使用道具 举报

arsenduan 发表于 2015-4-21 13:00:53
百威 发表于 2015-4-21 12:58
日志看不懂,哪位大侠帮忙看看。日志发在5楼。



应该是表没有同步成功
  1. ERROR cinder.openstack.common.threadgroup [-] (OperationalError) no such table: volumes u'SELECT volumes.created_at AS volumes_created_at, volumes.updated_at AS volumes_updated_at, volumes.deleted_at AS volumes_deleted_at, volumes.id AS volumes_id, volumes._name_id AS volumes__name_id, volumes.ec2_id AS
复制代码


回复

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /5 下一条