问题导读
1.如何让Linux新增硬盘生效被openstak cinder使用?
2.对于任何一个新增的openstack节点,如果不安装openstack包,是否可以?
3.如何验证创建的volume是否有效?
接上篇:openstack【juno】入门 【cinder篇】二十:cinder介绍及安装配置【控制节点】
此为新增节点
准备
这一部分描述怎么样安装配置cinder,为了简单起见,这个配置引用了空的本地存储设备 /dev/sdb的存储节点。它包含一个分区表和一个分区/dev/sdb1 暂满整个设备。这个规定使用LVM驱动的逻辑卷。通过 iSCSI提供给实例。按照下面说明,做一些改动。
安装openstack包
apt-get install ubuntu-cloud-keyring 复制代码
echo "deb http://ubuntu-cloud.archive.canonical.com/ubuntu" \
"trusty-updates/juno main" > /etc/apt/sources.list.d/cloudarchive-juno.list 复制代码
更新源
apt-get update && apt-get dist-upgrade 复制代码
###################################
1.配置管理网络网卡
IP address: 10.0.0.41
sudo nano /etc/network/interfaces 复制代码
这里配置如下:
auto eth0
iface eth0 inet static
address 10.0.0.41
netmask 255.255.255.0
gateway 10.0.0.2
dns-nameservers 8.8.8.8 复制代码
2.修改hosts为block
复制代码
修改如下:
127.0.0.1 localhost
#127.0.1.1 ubuntu
10.0.0.41 block 复制代码
3.修改hostname
复制代码
内容:
复制代码
4.重启
修改完毕,重启
复制代码
5.安装NTP
复制代码
修改配置文件
复制代码
添加如下内容:
复制代码
(如果没有配置host,则直接写ip地址,10.0.0.11 )
其他server注释掉
删除ntp.conf.dhcp
为防止ntp.conf.dhcp文件存在,执行下面命令
rm /var/lib/ntp/ntp.conf.dhcp 复制代码
重启NTP
复制代码
查看
复制代码
6.安装LVM 包
创建物理卷/dev/sdb1
复制代码
这里如果遇到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
vgcreate cinder-volumes /dev/sdb1 复制代码
存储节点服务在卷组里创建逻辑卷
8.lvm扫描修改
只有实例才能访问块存储卷,底层操作系统管理关于卷的管理设备,默认LVM 卷扫描工具会为块存储扫描 /dev目录。如果租户使用lvm,扫描工具会检测这些卷和缓存他们,这会造成各种各样的问题,必须重新配置lvm扫描设备。
编辑 /etc/lvm/lvm.conf文件完成下面内容
sudo nano /etc/lvm/lvm.conf 复制代码
a.在devices 部分,添加一个筛选器接受/dev/sdb设备并拒绝所有其他设备:
devices {
...
filter = [ "a/sdb/", "r/.*/"] 复制代码
说明:
array数组里包含可以访问和拒绝选项,里面使用正则表达式来表示。这个array数组,必须以 r/.*/结束拒绝其他设备。你可以使用 vgs -vvvv命令,测试过滤器。
提示:
如果你的存储节点底层操作系统使用LVM,也必须添加相关的设备到过滤器。例如:如果操作系统包含 /dev/sda 设备,
filter = [ "a/sda/", "a/sdb/", "r/.*/"] 复制代码
类似如下:
如果你的计算节点底层操作系统使用LVM,你必须修改 /etc/lvm/lvm.conf文件,在这些底层操作系统磁盘的节点上,例如操作系统包含/dev/sda
filter = [ "a/sda/", "r/.*/"] 复制代码
安装配置块存储卷组件
1.安装
apt-get install cinder-volume python-mysqldb -y 复制代码
2.编辑文件 /etc/cinder/cinder.conf完成下面内容
sudo nano /etc/cinder/cinder.conf 复制代码
a.在[database]部分,配置数据库访问
[database]
...
connection = mysql://cinder:CINDER_DBPASS@controller/cinder 复制代码
密码需要替换成自己的密码,这里使用的是默认。
b.在 [DEFAULT]部分,配置RabbitMQ消息代理
[DEFAULT]
...
rpc_backend = rabbit
rabbit_host = controller
rabbit_password = RABBIT_PASS 复制代码
c.在[DEFAULT] 和 [keystone_authtoken] 部分,配置身份认证访问
[DEFAULT]
...
auth_strategy = keystone
[keystone_authtoken]
...
auth_uri = http://controller:5000/v2.0
identity_uri = http://controller:35357
admin_tenant_name = service
admin_user = cinder
admin_password = CINDER_PASS 复制代码
同样这里使用的是默认密码 CINDER_PASS,如果自定义,则需要替换。
注意:
替换掉 auth_host, auth_port, 和 auth_protocol,防止配置被覆盖。
d.在[DEFAULT]部分,配置my_ip 选项
[DEFAULT]
...
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS 复制代码
替换为下面形式
[DEFAULT]
...
my_ip = 10.0.0.41 复制代码
e.在 [DEFAULT] 部分,配置image服务的位置
[DEFAULT]
...
glance_host = controller 复制代码
记得这里配置hosts,如果之前没有配置,则补上
#############################################
打开文件
复制代码
添加如下即可
#######################################################
f.为排除故障,启用verbose logging 在[DEFAULT] 部分
[DEFAULT]
...
verbose = True 复制代码
############################
贴出配置文件如下
[DEFAULT]
rootwrap_config = /etc/cinder/rootwrap.conf
api_paste_confg = /etc/cinder/api-paste.ini
iscsi_helper = tgtadm
volume_name_template = volume-%s
volume_group = cinder-volumes
verbose = True
auth_strategy = keystone
state_path = /var/lib/cinder
lock_path = /var/lock/cinder
volumes_dir = /var/lib/cinder/volumes
rpc_backend = rabbit
rabbit_host = controller
rabbit_password = RABBIT_PASS
auth_strategy = keystone
my_ip = 10.0.0.41
glance_host = controller
verbose = True
[database]
connection = mysql://cinder:CINDER_DBPASS@controller/cinder
[keystone_authtoken]
auth_uri = http://controller:5000/v2.0
identity_uri = http://controller:35357
admin_tenant_name = service
admin_user = cinder
admin_password = CINDER_PASS 复制代码
#########################################
完成安装
1.重启块存储volume 服务,包括它的依赖
service tgt restart
service cinder-volume restart 复制代码
2.SQLite 如果存在,则移除
rm -f /var/lib/cinder/cinder.sqlite 复制代码
验证安装
这里描述了怎样验证块存储服务创建volume,注意执行下面命令在控制节点
1.环境变量生效
复制代码
内容如下
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_AUTH_URL=http://controller:35357/v2.0 复制代码
2.列出安装成功的服务组件
复制代码
3.生效demo 租户,作为一个非管理员租户执行下面步骤
复制代码
内容如下:
export OS_TENANT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=DEMO_PASS
export OS_AUTH_URL=http://controller:5000/v2.0 复制代码
4.创建一个1 GB volume:
cinder create --display-name demo-volume6 1 复制代码
5.验证volume有效性
复制代码
由于刚开始没有安装openstack包,所以导致前面创建错误,后来补上,问题得到解决
########################################################
6.出现错误:
问题1:openstack包未安装
复制代码
+--------------------------------------+----------+--------------+------+-------------+----------+-------------+
| ID | Status | Display Name | Size | Volume Type | Bootable | Attached to |
+--------------------------------------+----------+--------------+------+-------------+----------+-------------+
| 9941d347-a589-453a-9136-c327659c7a5f | creating | demo-volume1 | 1 | None | false | |
+--------------------------------------+----------+--------------+------+-------------+----------+-------------+ 复制代码
查看日志: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 和 库:
解决办法:
apt-get install ubuntu-cloud-keyring 复制代码
echo "deb http://ubuntu-cloud.archive.canonical.com/ubuntu" \
"trusty-updates/juno main" > /etc/apt/sources.list.d/cloudarchive-juno.list 复制代码
apt-get update && apt-get dist-upgrade 复制代码
问题2:新增加硬盘未生效
在我们安装cinder的过程中:官网地址
在执行到创建LVM 物理卷:
复制代码
遇到下面错误
Device /dev/sdb1 not found (or ignored by filtering). 复制代码
这是由于我们只是挂载了硬盘,但是并没有格式化使用。所以下面交给大家怎么使用起来
fdisk /dev/sdb1
#Type in the followings:
n
p
1
ENTER
ENTER
t
8e
w 复制代码
对于上面的 /dev/sdb1是如何来的那。这里由于使用的是虚拟机,是通过虚拟机增加的第二块硬盘:如下图:
增加硬盘之后,我们通过
复制代码
命令,可以查看到
所以我们通过
下面命令,即可完成:
fdisk /dev/sdb1
#Type in the followings:
n
p
1
ENTER
ENTER
t
8e
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及网络总结