文章目录

  • Pool相关
  • Object相关
  • 导出资源池数据

最近了解了rados命令的使用,感觉在对象操作这块还是非常实用。因为rados是属于底层存储核心,所以关于rados的命令针对对象的操作较多。
环境中执行 rados -h可以看到命令集分为几个大的模块:资源池、对象、以及一些全局选项 该命令用来做对象相关测试较为方便,可以操作单个对象,同时使用 rados bench命令进行集群io性能测试较多。本文不对 rados bench进行讲解,详细可以参考 io性能工具

当前rados命令是基于ceph 12.2.1 版本描述的,如过更高版本有更新的命令,欢迎大家补充。

Pool相关
  • 显示资源池列表
    rados lspools
  • 创建资源池
    rados mkpool pool1 auid rule_id

    rados mkpool pool1 12 2 #创建一个名称为pool1的资源池,执行该资源池的rule编号为2,用户编号为1
    setting auid:12
    using crush rule 2
    successfully created pool test
    
  • 资源池数据拷贝
    rados cppool pool1 pool2,将pool1的资源池数据拷贝到pool2的数据资源池
  • 删除资源池
    rados rmpool pool1 pool1 --yes-i-really-really-mean-it
  • 清除资源池数据
    rados purge pool1 --yes-i-really-really-mean-it
  • 查看资源池信息
    rados df -p pool1 -p参数是指定具体资源池,如果不加,则显示所有

    [root@node1 ~]# rados df -p data
    POOL_NAME USED OBJECTS CLONES COPIES MISSING_ON_PRIMARY UNFOUND DEGRADED RD_OPS RD    WR_OPS  WR
    data      662G   51636      0 619632                  0       0        0  48547 7745M 1653358 1274G total_objects    51883
    total_used       2195G
    total_avail      215T
    total_space      217T
    
  • 列出资源池对象编号
    rados ls -p poo1,同样指定列出pool1资源池对象,否则列出所有

    [root@node1 ~]# rados ls -p data|less
    10000004481.00000002
    10000001b2f.00000000
    100000042f9.00000006
    10000004f62.00000001
    10000003e8c.00000003
    
  • 修改资源池的用户编号,即auid
    rados chown auid
Object相关
  • 获取对象内容get
    rados -p data get 10000006b70.00000005 test.txt该命令需要指定资源池以及对象内容的输出文件,对象名称可以通过rados ls命令获取

    [root@node1 ~]# rados -p data get 10000006b70.00000005 test.txt
    [root@node1 ~]# cat test.txt  #该对象内容是一些时间戳
    161-20:45:49:35
    162-20:45:49:536
    163-20:45:50:53
    164-20:45:50:575
    165-20:45:51:83
    166-20:45:51:602
    167-20:45:52:114
    168-20:45:52:623
    169-20:45:53:129
    170-20:45:53:636
    171-20:45:54:150
    
  • 将指定文件作为对象写入到资源池 put
    rados -p test_rep_pool put obj_name test.txt将test.txt以obj_name为名称

    #写入之前的对象数data:
    pools:   2 pools, 256 pgs
    objects: 2 objects, 19B
    usage:   15.0GiB used, 96.4TiB / 96.4TiB avail
    pgs:     256 active+clean#写入之后的对象数
    data:
    pools:   2 pools, 256 pgs
    objects: 3 objects, 2.78MiB
    usage:   15.0GiB used, 96.4TiB / 96.4TiB avail
    pgs:     256 active+clean
    #查看对象列表如下
    [root@node1 ~]# rados -p test_rep_pool ls
    obj_name
    

    此外,该命令可以指定写入对象的偏移量,默认是从0开始,我可以指定具体的偏移量,单位为B
    rados -p test_rep_pool put obj_name test.txt --offset 1048576,我设置的是从起始地址偏移1M,执行结果如下

    data:
    pools:   2 pools, 256 pgs
    objects: 3 objects, 3.78MiB #本应该是2.78M,我偏移了1M开始写,现在变为3.78M
    usage:   15.0GiB used, 96.4TiB / 96.4TiB avail
    pgs:     256 active+clean
    

    这个命令极大得方便我们去测试分析bluestore 的io流程

  • 向指定对象追加内容append
    rados -p test_rep_pool append obj_name ceph-osd.16.log

  • 删除指定长度对象内容truncate
    rados -p test_rep_pool truncate obj_name 524288 删除obj_name 对象512kb的容量

  • 创建对象create
    rados -p test_rep_pool create obj_name2这里是创建了一个空对象

    [root@node1 ~]# rados -p test_rep_pool ls
    obj_name2
    obj_name
    [root@node1 ~]# rados -p test_rep_pool stat obj_name2 #显示对象信息,包括所在资源池。修改修改时间,大小
    test_rep_pool/obj_name2 mtime 2019-05-10 21:12:40.000000, size 0
    
  • 删除指定对象rm
    rados -p test_rep_pool rm obj_name2 或者加--force-full时强制删除一个对象,不在乎对象此时状态

  • 拷贝对象cp
    rados -p test_rep_pool cp obj_name test_cp_obj

    [root@node1 ~]# rados -p test_rep_pool cp obj_name test_cp_obj
    [root@node1 ~]# rados -p test_rep_pool ls
    obj_name2
    test_cp_obj
    obj_name
    #查看这两个对象的信息,可以看到已经成功拷贝
    [root@node1 ~]# rados -p test_rep_pool stat obj_name
    test_rep_pool/obj_name mtime 2019-05-10 21:08:49.000000, size 524288
    [root@node1 ~]# rados -p test_rep_pool stat test_cp_obj
    test_rep_pool/test_cp_obj mtime 2019-05-10 21:17:29.000000, size 524288
    
  • 查看对象的属性 listxattr
    rados -p data listxattr obj_name

  • 获取对象指定属性getxattr
    rados -p data getxattr obj_name attr

  • 设置对象属性值setxattr
    rados -p data setxattr obj_name attr val

  • 删除对象指定属性rmxattr
    rados -p data rmxattr obj_name attr

    #先设置对象属性值
    rados -p test_rep_pool setxattr obj_name test_attr true
    rados -p test_rep_pool setxattr obj_name test_attr2 false
    #列出对象属性值
    [root@node1 ~]# rados -p test_rep_pool listxattr obj_name
    test_attr
    test_attr2
    #获取对象指定属性值
    [root@node1 ~]# rados -p test_rep_pool getxattr obj_name test_attr
    true
    #删除test_attr属性,只剩下一个属性
    [root@node1 ~]# rados -p test_rep_pool rmxattr obj_name test_attr
    [root@node1 ~]# rados -p test_rep_pool listxattr obj_name
    test_attr2
    

    可以理解这几个命令可以为对象打标,来标记我们自己操作过的对象

  • 查看对象信息
    rados -p test_rep_pool stat obj_name

    [root@node1 ~]# rados -p test_rep_pool stat obj_name
    test_rep_pool/obj_name mtime 2019-05-10 21:33:48.000000, size 524288
    
  • 设置对象头部内容 setomapheader
    [root@node1 ~]# rados -p test_rep_pool setomapheader obj_name 1

  • 获取对象头部内容getomapheader
    rados -p test_rep_pool getomapheader obj_name

    #设置对象头部信息为1
    [root@node1 ~]# rados -p test_rep_pool setomapheader obj_name 1
    #获取对象头部信息
    [root@node1 ~]# rados -p test_rep_pool getomapheader obj_name
    header (1 bytes) :
    00000000  31                                                |1|
    00000001
    
  • 设置对象的键值属性 setomapval
    rados -p test_rep_pool setomapval obj_name key val

  • 列出omap的键listomapkeys
    rados -p test_rep_pool listomapkeys obj_name key val

  • 列出omap的键listomapvals
    rados -p test_rep_pool listomap obj_name keys

  • 获取对象的指定键的值 getomap val
    rados -p test_rep_pool getomapval obj_name key

  • 删除对象的指定键和值 rmomapkey
    rados -p test_rep_pool rmomapkey obj_name key

  • 监控对象操作,并且向监控者发送消息 有点类似与局域网通信

    #终端一 :监听该对象
    [root@node1 ~]# rados -p test_rep_pool watch obj_name
    press enter to exit...#终端二:发送消息到终端一的该对象监听者
    [root@node1 ~]# rados -p test_rep_pool notify obj_name message
    reply client.86788 cookie 140047050446368 : 11 bytes
    00000000  07 00 00 00 6d 65 73 73  61 67 65                 |....message|
    0000000b#此时终端一接收到消息如下
    NOTIFY cookie 140047050446368 notify_id 940597837824 from 86797
    00000000  07 00 00 00 6d 65 73 73  61 67 65                 |....message|
    0000000b
    
  • 查看有多少个对象监控者
    rados -p test_rep_pool listwatchers obj_name

    [root@node1 ~]# rados -p test_rep_pool listwatchers obj_name
    watcher=192.168.122.1:0/3015025283 client.86788 cookie=140047050446368
    
  • 设置一个对象的大小以及写粒度,但是目前并未分析清除该设置所起的作用
    rados -p test_rep_pool set-alloc-hint 4194304 4194304大小为4M ,写粒度为4M

导出资源池数据

该命令方便数据备份

  • 将资源池内容输出或者写入指定文件
    rados -p test_rep_pool export pool_content
    因为导出的文件为数据文件,所以查看内容需使用hexdum -C pool_content格式化输出或者使用vim进入一般模式输入:%!xxd 从而将该文件转换为16进制可读文件

    
    [root@node1 ~]# vim pool_content
    0000000: ceff ceff 0200 0000 1200 0000 0a00 0000  ................
    0000010: 0101 0c00 0000 ceff 0a0a 0000 0000 0000  ................
    0000020: 0000 0101 0c00 0000 ceff 0303 2701 0000  ............'...
    0000030: 0000 0000 0301 2101 0000 0403 2a00 0000  ......!.....*...
    0000040: 0000 0000 0900 0000 6f62 6a5f 6e61 6d65  ........obj_name
    0000050: 32fe ffff ffff ffff ff00 0000 0000 0000  2...............
    ...
    00001b0: ec01 010c 0000 00ce ff04 0400 0000 0000  ................
    00001c0: 0000 0001 010c 0000 00ce ff03 0328 0100  .............(..
    00001d0: 0000 0000 0003 0122 0100 0004 032b 0000  .......".....+..
    00001e0: 0000 0000 000a 0000 006f 626a 5f63 7265  .........obj_cre
    00001f0: 6174 65fe ffff ffff ffff ff00 0000 0000  ate.............
    
  • 将资源文件导入指定资源池
    rados -p test_rep_pool import pool_content
    导入之前,我们对以上资源池数据进行清除,操作如下

    [root@node1 ~]# rados purge test_rep_pool --yes-i-really-really-mean-it
    Warning: using slow linear search
    Removed 5 objects
    successfully purged pool test_rep_pool
    [root@node1 ~]# rados -p test_rep_pool import pool_content
    Importing pool
    Write #-9223372036854775808:00000000:::obj_name2:head#
    Write #-9223372036854775808:00000000:::obj_create:head#
    Write #-9223372036854775808:00000000:::test_cp_obj:head#
    Write #-9223372036854775808:00000000:::obj_name:head#
    Write #-9223372036854775808:00000000:::obj_test:head#
    

因为rados命令集较为庞大,本文主要介绍的时rados对象操作相关的命令,还有一些其他命令未介绍,各位可以通过rados -h帮助信息进行查看。

ceph rados命令使用相关推荐

  1. ceph命令系列(一):ceph-deploy/ceph/rados/rbd 常用命令详解

    ceph-deploy 常用命令详解 命令 描述 ceph-deploy new [mon-node ...] 指定node(s)为monitor,开始部署一个新的ceph集群,并且在当前目录创建ce ...

  2. rados 命令行函数 调试 ceph python

    文章目录 rados 报错 故事开局 解决思路 命令行 调试 python vscode 界面调试 解决问题 vscode截图 rados 报错 cmd = json.dumps({"pre ...

  3. 【Ceph】Ceph常用命令|Ceph配置参数和命令解析|ceph管理

    目录 常用命令 查看状态 启动/停止 分类命令 ceph mon ceph mds ceph osd ceph pg ceph osd pool rados ceph-deploy 块设备|rbd的一 ...

  4. ceph rados 创建存储池 存储池对象查看

    1. rados命令查看存储池 # rados lspools # ceph osd pool ls # ceph osd lspools查看存储池使用情况 # rados df 新建存储池 # ra ...

  5. ceph常用命令-pool相关命令

    2019独角兽企业重金招聘Python工程师标准>>> 1.1 查询系统中所有的pool 命令格式: ceph osd lspools 或rados lspools 1.2      ...

  6. Ceph 存储池命令 以及 数据压缩

    文章目录 一.存储池操作 1.1 常用命令 1.2 删除存储池 1.3 存储池配额 1.4 存储池可用参数 二.存储池快照 2.1 创建快照 2.2 验证快照 2.3 回滚快照 2.4 删除快照 三. ...

  7. ceph常用命令及其使用、ceph集群定位常用命令说明【如ceph osd set norebalance】、ceph官方文档查询地址

    文章目录 ceph集群的监控 查看OSD版本 检查集群的健康情况 监控集群的时间 查看集群的空间利用率 查看集群的状态 查看集群的实时状态 获取秘钥列表 查看ceph特征 查看osd存储引擎 获得所有 ...

  8. 【ceph】Admin Socket机制|ceph dump 命令原理

    目录 python 前端部分 Admin Socket后端部分 ceph 命令下发流程:命令行-->python 前端部分处理-->Admin Socket后端部分处理 前端部分 pyth ...

  9. 常用的ceph调试命令

    2019独角兽企业重金招聘Python工程师标准>>> ceph osd tree list weight, status and logic structure of all os ...

最新文章

  1. 卧槽,面试官质疑我不会配置中心原理,看不起谁呢?
  2. Py中的类型注解【转载】
  3. OFFICE2019精简安装D盘(包括Word、PPT、Excel,可根据需要调整)+VISIO2019+Mathtype7.4.0完美下载安装教程
  4. 用三角函数正交坐标系计算三角级数(傅里叶级数)
  5. 坐拥270亿参数!阿里达摩院发布超大规模语言模型PLUG,上能写诗词歌赋、下能对答如流...
  6. java实现netstat命令功能_netstat命令 详解
  7. 爬虫爬取csdn登陆页面持续加载,selenium模拟无法进行的解决方案
  8. off cpu linux,宋宝华: 用off-cpu火焰图进行Linux性能分析
  9. 博弈论(1)—— 零和与非零和
  10. Nutch 笔记(二):Craw more urls and Recrawl
  11. Charles一键设置Breakpoint(断点)
  12. [Excel]如何使Vlookup由右往左找? 或使Hlookup由下往上找?
  13. 矩阵论理论知识(五)矩阵的广义逆
  14. HTML CSS 模仿当当网
  15. 一级计算机考试模拟知识点,计算机一级MSOffice考试模拟试题附答案
  16. 教你如何在中关村这个险恶的地方买到最便宜的称心如意的笔记本电脑
  17. Java计算机毕业设计体育馆数据管理系统源码+系统+数据库+lw文档
  18. 字符串的处理:判断字符是否全为中文,判断是否含有中文字符,判断是否全为英文字符,判断是否含有英文字符,取出其中的中文字符,取出其中的英文字符
  19. 前端+node实现一个简单的聊天室功能
  20. Unity Shader学习:SSR屏幕空间反射

热门文章

  1. com组件和一般dll的区别
  2. python类方法调用装饰_Python3 @classmethod 函数装饰器 声明一个类方法
  3. python中的元类_python中的元类
  4. 为什么vs数据库中文显示问号_本科论文知网不收录为什么会被知网查重到?
  5. java soap协议头_java – 服务器无法识别HTTP标头“SOAPAction”的值
  6. mysql8.0安装无法设置密码_安装mysql8.0.16初步设置密码时候遇到的问题
  7. 把qss添加进qrc文件_PDF怎么压缩?一招教你快速压缩PDF文件
  8. 使用Python,OpenCV进行涂鸦(绘制文字、线、圆、矩形、椭圆、多边形轮廓、多边形填充、箭头~)
  9. Python Qt GUI设计:QLabel标签类(基础篇—11)
  10. HDU - 5876 Sparse Graph 2016 ACM/ICPC 大连网络赛 I题 bfs+set+补图最短路