cinder 基于镜像创建volume, 竟然下载镜像,问题排查

批量创建50台主机,发现特别慢,查看cinder-volume日志,发现有大量的 下载镜像的过程。这就很奇怪了,为什么会下载镜像


于是查看代码,看代码一切正常,除非image_location为空,才有可能会下载镜像。

于是继续debug,发现果然没有image_location了,  为什么会出现这种情况?   使用glance 命令在次查看,是有 location的啊。


于是在继续debug,发现一个 def get_location的方法

    def get_location(self, context, image_id):
        """Get backend storage location url.

        Returns a tuple containing the direct url and locations representing
        the backend storage location, or (None, None) if these attributes are
        not shown by Glance.
        """
        if CONF.glance_api_version == 1:                         在glance_api_version == 1的时候才会直接返回 None
            # image location not available in v1
            return (None, None)
        try:
            # direct_url is returned by v2 api
            client = GlanceClientWrapper(version=2)
            image_meta = client.call(context, 'get', image_id)
        except Exception:
            _reraise_translated_image_exception(image_id)

        if not self._is_image_available(context, image_meta):
            raise exception.ImageNotFound(image_id=image_id)

        # some glance stores like nfs only meta data
        # is stored and returned as locations.
        # so composite of two needs to be returned.
        return (getattr(image_meta, 'direct_url', None),
                getattr(image_meta, 'locations', None))


于是马上查看  /etc/cinder/cinder.conf 配置文件,搜索 glance_api_version 发现,是等于 2 的啊,于是查看代码,发现10.0.4版本的代码glance_api_version默认是1,这就坑了。

但是我配置文件里设置了等于2了啊,这就郁闷了,难道是/usr/share/cinder 起作用?  

于是到处搜索 glance_api_version  ,终于在代码里找到了,10.0.4 版本glance_api_version 是1,可是我配置文件里写了2啊,于是写在ceph的块里了,在[default]下面也要写。


于是在[default] 下加上    glance_api_version = 2,   完全解决。还顺便看了下整个cinder创建的流程, taskflow,  ceph删除快照和查看快照等。  解决问题就是一个很好的学习过程吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值