- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
[root@control1 ~]# ceph - v ceph version 14.2 . 22 (ca74598065096e6fcbd8433c8779a2be0c889351) nautilus (stable)
RGW将对象的索引信息存储在 <zone>.rgw.buckets.index pool中,在不分片的情况下,一个对象就对应一个bucket,分片的情况下,多个对象对应同一个bucket,在该对象的omap中存储这bucket的索引信息,如果将这个对象误删除,那么就无法看到该bucket中都有哪些对象,但是对象的真实数据是存储在 <zone>.rgw.buckets.data pool中的,只要data中的数据没有被删除,那么仍然可以正常get到该对象,此时只要object rewrite或者重新向该bucket中上传这些对象就可以自动修复index.
1. 准备测试数据 。
[root@control1 ~]# s3cmd mb s3: // nice Bucket ' s3://nice/ ' created [root@control1 ~ ]# [root@control1 ~ ]# [root@control1 ~]# s3cmd ls s3: // nice [root@control1 ~ ]# [root@control1 ~]# s3cmd put pushgateway- 1.4 . 2 .linux-amd64. tar .gz s3: // nice [root@control1 ~]# s3cmd put node_exporter- 1.1 . 2 .linux-amd64. tar .gz s3: // nice [root@control1 ~ ]# [root@control1 ~ ]# [root@control1 ~]# s3cmd ls s3: // nice 2023 - 02 - 13 06 : 12 9246179 s3: // nice/node_exporter-1.1.2.linux-amd64.tar.gz 2023 - 02 - 13 06 : 09 9189846 s3: // nice/pushgateway-1.4.2.linux-amd64.tar.gz
2. 查看底层数据结构 。
2.1 找到bucket对应的id 。
[root@control1 ~]# radosgw-admin bucket stats --bucket nice { " bucket " : " nice " , " num_shards " : 0 , " tenant " : "" , " zonegroup " : " cc0580a9-21d5-4377-b64b-fabf1f55fb4e " , " placement_rule " : " default-placement " , " explicit_placement " : { " data_pool " : "" , " data_extra_pool " : "" , " index_pool " : "" }, " id " : " 8c065d13-f5f0-4923-9ea0-7518b7760495.45180186.2 " , " marker " : " 8c065d13-f5f0-4923-9ea0-7518b7760495.45180186.2 " , " index_type " : " Normal " , " owner " : " 1034c29d7fec46e897aa531f832b6e5c " , " ver " : " 0#3 " , " master_ver " : " 0#0 " , " mtime " : " 2023-02-13 06:07:37.785853Z " , " max_marker " : " 0# " , " usage " : { " rgw.main " : { " size " : 18436025 , " size_actual " : 18440192 , " size_utilized " : 18436025 , " size_kb " : 18004 , " size_kb_actual " : 18008 , " size_kb_utilized " : 18004 , " num_objects " : 2 } }, " bucket_quota " : { " enabled " : false , " check_on_raw " : false , " max_size " : - 1 , " max_size_kb " : 0 , " max_objects " : - 1 } }
2.2 在index pool中查看该对象的信息 。
[root@control1 ~]# rados ls -p cn- 1 .rgw.buckets.index | grep 8c065d13-f5f0- 4923 -9ea0-7518b7760495. 45180186.2 . dir .8c065d13-f5f0- 4923 -9ea0-7518b7760495. 45180186.2 [root@control1 ~]# rados -p cn- 1 .rgw.buckets.index listomapkeys . dir .8c065d13-f5f0- 4923 -9ea0-7518b7760495. 45180186.2 node_exporter - 1.1 . 2 .linux-amd64. tar .gz pushgateway - 1.4 . 2 .linux-amd64. tar .gz [root@control1 ~ ]# [root@control1 ~ ]# [root@control1 ~]# rados -p cn- 1 .rgw.buckets.index listomapvals . dir .8c065d13-f5f0- 4923 -9ea0-7518b7760495. 45180186.2 node_exporter - 1.1 . 2 .linux-amd64. tar .gz value ( 293 bytes) : 00000000 08 03 1f 01 00 00 26 00 00 00 6e 6f 64 65 5f 65 |......&...node_e| 00000010 78 70 6f 72 74 65 72 2d 31 2e 31 2e 32 2e 6c 69 |xporter- 1.1 . 2 .li| 00000020 6e 75 78 2d 61 6d 64 36 34 2e 74 61 72 2e 67 7a |nux-amd64. tar .gz| 00000030 03 00 00 00 00 00 00 00 01 07 03 91 00 00 00 01 |................| 00000040 e3 15 8d 00 00 00 00 00 ea d4 e9 63 7b eb 01 07 |...........c{...| 00000050 20 00 00 00 36 31 65 32 62 39 36 33 66 36 36 66 | ...61e2b963f66f| 00000060 31 65 30 30 36 34 39 63 38 65 34 64 31 66 34 37 |1e00649c8e4d1f47| 00000070 32 39 65 35 20 00 00 00 31 30 33 34 63 32 39 64 |29e5 ...1034c29d| 00000080 37 66 65 63 34 36 65 38 39 37 61 61 35 33 31 66 |7fec46e897aa531f| 00000090 38 33 32 62 36 65 35 63 05 00 00 00 61 64 6d 69 |832b6e5c....admi| 000000a0 6e 12 00 00 00 61 70 70 6c 69 63 61 74 69 6f 6e |n....application| 000000b0 2f 78 2d 67 7a 69 70 e3 15 8d 00 00 00 00 00 00 |/x- gzip .........| 000000c0 00 00 00 08 00 00 00 53 54 41 4e 44 41 52 44 00 |.......STANDARD.| 000000d0 00 00 00 00 00 00 00 00 01 01 02 00 00 00 0c 03 |................| 000000e0 02 32 00 00 00 38 63 30 36 35 64 31 33 2d 66 35 |. 2 ...8c065d13-f5| 000000f0 66 30 2d 34 39 32 33 2d 39 65 61 30 2d 37 35 31 |f0- 4923 -9ea0- 751 | 00000100 38 62 37 37 36 30 34 39 35 2e 34 35 31 39 38 33 |8b7760495. 451983 | 00000110 37 37 2e 33 35 36 37 00 00 00 00 00 00 00 00 00 | 77.3567 .........| 00000120 00 00 00 00 00 |.....| 00000125 pushgateway - 1.4 . 2 .linux-amd64. tar .gz value ( 291 bytes) : 00000000 08 03 1d 01 00 00 24 00 00 00 70 75 73 68 67 61 |......$...pushga| 00000010 74 65 77 61 79 2d 31 2e 34 2e 32 2e 6c 69 6e 75 |teway- 1.4 . 2 .linu| 00000020 78 2d 61 6d 64 36 34 2e 74 61 72 2e 67 7a 0b 00 |x-amd64. tar .gz..| 00000030 00 00 00 00 00 00 01 07 03 91 00 00 00 01 d6 39 |............... 9 | 00000040 8c 00 00 00 00 00 0a d4 e9 63 7f a9 85 1b 20 00 |.........c.... .| 00000050 00 00 38 35 63 33 62 39 61 30 30 36 36 37 66 34 |..85c3b9a00667f4| 00000060 38 36 32 64 37 62 38 36 31 36 35 66 63 64 30 34 |862d7b86165fcd04| 00000070 39 33 20 00 00 00 31 30 33 34 63 32 39 64 37 66 | 93 ...1034c29d7f| 00000080 65 63 34 36 65 38 39 37 61 61 35 33 31 66 38 33 |ec46e897aa531f83| 00000090 32 62 36 65 35 63 05 00 00 00 61 64 6d 69 6e 12 |2b6e5c....admin.| 000000a0 00 00 00 61 70 70 6c 69 63 61 74 69 6f 6e 2f 78 |...application/x| 000000b0 2d 67 7a 69 70 d6 39 8c 00 00 00 00 00 00 00 00 |- gzip . 9 .........| 000000c0 00 08 00 00 00 53 54 41 4e 44 41 52 44 00 00 00 |.....STANDARD...| 000000d0 00 00 00 00 00 00 01 01 02 00 00 00 0c 0b 01 32 |............... 2 | 000000e0 00 00 00 38 63 30 36 35 64 31 33 2d 66 35 66 30 |...8c065d13-f5f0| 000000f0 2d 34 39 32 33 2d 39 65 61 30 2d 37 35 31 38 62 |- 4923 -9ea0-7518b| 00000100 37 37 36 30 34 39 35 2e 34 35 31 39 38 33 37 37 | 7760495.45198377 | 00000110 2e 33 35 35 33 00 00 00 00 00 00 00 00 00 00 00 |. 3553 ...........| 00000120 00 00 00 |...| 00000123
可以看到index对象通过omap的方式存储了该bucket跟该bucket中对象的索引关系,以及对象的一些元数据信息,比如修改时间,文件类型等,可以通过下面命令来查看:
[root@control1 ~]# radosgw-admin bucket list --bucket nice [ { " name " : " node_exporter-1.1.2.linux-amd64.tar.gz " , " instance " : "" , " ver " : { " pool " : 12 , " epoch " : 3 }, " locator " : "" , " exists " : " true " , " meta " : { " category " : 1 , " size " : 9246179 , " mtime " : " 2023-02-13 06:12:58.117566Z " , " etag " : " 61e2b963f66f1e00649c8e4d1f4729e5 " , " storage_class " : " STANDARD " , " owner " : " 1034c29d7fec46e897aa531f832b6e5c " , " owner_display_name " : " admin " , " content_type " : " application/x-gzip " , " accounted_size " : 9246179 , " user_data " : "" , " appendable " : " false " }, " tag " : " 8c065d13-f5f0-4923-9ea0-7518b7760495.45198377.3567 " , " flags " : 0 , " pending_map " : [], " versioned_epoch " : 0 }, { " name " : " pushgateway-1.4.2.linux-amd64.tar.gz " , " instance " : "" , " ver " : { " pool " : 12 , " epoch " : 11 }, " locator " : "" , " exists " : " true " , " meta " : { " category " : 1 , " size " : 9189846 , " mtime " : " 2023-02-13 06:09:14.461744Z " , " etag " : " 85c3b9a00667f4862d7b86165fcd0493 " , " storage_class " : " STANDARD " , " owner " : " 1034c29d7fec46e897aa531f832b6e5c " , " owner_display_name " : " admin " , " content_type " : " application/x-gzip " , " accounted_size " : 9189846 , " user_data " : "" , " appendable " : " false " }, " tag " : " 8c065d13-f5f0-4923-9ea0-7518b7760495.45198377.3553 " , " flags " : 0 , " pending_map " : [], " versioned_epoch " : 0 } ]
2.3 查看data pool中该bucket的数据对象 。
[root@control1 ~]# rados -p cn- 1 .rgw.buckets.data ls | grep 8c065d13-f5f0- 4923 -9ea0-7518b7760495. 45180186.2 8c065d13 -f5f0- 4923 -9ea0-7518b7760495. 45180186 .2_pushgateway- 1.4 . 2 .linux-amd64. tar .gz 8c065d13 -f5f0- 4923 -9ea0-7518b7760495. 45180186 .2_node_exporter- 1.1 . 2 .linux-amd64. tar .gz 8c065d13 -f5f0- 4923 -9ea0-7518b7760495. 45180186 .2__shadow_.QjFsBiV- vhyjfGzwpTcBBjO7G6rm5Ld_2 8c065d13 -f5f0- 4923 -9ea0-7518b7760495. 45180186 .2__shadow_.QjFsBiV- vhyjfGzwpTcBBjO7G6rm5Ld_1 8c065d13 -f5f0- 4923 -9ea0-7518b7760495. 45180186 .2__shadow_.QU- DyeqL4u3CQLe3KkKlMsDVqde1wK3_2 8c065d13 -f5f0- 4923 -9ea0-7518b7760495. 45180186 .2__shadow_.QU-DyeqL4u3CQLe3KkKlMsDVqde1wK3_1
可以看到从data中对象的命名上,可以找到index和其中对象的关联关系,即8c065d13-f5f0-4923-9ea0-7518b7760495.45180186.2这个索引中有2个 tar .gz对象,其他中间带 shadow 关键字的对象是上传的文件太大的情况下,做的数据分片.
3. 误删index对象 。
[root@control1 ~]# rados -p cn- 1 .rgw.buckets.index rm . dir .8c065d13-f5f0- 4923 -9ea0-7518b7760495. 45180186.2 [root@control1 ~ ]# [root@control1 ~]# s3cmd ls s3: // nice ERROR: S3 error: 404 (NoSuchKey) [root@control1 ~ ]# [root@control1 ~]# radosgw-admin bucket list --bucket nice ERROR: store ->list_objects(): ( 2 ) No such file or directory [root@control1 ~ ]# [root@control1 ~]# s3cmd get s3: // nice/pushgateway-1.4.2.linux-amd64.tar.gz download: ' s3://nice/pushgateway-1.4.2.linux-amd64.tar.g
可以看到要列出该bucket中有哪些对象的操作,都是失败了的,但是如果知道文件名的话,仍然可以单独下载某个对象,即可以做get操作.
4. 恢复index对象 。
方法一:rewrite object 。
[root@control1 ~]# radosgw-admin object rewrite --bucket nice -- object node_exporter- 1.1 . 2 .linux-amd64. tar .gz [root@control1 ~]# s3cmd ls s3: // nice 2023 - 02 - 13 06 : 12 9246179 s3: // nice/node_exporter-1.1.2.linux-amd64.tar.gz [root@control1 ~ ]# [root@control1 ~]# rados -p cn- 1 .rgw.buckets.index ls | grep dir .8c065d13-f5f0- 4923 -9ea0-7518b7760495. 45180186.2 . dir .8c065d13-f5f0- 4923 -9ea0-7518b7760495. 45180186.2
方法二:重新上传 。
[root@control1 ~]# s3cmd put pushgateway- 1.4 . 2 .linux-amd64. tar .gz s3: // nice upload: ' pushgateway-1.4.2.linux-amd64.tar.gz ' -> ' s3://nice/pushgateway-1.4.2.linux-amd64.tar.gz ' [ 1 of 1 ] [root@control1 ~]# rados -p cn- 1 .rgw.buckets.index ls | grep dir .8c065d13-f5f0- 4923 -9ea0-7518b7760495. 45180186.2 . dir .8c065d13-f5f0- 4923 -9ea0-7518b7760495. 45180186.2 [root@control1 ~]# rados -p cn- 1 .rgw.buckets.index listomapkeys . dir .8c065d13-f5f0- 4923 -9ea0-7518b7760495. 45180186.2 pushgateway - 1.4 . 2 .linux-amd64. tar .gz [root@control1 ~]# s3cmd ls s3: // nice 2023 - 02 - 13 06 : 42 9189846 s3: // nice/pushgateway-1.4.2.linux-amd64.tar.gz
方法一比较简单,不需要将该文件下载下来再上传,只需要指定object的名字,重新rewrite一遍就可以了。 。
最后此篇关于CephRGW误删index对象恢复的文章就讲到这里了,如果你想了解更多关于CephRGW误删index对象恢复的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
本文实例讲述了MySQL学习笔记之数据的增、删、改实现方法。分享给大家供大家参考,具体如下: 1、增加数据 插入代码格式: insert into 表明 [列名…] values (值…)
有时候我们需要扩展一个数组,或者删掉数组的一部分,PHP为扩展和缩小数组提供了一些函数。对于那些希望模仿各种队列实现(FIFO、LIFO)的程序员来说,这些函数可以提供便利。顾名思义,从这些函数的函
作为一个小型的数据存储传递的工具——xml,大家肯定也不陌生,今天就关于xml的一些简单操作做些总结。 这些都是在控制台进行操作的····&m
话不多说,请看代码: ? 1
本文实例讲述了mysql语句实现简单的增、删、改、查操作。分享给大家供大家参考,具体如下: 1、创建db_shop数据库,如果该数据库不存在则创建 ?
使用oracle触发器 实现对某个表的增改删的监控操作,并记录到另一个表中。 代码: 复制代码代码如下: create or replace trigger test_trigge
java连接数据库增、删、改、查工具类 数据库操作工具类,因为各厂家数据库的分页条件不同,目前支持Mysql、Oracle、Postgresql的分页查询 在Postgresql环境测试过了,其他
1、修改数据 复制代码代码如下: DataRow dr =
注册表可以用来进行存储一些程序的信息,例如用户的权限、或者某些值等,可以根据个人需要进行存储和删减。 当前注册表主目录: 引用包 Wesky.Net.OpenTools 1.0.5或
准备工作: 增、删、改、查的方法有很多很多种,这里只展示出常用的几种。 ?
需要5个类: 1.实体类:Person.java 2.抽象类:SQLOperate.java(封装了对数据库的操作) 3.助手类:DBOpenHelper.java(继承SQLiteOpenH
首先是是一个简单的例子,单链表的建立和输出。 程序1.1 复制代码 代码如下: #include<iostream> #include<string> using na
数据库操纵基本流程为: 1、连接数据库服务器 2、选择数据库 3、执行SQL语句 4、处理结果集 5、打印操作信息 其中用到的相关函数有 •resource m
CRUD是Create(创建)、Read(读取)、Update(更新)和Delete(删除)的缩写,它是普通应用程序的缩影。如果您掌握了某框架的CRUD编写,那么意味可以使用该框架创建普通应用程序了
项目结构: 添加页面: &
本文实例讲述了android操作sqlite数据库(增、删、改、查、分页等)及listview显示数据的方法。分享给大家供大家参考,具体如下: 由于刚接触android开发,故此想把学到的基础知识
总括 pandas的索引函数主要有三种: loc 标签索引,行和列的名称 iloc 整型索引(绝对位置索引),绝对意义上的几行几列,起始索引为0 ix 是 iloc 和 loc的合体 at
1. [代码]Mybatis全局配置文件 ? 1
我是一名优秀的程序员,十分优秀!