zoukankan      html  css  js  c++  java
  • rbd的image快照与Pool快照

    前言

    这个问题是不久前在ceph社区群里看到的,创建image的时候,当时的报错如下:

    2016-12-13 23:13:10.266865 7efbfb7fe700 -1 librbd::image::CreateRequest: pool not configured for self-managed RBD snapshot support

    rbd: create error: (22) Invalid argument

    这个错我之前也没见过,并且因为很少用到快照,所以可能也就没有触发这个问题,在查看了一些资料以后,明白了原因,这里就梳理一下

    Ceph实质上有两种Snapshot模式,并且两种Snapshot是不能同时应用到同一个Pool中。

    Pool Snapshot: 对整个Pool打一个Snapshot,该Pool中所有的对象都会受影响

    Self Managed Snapshot: 用户管理的Snapshot,简单的理解就是这个Pool受影响的对象是受用户控制的。这里的用户往往是应用如librbd。

    上面这段话引用自 麦子迈:解析ceph-snapshot

    本篇就将讲述下用两种的互斥是如何实现的,又如何解决

    实践

    我们创建两个存储池

    [root@lab8106 ~]# ceph osd pool create testpool1 8
    pool 'testpool1' created
    [root@lab8106 ~]# ceph osd pool create testpool2 8
    pool 'testpool2' created
    

    我们在testpool1当中创建一个image,testpool2保留为空

    [root@lab8106 ~]# rbd -p testpool1 create testimage --size 4000
    

    我们检查下存储池

    [root@lab8106 ~]# ceph osd dump
    ···
    pool 5 'testpool1' replicated size 2 min_size 1 crush_ruleset 0 object_hash rjenkins pg_num 8 pgp_num 8 last_change 85 flags hashpspool stripe_width 0
    	removed_snaps [1~3]
    pool 6 'testpool2' replicated size 2 min_size 1 crush_ruleset 0 object_hash rjenkins pg_num 8 pgp_num 8 last_change 82 flags hashpspool stripe_width 0
    ···
    

    创建了image的存储池多了一个标记 removed_snaps [1~3] ,而没有创建的存储池没有这个标记

    我们现在来对两个存储池创建快照

    [root@lab8106 ~]# ceph osd pool mksnap testpool1 testpool1-snap
    Error EINVAL: pool testpool1 is in unmanaged snaps mode
    [root@lab8106 ~]# ceph osd pool mksnap testpool2 testpool2-snap
    created pool testpool2 snap testpool2-snap
    

    可以看到创建了image的存储池无法创建存储池的快照,因为存储池当前已经为unmanaged snaps mode了,而没有创建image的 就可以做存储池快照

    我们再继续创建image,看下会发生什么

    [root@lab8106 ~]# rbd -p testpool1 create testimag2 --size 4000
    [root@lab8106 ~]# rbd -p testpool2 create testimag3 --size 4000
    2016-12-13 23:31:58.105932 7fd9cb7fe700 -1 librbd::image::CreateRequest: pool not configured for self-managed RBD snapshot support
    rbd: create error: (22) Invalid argument
    

    可以看到做了存储池快照的存储池无法创建image了,并且提示了没有配置成self-managed RBD snapshot,创建的时候会去检查是否是自管理模式

    这个地方有个配置项目是

    rbd_validate_pool = true

    我们把这个参数改成false,然后再次创建

    [root@lab8106 ~]# rbd -p testpool2 create testimag3 --size 4000
    

    就可以创建了

    本篇共出现了两次抛错,所以,这个是需要我们去做好选择的,总结下大概是这样的

    此处输入图片的描述

    总结

    本篇总结了快照的两个出错的原因,尽量提前做好规划,再去选择哪种

  • 相关阅读:
    iOS--异步下载
    linux搭建ftp服务器
    hexo常用命令
    Markdown入门
    Markdown 语法和 MWeb 写作使用说明
    vi/vim
    微信聊天机器人
    .vimrc
    配置双机
    python学习笔记(一)
  • 原文地址:https://www.cnblogs.com/zphj1987/p/13575395.html
Copyright © 2011-2022 走看看