Nova无法Attach Cinder Volume, Caught error: 'volume'

tokimekiyxp 2013-02-25 05:20:44
在原来的基础上将nova-volume换成了cinder,一切安装好以后,服务均工作正常。通过Dashboard创建Volume能够成功,之后将Volume attach到instance时出现错误,查看日志发现在/var/log/nova/api.log下有如下错误日志:

2013-02-25 15:30:08 INFO nova.api.openstack.wsgi [req-09239b09-97d1-4f5d-a9c3-15f60f33d877 c881ba5369ff40dbad6586b935c5515c 646a1ca8dcfa4ea5b0c7dc2d2d729f66] POST http://10.10.1.162:8774/v1.1/646a1ca8dcfa4ea5b0c7dc2d2d729f66/servers/c4381af1-49e2-43d8-be41-a2ee9c948c05/os-volume_attachments
2013-02-25 15:30:08 AUDIT nova.api.openstack.compute.contrib.volumes [req-09239b09-97d1-4f5d-a9c3-15f60f33d877 c881ba5369ff40dbad6586b935c5515c 646a1ca8dcfa4ea5b0c7dc2d2d729f66] Attach volume 266054db-5d25-4338-9f02-b4702486258d to instance c4381af1-49e2-43d8-be41-a2ee9c948c05 at /dev/vdc
2013-02-25 15:30:08 3704 DEBUG nova.openstack.common.rpc.amqp [-] Making asynchronous call on compute.saturn-11 ... multicall /usr/lib/python2.6/site-packages/nova/openstack/common/rpc/amqp.py:352
2013-02-25 15:30:08 3704 DEBUG nova.openstack.common.rpc.amqp [-] MSG_ID is a9cf3129385a43f5b5f84caac92336ec multicall /usr/lib/python2.6/site-packages/nova/openstack/common/rpc/amqp.py:355
2013-02-25 15:30:08 DEBUG nova.volume.cinder [req-09239b09-97d1-4f5d-a9c3-15f60f33d877 c881ba5369ff40dbad6586b935c5515c 646a1ca8dcfa4ea5b0c7dc2d2d729f66] Cinderclient connection created using URL: http://10.10.1.162:8776/v1646a1ca8dcfa4ea5b0c7dc2d2d729f66 cinderclient /usr/lib/python2.6/site-packages/nova/volume/cinder.py:68
2013-02-25 15:30:08 ERROR nova.api.openstack [req-09239b09-97d1-4f5d-a9c3-15f60f33d877 c881ba5369ff40dbad6586b935c5515c 646a1ca8dcfa4ea5b0c7dc2d2d729f66] Caught error: 'volume'
2013-02-25 15:30:08 3704 TRACE nova.api.openstack Traceback (most recent call last):
2013-02-25 15:30:08 3704 TRACE nova.api.openstack File "/usr/lib/python2.6/site-packages/nova/api/openstack/__init__.py", line 78, in __call__
2013-02-25 15:30:08 3704 TRACE nova.api.openstack return req.get_response(self.application)
2013-02-25 15:30:08 3704 TRACE nova.api.openstack File "/usr/lib/python2.6/site-packages/WebOb-1.0.8-py2.6.egg/webob/request.py", line 1053, in get_response
2013-02-25 15:30:08 3704 TRACE nova.api.openstack application, catch_exc_info=False)
2013-02-25 15:30:08 3704 TRACE nova.api.openstack File "/usr/lib/python2.6/site-packages/WebOb-1.0.8-py2.6.egg/webob/request.py", line 1022, in call_application
2013-02-25 15:30:08 3704 TRACE nova.api.openstack app_iter = application(self.environ, start_response)
2013-02-25 15:30:08 3704 TRACE nova.api.openstack File "/usr/lib/python2.6/site-packages/WebOb-1.0.8-py2.6.egg/webob/dec.py", line 159, in __call__
2013-02-25 15:30:08 3704 TRACE nova.api.openstack return resp(environ, start_response)
2013-02-25 15:30:08 3704 TRACE nova.api.openstack File "/usr/lib/python2.6/site-packages/keystone/middleware/auth_token.py", line 278, in __call__
2013-02-25 15:30:08 3704 TRACE nova.api.openstack return self.app(env, start_response)
2013-02-25 15:30:08 3704 TRACE nova.api.openstack File "/usr/lib/python2.6/site-packages/WebOb-1.0.8-py2.6.egg/webob/dec.py", line 159, in __call__
2013-02-25 15:30:08 3704 TRACE nova.api.openstack return resp(environ, start_response)
2013-02-25 15:30:08 3704 TRACE nova.api.openstack File "/usr/lib/python2.6/site-packages/WebOb-1.0.8-py2.6.egg/webob/dec.py", line 159, in __call__
2013-02-25 15:30:08 3704 TRACE nova.api.openstack return resp(environ, start_response)
2013-02-25 15:30:08 3704 TRACE nova.api.openstack File "/usr/lib/python2.6/site-packages/WebOb-1.0.8-py2.6.egg/webob/dec.py", line 159, in __call__
2013-02-25 15:30:08 3704 TRACE nova.api.openstack return resp(environ, start_response)
2013-02-25 15:30:08 3704 TRACE nova.api.openstack File "/usr/lib/python2.6/site-packages/Routes-1.12.3-py2.6.egg/routes/middleware.py", line 131, in __call__
2013-02-25 15:30:08 3704 TRACE nova.api.openstack response = self.app(environ, start_response)
2013-02-25 15:30:08 3704 TRACE nova.api.openstack File "/usr/lib/python2.6/site-packages/WebOb-1.0.8-py2.6.egg/webob/dec.py", line 159, in __call__
2013-02-25 15:30:08 3704 TRACE nova.api.openstack return resp(environ, start_response)
2013-02-25 15:30:08 3704 TRACE nova.api.openstack File "/usr/lib/python2.6/site-packages/WebOb-1.0.8-py2.6.egg/webob/dec.py", line 147, in __call__
2013-02-25 15:30:08 3704 TRACE nova.api.openstack resp = self.call_func(req, *args, **self.kwargs)
2013-02-25 15:30:08 3704 TRACE nova.api.openstack File "/usr/lib/python2.6/site-packages/WebOb-1.0.8-py2.6.egg/webob/dec.py", line 208, in call_func
2013-02-25 15:30:08 3704 TRACE nova.api.openstack return self.func(req, *args, **kwargs)
2013-02-25 15:30:08 3704 TRACE nova.api.openstack File "/usr/lib/python2.6/site-packages/nova/api/openstack/wsgi.py", line 894, in __call__
2013-02-25 15:30:08 3704 TRACE nova.api.openstack content_type, body, accept)
2013-02-25 15:30:08 3704 TRACE nova.api.openstack File "/usr/lib/python2.6/site-packages/nova/api/openstack/wsgi.py", line 942, in _process_stack
2013-02-25 15:30:08 3704 TRACE nova.api.openstack action_result = self.dispatch(meth, request, action_args)
2013-02-25 15:30:08 3704 TRACE nova.api.openstack File "/usr/lib/python2.6/site-packages/nova/api/openstack/wsgi.py", line 1030, in dispatch
2013-02-25 15:30:08 3704 TRACE nova.api.openstack return method(req=request, **action_args)
2013-02-25 15:30:08 3704 TRACE nova.api.openstack File "/usr/lib/python2.6/site-packages/nova/api/openstack/compute/contrib/volumes.py", line 397, in create
2013-02-25 15:30:08 3704 TRACE nova.api.openstack volume_id, device)
2013-02-25 15:30:08 3704 TRACE nova.api.openstack File "/usr/lib/python2.6/site-packages/nova/compute/api.py", line 115, in wrapped
2013-02-25 15:30:08 3704 TRACE nova.api.openstack return func(self, context, target, *args, **kwargs)
2013-02-25 15:30:08 3704 TRACE nova.api.openstack File "/usr/lib/python2.6/site-packages/nova/compute/api.py", line 105, in inner
2013-02-25 15:30:08 3704 TRACE nova.api.openstack return function(self, context, instance, *args, **kwargs)
2013-02-25 15:30:08 3704 TRACE nova.api.openstack File "/usr/lib/python2.6/site-packages/nova/compute/api.py", line 1907, in attach_volume
2013-02-25 15:30:08 3704 TRACE nova.api.openstack context, instance['uuid'], device)
2013-02-25 15:30:08 3704 TRACE nova.api.openstack File "/usr/lib64/python2.6/contextlib.py", line 23, in __exit__
2013-02-25 15:30:08 3704 TRACE nova.api.openstack self.gen.next()
2013-02-25 15:30:08 3704 TRACE nova.api.openstack File "/usr/lib/python2.6/site-packages/nova/compute/api.py", line 1899, in attach_volume
2013-02-25 15:30:08 3704 TRACE nova.api.openstack volume = self.volume_api.get(context, volume_id)
2013-02-25 15:30:08 3704 TRACE nova.api.openstack File "/usr/lib/python2.6/site-packages/nova/volume/cinder.py", line 144, in get
2013-02-25 15:30:08 3704 TRACE nova.api.openstack item = cinderclient(context).volumes.get(volume_id)
2013-02-25 15:30:08 3704 TRACE nova.api.openstack File "/usr/lib/python2.6/site-packages/cinderclient/v1/volumes.py", line 147, in get
2013-02-25 15:30:08 3704 TRACE nova.api.openstack return self._get("/volumes/%s" % volume_id, "volume")
2013-02-25 15:30:08 3704 TRACE nova.api.openstack File "/usr/lib/python2.6/site-packages/cinderclient/base.py", line 143, in _get
2013-02-25 15:30:08 3704 TRACE nova.api.openstack return self.resource_class(self, body[response_key], loaded=True)
2013-02-25 15:30:08 3704 TRACE nova.api.openstack KeyError: 'volume'
2013-02-25 15:30:08 3704 TRACE nova.api.openstack
2013-02-25 15:30:08 INFO nova.api.openstack [req-09239b09-97d1-4f5d-a9c3-15f60f33d877 c881ba5369ff40dbad6586b935c5515c 646a1ca8dcfa4ea5b0c7dc2d2d729f66] http://10.10.1.162:8774/v1.1/646a1ca8dcfa4ea5b0c7dc2d2d729f66/servers/c4381af1-49e2-43d8-be41-a2ee9c948c05/os-volume_attachments returned with HTTP 500
2013-02-25 15:30:08 INFO nova.osapi_compute.wsgi.server [req-09239b09-97d1-4f5d-a9c3-15f60f33d877 c881ba5369ff40dbad6586b935c5515c 646a1ca8dcfa4ea5b0c7dc2d2d729f66] 10.10.1.162 - - [25/Feb/2013 15:30:08] "POST /v1.1/646a1ca8dcfa4ea5b0c7dc2d2d729f66/servers/c4381af1-49e2-43d8-be41-a2ee9c948c05/os-volume_attachments HTTP/1.1" 500 335 0.227375


查了很久,不知道这是什么原因引起的,请问有谁遇到过没有?
我的cinder配置如下:
cinder.conf
[DEFAULT]
logdir = /var/log/cinder
state_path = /var/lib/cinder
lock_path = /var/lib/cinder/tmp
volumes_dir = /etc/cinder/volumes
iscsi_helper = tgtadm
sql_connection = mysql://root:openstack@10.10.1.162/cinder
#rpc_backend = cinder.openstack.common.rpc.impl_qpid
rpc_backend = cinder.openstack.common.rpc.impl_kombu
rootwrap_config = /etc/cinder/rootwrap.conf

# RABBITMQ
rabbit_host=10.10.1.162
rabbit_port=5672
rabbit_userid=guest
rabbit_password=openstack

auth_strategy = keystone
volume_group = cinder-volumes

[keystone_authtoken]
admin_tenant_name = service
admin_user = cinder
admin_password = openstack
auth_host = 10.10.1.162
auth_port = 35357
auth_protocol = http
signing_dirname = /tmp/keystone-signing-cinder


nova的配置就暂时不贴了。如果有朋友遇到过问题,需要知道配置,请回帖!
热切盼望有人能帮忙解答!!!
...全文
1317 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xichaofan1 2015-04-28
  • 打赏
  • 举报
回复
楼主我也是这个问题哦,请问你最后解决了吗?
tokimekiyxp 2013-03-05
  • 打赏
  • 举报
回复
引用 5 楼 KitSdk 的回复:
0、首先用fdisk -l 看看你创建的lv 是否真的存在 1、检查tgt服务是否正常 2、在/etc/tgt/tgrgets.conf 中有类似:include /etc/nova/volumes/*或者 include /etc/cinder/volumes/* 的配置条目。 3、在 /etc/nova/volumes/ 或者 /etc/cinder/volu……
你说的东西都是正确配置好了的。我已经检查过了。 我也怀疑是不是nova的问题,但是现在苦于找不到原因。
KitSdk 2013-03-04
  • 打赏
  • 举报
回复
0、首先用fdisk -l 看看你创建的lv 是否真的存在 1、检查tgt服务是否正常 2、在/etc/tgt/tgrgets.conf 中有类似:include /etc/nova/volumes/*或者 include /etc/cinder/volumes/* 的配置条目。 3、在 /etc/nova/volumes/ 或者 /etc/cinder/volumes/ 是否生成了你所创建lv的相关target配置文件 5、如果以上都正常,可以在windows系统安装iSCSI Initiator 来挂接测试你的tgt服务你创建的lv。具体操作步骤不在详述。 如果以上都正常。。。。那么就要看是否nova的问题了。。。。。。!!!
tokimekiyxp 2013-03-04
  • 打赏
  • 举报
回复
引用 2 楼 KitSdk 的回复:
还要主要NOVA的配置文件与cinder相关配置如下: #volume_driver = nova.volume.driver.ISCSIDriver #启用cinder volume_api_class = nova.volume.cinder.API enabled_apis=ec2,osapi_compute,metadata……
这个都是有的。
linuxca 2013-03-02
  • 打赏
  • 举报
回复
谢谢分享
KitSdk 2013-03-01
  • 打赏
  • 举报
回复
还要主要NOVA的配置文件与cinder相关配置如下: #volume_driver = nova.volume.driver.ISCSIDriver #启用cinder volume_api_class = nova.volume.cinder.API enabled_apis=ec2,osapi_compute,metadata #volumes_dir = /etc/nova/volumes #volume_group = vg_linux #volume_name_template = volume-%s #iscsi_helper = tgtadm
tokimekiyxp 2013-02-25
  • 打赏
  • 举报
回复
cinder/api-paste.ini
#############
# Openstack #
#############

[composite:osapi_volume]
use = call:cinder.api.openstack.urlmap:urlmap_factory
/: osvolumeversions
/v1: openstack_volume_api_v1

[composite:openstack_volume_api_v1]
use = call:cinder.api.auth:pipeline_factory
noauth = faultwrap sizelimit noauth osapi_volume_app_v1
keystone = faultwrap sizelimit authtoken keystonecontext osapi_volume_app_v1
keystone_nolimit = faultwrap sizelimit authtoken keystonecontext osapi_volume_app_v1

[filter:faultwrap]
paste.filter_factory = cinder.api.openstack:FaultWrapper.factory

[filter:noauth]
paste.filter_factory = cinder.api.openstack.auth:NoAuthMiddleware.factory

[filter:sizelimit]
paste.filter_factory = cinder.api.sizelimit:RequestBodySizeLimiter.factory

[app:osapi_volume_app_v1]
paste.app_factory = cinder.api.openstack.volume:APIRouter.factory

[pipeline:osvolumeversions]
pipeline = faultwrap osvolumeversionapp

[app:osvolumeversionapp]
paste.app_factory = cinder.api.openstack.volume.versions:Versions.factory

##########
# Shared #
##########

[filter:keystonecontext]
paste.filter_factory = cinder.api.auth:CinderKeystoneContext.factory

[filter:authtoken]
paste.filter_factory = keystone.middleware.auth_token:filter_factory
service_protocol = http
service_host = 10.10.1.162
service_port = 5000
auth_host = 10.10.1.162
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = cinder
admin_password = openstack
Openstack 从 Folsom 开始使用 Cinder 替换原来的Nova-Volume服务,为 Openstack 云平台提供块存储服务。 Cinder架构                                                  /- ( LDAP )                              [ Auth Manager ] ---                                     |            \- ( DB )                                     |                                     |                    cinderclient     |                   /             \   | [ Web Dashboard ]-               -[ api ] --  -- [ scheduler ] -- [ volume ] -- ( iSCSI )                   \             /   |                    novaclient       |                                     |                                     |                                     |                                   Cinder服务 API service:负责接受和处理Rest请求,并将请求放入RabbitMQ队列。Cinder提供Volume API V2, 我没有找到格式很好的在线文档,大体可以参见Openstack block storage API V1 Scheduler service: 处理任务队列的任务,并根据预定策略选择合适的Volume Service节点来执行任务。目前版本的cinder仅仅提供了一个Simple Scheduler, 该调度器选择卷数量最少的一个活跃节点来创建卷。 Volume service: 该服务运行在存储节点上,管理存储空间。每个存储节点都有一个Volume Service,若干个这样的存储节点联合起来可以构成一个存储资源池。为了支持不同类型和型号的存储,当前版本的Cinder为Volume Service如下drivers。当然在Cinder的blueprints当中还有一些其它的drivers,以后的版本可能会添加进来。 本地存储:LVM, Sheepdog 网络存储: NFS, RBD (RADOS) IBM: XIV, Storwize V7000, SVC storage systems Netapp: NFS存储;ISCSI存储则需要OnCommand 5.0和Data ONTAP 7-mode storage systems with installed iSCSI licenses EMC: VNX, VMAX/VMAXe Solidfire: Solidfire cluster Cinder服务的部署 上述的Cinder服务都可以独立部署,cinder同时也提供了一些典型的部署命令: cinder-all: 用于部署all-in-one节点,即API, Scheduler, Volume服务部署在该节点上。 cinder-scheduler: 用于将scheduler服务部署在该节点上。 cinder-api: 用于将api服务部署在该节点上。 cinder-volume: 用于将volume服务部署在该节点上。 Cinder如何支持典型存储 从目前的实现来看,Cinder对本地存储和NAS的支持比较不错,可以提供完整的Cinder API V2支持,而对于其它类型的存储设备,Cinder的支持会或多或少的受到限制,下面是Rackspace对于Private Cloud存储给出的典型配置: 1. 本地存储 对于本地存储,cinder-volume可以使用lvm驱动,该驱动当前的实现需要在主机上事先用lvm命令创建一个cinder- volumes的vg, 当该主机接受到创建卷请求的时候,cinder-volume在该vg上创建一个LV, 并且用openiscsi将这个卷当作一个iscsi tgt给export. 当然还可以将若干主机的本地存储用sheepdog虚拟成一个共享存储,然后使用sheepdog驱动。 2. EMC 3. Netapp Cinder在IT环境中的主要问题 目前版本的Cinder在IT私有云场景中,从硬件兼容性,高性能,高可靠性,水平扩展能力,应用兼容性等维度来看,Cinder还存在不少问题需要解决。Cinder依然任重道远。 1. 对共享存储的支持有限 不支持FC SAN; 支持的存储设备有限,即使对于EMC, IBM这样的的主流存储厂商,也只能支持寥寥几款存储; 2. 对存储设备的使用不够高效 Cinder卷管理的基本原则是在共享存储上创建一个lun, 然后把这个lun作为一个block device给attach到一个虚拟机上。但是对于当前主流的存储,能够支持的最大lun数量非常有限,比如我们经常使用的Huawei S3900, 最多能支持288个lun,如果一个VM平均3个卷,不管这些VM是offline还是online, 这个存储最多只能支持90个VM。 3. 存储管理带来的性能损耗 比如Cinder Volume的LVM驱动使用iSCSI export一个逻辑卷,从管理的角度来看是解决了存储共享的问题,从而能够支持比如迁移这样的功能,但是这样的设计势必会导致较大的性能损耗,和直接访 问相比,通常iSCSI export会增加30%以上的IO延迟。 4. 数据如何迁移 企业IT环境中大量的数据,一般都是存放在SAN甚至是磁带设备上的,这些数据如何无损,安全的接入到Cloud呢?VMware因此提供了RDM, KVM和XEN也支持PVSCSI, 但是Cinder没有考虑这个。 5. Cinder的调度器不完善 Cinder提供的simple scheduler基本没有实用价值,  cinder-scheduler仅能在初始放置时保证系统负载均衡,但是如果是发生了运行时负载严重不平衡,cinder就没法处理了。 6. Cinder服务的可靠性问题 cinder-api和cinder-scheduler是系统的单点,cinder并没有提供这两个服务提供任何HA和load balance设计,所以整个系统可靠性还是扩展性会比较受限制。 cinder-db如果发生不可恢复的故障,能够保证用户数据能恢复吗? 介绍内容出处:http://blog.csdn.net/luo_brian/article/details/8592692 标签:OpenStack

998

社区成员

发帖
与我相关
我的任务
社区描述
OpenStack
社区管理员
  • OpenStack社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧