您的位置:首页 > 运维架构

OpenStack Grizzly实例重启之后cinder-volume服务无法启动的解决办法

2013-12-19 15:30 711 查看
问题描述:Cinder组件装在Controller节点,节点发生故障重启后,发现挂载了volumn的实例无法启动,并且无法创建及挂载定的volume,查看cinder-volume服务,处于stop状态,执行启动命令发现无法启动,错误日志如下:

2013-12-19 14:44:33     INFO [cinder.service] Starting 1 workers
2013-12-19 14:44:33     INFO [cinder.service] Started child 2086
2013-12-19 14:44:33    AUDIT [cinder.service] Starting cinder-volume node (version 2013.1.3)
2013-12-19 14:44:33    ERROR [cinder.service] Unhandled exception
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/cinder/service.py", line 227, in _start_child
self._child_process(wrap.server)
File "/usr/lib/python2.7/dist-packages/cinder/service.py", line 204, in _child_process
launcher.run_server(server)
File "/usr/lib/python2.7/dist-packages/cinder/service.py", line 95, in run_server
server.start()
File "/usr/lib/python2.7/dist-packages/cinder/service.py", line 355, in start
self.manager.init_host()
File "/usr/lib/python2.7/dist-packages/cinder/volume/manager.py", line 149, in init_host
self.driver.ensure_export(ctxt, volume)
File "/usr/lib/python2.7/dist-packages/cinder/volume/drivers/lvm.py", line 400, in ensure_export
old_name=old_name)
File "/usr/lib/python2.7/dist-packages/cinder/volume/iscsi.py", line 225, in create_iscsi_target
self._new_target(name, tid, **kwargs)
File "/usr/lib/python2.7/dist-packages/cinder/volume/iscsi.py", line 284, in _new_target
**kwargs)
File "/usr/lib/python2.7/dist-packages/cinder/volume/iscsi.py", line 73, in _run
self._execute(self._cmd, *args, run_as_root=True, **kwargs)
File "/usr/lib/python2.7/dist-packages/cinder/utils.py", line 145, in execute
'to utils.execute: %r') % kwargs)
Error: Got unknown keyword args to utils.execute: {'old_name': None}
错误分析:这是OpenStack Grrizly版本的一个BUG,造成cinder-volumn服务在节点重启后无法正常启动,最新版本已经修订(本环环境的安装时间晚于bug提交时间,居然还是旧的代码,很是奇怪)https://review.openstack.org/#/c/47721/,自己通过修改源代码进行修改,修改如下:

1、打开文件/usr/lib/python2.7/dist-packages/cinder/volume/iscsi.py

2、在224行下边加一行代码,修改如下:
def create_iscsi_target(self, name, tid, lun, path,
chap_auth=None, **kwargs):
kwargs.pop('old_name', None)
self._new_target(name, tid, **kwargs)
self._new_logicalunit(tid, lun, path, **kwargs)

注:kwargs.pop('old_name', None)为新增加的代码

3、重启cinder-volumn服务

service cinder-volume restart
服务正常启动,问题解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: