惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Secure Thoughts
Security Latest
Security Latest
Simon Willison's Weblog
Simon Willison's Weblog
O
OpenAI News
GbyAI
GbyAI
L
LINUX DO - 最新话题
A
Arctic Wolf
T
Tor Project blog
G
GRAHAM CLULEY
I
InfoQ
博客园_首页
IT之家
IT之家
The Register - Security
The Register - Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Proofpoint News Feed
The GitHub Blog
The GitHub Blog
Blog — PlanetScale
Blog — PlanetScale
N
Netflix TechBlog - Medium
K
Kaspersky official blog
博客园 - 三生石上(FineUI控件)
S
SegmentFault 最新的问题
U
Unit 42
PCI Perspectives
PCI Perspectives
量子位
P
Palo Alto Networks Blog
S
Securelist
T
Troy Hunt's Blog
博客园 - 【当耐特】
Recorded Future
Recorded Future
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Security Affairs
Engineering at Meta
Engineering at Meta
T
The Blog of Author Tim Ferriss
博客园 - 聂微东
罗磊的独立博客
N
News and Events Feed by Topic
人人都是产品经理
人人都是产品经理
B
Blog RSS Feed
NISL@THU
NISL@THU
C
Cisco Blogs
T
Threatpost
有赞技术团队
有赞技术团队
Forbes - Security
Forbes - Security
Hugging Face - Blog
Hugging Face - Blog
Last Week in AI
Last Week in AI
T
The Exploit Database - CXSecurity.com
Cloudbric
Cloudbric
Cyberwarzone
Cyberwarzone
Google DeepMind News
Google DeepMind News
C
Cyber Attacks, Cyber Crime and Cyber Security

OpenStack

现在还有人在用 openstack 吗 - V2EX 请教! openstack Train 版本 偶尔启动 windows server 2019 系列,会卡在启动界面,硬重启几次偶尔会启动成功,但失败次数较多。 - V2EX 关于 openstack 组件的流量走向图查询的问题 - V2EX OpenStack Neutron 的开发者们,他们写这么绕的逻辑自己不晕么? - V2EX 想用 openstack 做虚拟化,哪个版本相对比较稳定点? - V2EX 一文读懂 StarlingX - V2EX 找一个熟悉 openstack 的做有偿技术顾问 - V2EX OpenStack Swift 复制问题 - V2EX centos7 两行命令快速部署 ceph 多节点 (devstack 挂服务) - V2EX Centos Openstack Liberty 单网卡配置 - V2EX OpenStack packstack 安装的时候报错 - V2EX 有人了解 openstack 的 taas 服务么 - V2EX 基于 Kubernetes 和 OpenStack 的开源项目在物联网的应用 - V2EX devstack 安装 疑惑 - V2EX 求助关于 openstack 开发一个资源自助系统的思路 - V2EX 国内的新兴云服务是不是都是以 openstack 为基础的云平台? - V2EX Red Hat OpenStack 官方培训笔记 - V2EX 推荐简单点的虚拟机网页管理的开源程序 - V2EX 做 openstack 二次开发有相关的技术文章邮件订阅吗? - V2EX OpenStack 里面 Windows 虚拟机无法上网 - V2EX ZStack: CloudStack 核心人员推出的新开源 IaaS 项目 - V2EX OpenStack 和 SaaS 有什么关系么? - V2EX opensatcke 下 selinux 的文件配置问题 - V2EX 试了一下 RDO,请教下当实例起来后,分配到私有 ip,默认是 10.0.0.x,这个时候宿主机能 ping 通这个地址吗? - V2EX 大家有谁成功部署过 OpenContrail 么? - V2EX 这句英文应该怎么理解? - V2EX openstack 可以把多个物理机变成一个虚拟机? - V2EX OpenStack 安装 keystone,启动服务失败 - V2EX [轻喷] OpenStack 的愿景 - V2EX Pre-Built OpenStack Images - V2EX openstack-debian-images - V2EX 现在网上有没有那种比较靠谱可以直接给 glance 导入的 OpenStack Linux 系统模板库? - V2EX 关于公司内部云的小调查 - V2EX Rally - a Benchmark-as-a-Service project for OpenStack - V2EX Ironic - V2EX OpenStack中,windows虚拟机如何通过串口输出启动信息等到console.log? - V2EX OpenStack集群配置计算器 - V2EX 通过 Puppet 安装 OpenStack DevStack in 1 Minute - V2EX C2 Pandora Trove - V2EX OpenStack 2013.1.2 Released - V2EX Moniker - V2EX UnitedStack is hiring - V2EX Red Hat 推出的 OpenStack 发行版 - V2EX OpenStack Summit 2013 的视频直播 OpenStack Operations Guide OpenStack 2012.2.3 Released - V2EX
openstack rocky 版本 多后端存储支持 保存镜像失败 - V2EX
firejoke · 2018-12-24 · via OpenStack

官方文档Multi Store Support

官方说在 rocky 版本是作为实验功能引入,

参考后的配置(/etc/glance/glance-api.conf)

[DEFAULT]
...
enabled_backends = reliable:file, fast:rbd
...

[glance_store]
default_backend = reliable

[reliable]
filesystem_store_datadir = /opt/stack/data/glance/images/
store_description = "Reliable filesystem backend"

[fast]
store_description = "Fast rbd backend"
rbd_store_pool = images
rbd_store_user = glance
rbd_store_ceph_conf = /etc/ceph/ceph.conf
rbd_store_chunk_size = 8
rados_connect_timeout = 0

[os_staging]
filesystem_store_datadir = /opt/stack/data/glance/os_staging/
store_description = "Filesystem store for staging purpose"

源码内判断后端存储位置的代码(glance/glance/api/v2/image_data.py class ImageDataController)

...
...
    @utils.mutating
    def upload(self, req, image_id, data, size):
        backend = None
        if CONF.enabled_backends:
            backend = req.headers.get('x-image-meta-store',
                                      CONF.glance_store.default_backend)

            try:
                LOG.debug(" = = = = = = backend: %s = = = = = = " % backend)
                glance_store.get_store_from_store_identifier(backend)
                LOG.debug("glance_store.backend %s" % glance_store.backend)
            except glance_store.UnknownScheme as exc:
                raise webob.exc.HTTPBadRequest(explanation=exc.msg,
                                               request=req,
                                               content_type='text/plain')

        image_repo = self.gateway.get_repo(req.context)
        image = None
        refresher = None
        cxt = req.context
        try:
            self.policy.enforce(cxt, 'upload_image', {})
            image = image_repo.get(image_id)
            image.status = 'saving'
            try:
                if CONF.data_api == 'glance.db.registry.api':
                    # create a trust if backend is registry
                    try:
                        # request user plugin for current token
                        user_plugin = req.environ.get('keystone.token_auth')
                        roles = []
                        # use roles from request environment because they
                        # are not transformed to lower-case unlike cxt.roles
                        for role_info in req.environ.get(
                                'keystone.token_info')['token']['roles']:
                            roles.append(role_info['name'])
                        refresher = trust_auth.TokenRefresher(user_plugin,
                                                              cxt.tenant,
                                                              roles)
                    except Exception as e:
                        LOG.info(_LI("Unable to create trust: %s "
                                     "Use the existing user token."),
                                 encodeutils.exception_to_unicode(e))

                image_repo.save(image, from_state='queued')
                image.set_data(data, size, backend=backend)

                try:
                    image_repo.save(image, from_state='saving')
                except exception.NotAuthenticated:
                    if refresher is not None:
                        # request a new token to update an image in database
                        cxt.auth_token = refresher.refresh_token()
                        image_repo = self.gateway.get_repo(req.context)
                        image_repo.save(image, from_state='saving')
                    else:
                        raise

                try:
                    # release resources required for re-auth
                    if refresher is not None:
                        refresher.release_resources()
                except Exception as e:
                    LOG.info(_LI("Unable to delete trust %(trust)s: %(msg)s"),
                             {"trust": refresher.trust_id,
                              "msg": encodeutils.exception_to_unicode(e)})
...
...

目前请求头并没有 x-image-meta-store 属性,直接按默认的 reliable 后端配置来

相关日志:

12 月 24 15:59:25 controller [email protected][6524]: DEBUG glance.api.v2.image_data [None req-081110c4-8d29-4567-a4fb-bbbc7313efbf alt_demo admin]  = = = = = = backend: reliable = = = = = =  {{(pid=6527) upload /opt/stack/glance/glance/api/v2/image_data.py:127}}
12 月 24 15:59:25 controller [email protected][6524]: DEBUG glance.api.v2.image_data [None req-081110c4-8d29-4567-a4fb-bbbc7313efbf alt_demo admin] glance_store.backend <module 'glance_store.backend' from '/usr/lib/python2.7/site-packages/glance_store/backend.pyc'> {{(pid=6527) upload /opt/stack/glance/glance/api/v2/image_data.py:129}}
......
12 月 24 15:59:26 controller [email protected][6524]: DEBUG glance_store._drivers.filesystem [None req-081110c4-8d29-4567-a4fb-bbbc7313efbf alt_demo admin] Wrote 0 bytes to /opt/stack/data/glance/images/9da337be-bb04-43af-ac1d-b9e5a15a0c70 with checksum d41d8cd98f00b204e9800998ecf8427e and multihash cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e {{(pid=6527) add /usr/lib/python2.7/site-packages/glance_store/_drivers/filesystem.py:728}}
12 月 24 15:59:27 controller [email protected][6524]: DEBUG glance_store.multi_backend [None req-081110c4-8d29-4567-a4fb-bbbc7313efbf alt_demo admin] Skipping store.set_acls... not implemented {{(pid=6527) set_acls_for_multi_store /usr/lib/python2.7/site-packages/glance_store/multi_backend.py:439}}
......

在 http 上传缓存目录能找到上传成功的文件,但在从缓存目录写入到 image 目录时,但写入数据就变成了 Wrote 0 bytes

可能是最近比较浮躁

一直跑流程也还是找不到为什么

请求能有大大指点一二