当前位置: 首页 > 编程日记 > 正文

ceph rados命令使用

文章目录

          • 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帮助信息进行查看。

相关文章:

前置体验,才是打动用户的神器

在上一篇文章《记住,用户只愿为“体验”付钱》中,我谈到了体验经济和根据体验定价的逻辑,以及一些商业案例,它们共同展现了一种趋势,即用户愿意为体验付钱。同理,在这样的大背景下,互联网产品该…

服务器ip 计算机名,服务器计算机名称或者ip地址

弹性云服务器 ECS弹性云服务器(Elastic Cloud Server)是一种可随时自助获取、可弹性伸缩的云服务器,帮助用户打造可靠、安全、灵活、高效的应用环境,确保服务持久稳定运行,提升运维效率三年低至5折,多种配置可选了解详情区域和可用…

mysql的常用函数

一、数学函数 ABS(x) 返回x的绝对值 BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制) CEILING(x) 返回大于x的最小整数值 EXP(x) 返回值e(自然…

NOIP模拟题 斐波那契数列

题目大意 给定长度为$n$序列$A$,将它划分成尽可能少的若干部分,使得任意部分内两两之和均不为斐波那契数列中的某一项。 题解 不难发现$2\times 10^9$之内的斐波那契数不超过$50$个 先求出第$i$个数之前最后一个能和第$i$个数相加为斐波那契数的位置$las…

使用rpmbuild对ceph的源码包进行重新打包

进入ceph源码包下载ceph相关的rpm包和tar包 我们下载的是ceph-12.1.1-0.el7.src.rpmceph L版本的rpm包 执行命令rpmbuild --rebuild ceph-12.1.1-0.el7.src.rpm 等待它执行到configuring done之后就强行终止 -- Found cython -- Performing Test HAS_VTA -- Performing Test …

java与.net比较学习系列(7) 属性

说起属性,实际上java中没有属性这个概念,只有字段和方法,但是可以通过私有字段和声明get,set方法来实现类似于C#中属性的效果。 在C#中,声明属性有两种方式,一种是声明访问器,另外一种是利用C# 3.0新增的自…

国家标准油类计算机,食用油新国标正式实施 产品配方将不再是“机密”

为了更好维护消费者权益,引导食用油市场秩序合理化转变,解决油难选的问题,今年6月21日,国家卫生健康委员会、国家市场监督管理总局联合发布的《食品安全国家标准 植物油》(GB2716-2018),并于2018年12月21日起正式实施。…

如何终止正在在发送的ajax请求

核心:调用XMLHttpRequest对象上的abort方法 jquery的ajax方法有自己的超时时间设置参数: $.ajax({type:POST,url:b.php,data:,timeout:5000,success:function(){} }) 同时1.$.get返回的数据类型是XMLHttpRequest,请参考手册。($.p…

Luogu P2619 [国家集训队2]Tree I(WQS二分+最小生成树)

P2619 [国家集训队2]Tree I 题意 题目描述 给你一个无向带权连通图,每条边是黑色或白色。让你求一棵最小权的恰好有\(need\)条白色边的生成树。 题目保证有解。 输入输出格式 输入格式: 第一行\(V,E,need\)分别表示点数,边数和需要的白色边数…

关于OSD::mkfs: ObjectStore::mkfs failed with error (5) Input/output error问题的解决

环境: ceph L版本12.2.1升级到12.2.12 这个问题是由于升级后进行12.2.12环境中的使用ceph-disk 进行osd部署时出现如下问题,执行命令 ceph-disk -v prepare /dev/sdb;ceph-disk -v activate /dev/sdb1 出现如下问题,出现这个问题之前我的磁盘…

福大计算机国二,福大学子喜获中国大学生计算机设计大赛二三等奖

新闻中心讯/8月9日,第十一届中国大学生计算机设计大赛暨第五届中国大学生动漫游戏创意设计大赛(爱果冻杯)决赛在福建农林大学闭幕。福州大学获得了全国决赛的二等奖3项,三等奖1项。据了解,本次大赛共有来自中央美术学院、中央民族大学、东北大…

Ubuntu下如何解压缩zip,tar,tar.gz,tar.bz2文件

转自:http://wangli-5665.diandian.com/post/2011-08-18/4039228 这么多年来,数据压缩对我们来说是非常有用的。无论是在邮件中发送的图片用的zip文件还是在服务器压缩数据文件,我们都可以让下载更容易或者有效 的节约磁盘空间。某些压缩格式…

DataGridView和ListT绑定不显示问题

在学习DataGridView 和List<T>绑定时发现DataGridView不会显示数据。后来发现要用类的属性才能正常显示&#xff0c;如果直接用类的字段等来显示&#xff0c;则无法显示数据。 代码如下&#xff1a; using System; using System.Collections.Generic; using System.Compo…

【pytorch】pytorch-backward()的理解

pytorch-backword函数的理解 函数&#xff1a;\(tensor.backward(params)\) 这个params的维度一定要和tensor的一致&#xff0c;因为tensor如果是一个向量y [y1,y2,y3]&#xff0c;那么传入的params[a1,a2,a3]&#xff0c;这三个值是系数&#xff0c;那么是什么的系数呢&#…

CEPH集群更换ip(更换ip前的防范和更换ip后的恢复)

文章目录修改/etc/hosts中的ip设置修改ceph.conf中的ip地址获取monmap将monmap注入到集群最近测试部在测试一些功能&#xff0c;在我们不知情得情况下更换了集群内外网ip&#xff0c;之后直接甩锅到我这里&#xff08;大哭&#xff09;接手到的集群是ceph各个组件之间无法成功通…

vim使用大全

鸟哥介绍的几个高级功能1.区块选择的按键意义v字符选择&#xff0c;会将光标经过的地方反白选择&#xff01;V行选择&#xff0c;会将光标经过的行反白选择&#xff01;[Ctrl]v区块选择&#xff0c;可以用长方形的方式选择资料y将反白的地方复制起来d将反白的地方删除掉 2.多档…

ajax默认超时时间多久,请问chrome浏览器的默认超时时间是多久?

测试时间&#xff1a;2019/02/26MacOS 环境下&#xff0c;timeout在各浏览器默认值为(以下浏览器都为当前时间最新版本)chrome 72.x 为4minsafari 12 为8minfirefox 65 貌似没有超时时间测试代码Documentqueryconst ajax (url /api/timeout) > {const xhr new XMLHttpReq…

Nginx 做图片服务器

呵呵 说来搞笑 我们公司领导那个决定啊&#xff0c;公司的图片Windows服务机器 准备迁移到Linux&#xff0c;我勒个去&#xff0c;也不搞个正规的文件系统&#xff0c;先喷下公司 2.8KW 张零碎图片 1.8T 文件占有量&#xff0c; 哥刚刚接手也是被吓了一跳。 Nginx 带动 整个公司…

SUSTechTripleH队墓志铭

SUSTechTripleH队建于2017年7月队员包括朱泓霖 贺启旸 黄博11月获南方科技大学第一枚ICPC区域赛奖牌次年获第一枚广东省省赛金牌2018年8月新增队员张文灏11月4日获得南方科技大学第一枚ICPC区域赛金牌于2018年11月5日解散享年16个月祝愿南科大ACM集训队越办越好转载于:https:/…

ceph-deploy rpm包的制作

今天需要部署一个ceph L 版本12.2.12的环境&#xff0c;无奈最近公司网络无法访问到ceph官网&#xff0c;只能使用之前下载好的ceph-deploy-1.5.39版本&#xff0c;安装上之后一口老血喷了出来&#xff0c;没有mgr的部署选项。 无奈之下只能自己制作一个1.5.38版本的ceph-depl…

ajax post的回调函数另一个方法,jQueryajax–post()方法 - 米扑博客

jQuery ajax - post() 实例请求 test.php 网页&#xff0c;忽略返回值&#xff1a;$.post("test.php");通过 AJAX POST 请求改变 div 元素的文本&#xff1a;$("input").keyup(function(){txt$("input").val();$.post("demo_ajax.asp"…

将excel中是数据导入数据库

2019独角兽企业重金招聘Python工程师标准>>> 将excel中是数据导入数据库 1.利用excel生成sql语句&#xff1a; 列如&#xff1a; 1&#xff09;.insert&#xff1a; CONCATENATE("insert into Company (ID,Name,Address,Tell,Brief,URL,Fax,Contact,TradeI…

Java工具类-转换字符编码

package common; /***字符串处理公用类 */ public class DealString {/*** 转换字符编码 由“iso-8859-1”西文转换为简体中文*/public static String toGb(String uniStr){String gbStr"";if(uniStrnull){uniStr"";}try{byte[] tempByteuniStr.getBytes(&…

partprobe源码分析

partprobe工具 操作系统目录/usr/sbin/partprobe 程序安装包parted-3.1-17.el7.x86_64.rpm 命令用法&#xff1a; partprobe是用来告知操作系统内核 分区表发生变化的工具&#xff0c;告知方式是请求内核重读分区表 选项如下&#xff1a; -d 不会让内核重读分区表&#xff0c…

数据库和服务器什么协议,数据库服务器协议

数据库服务器协议 内容精选换一换本章节适用于MRS 3.x之前版本。Loader支持以下多种连接&#xff0c;每种连接的配置介绍可根据本章节内容了解。obs-connectorgeneric-jdbc-connectorftp-connector或sftp-connectorhbase-connector、hdfs-connector或hive-connectorOBS连接是Lo…

VC实用小知识总结 (一),转http://blog.csdn.net/myiszjf/article/details/10007431

在上一篇中,我们以经介绍了程序的流程和框架,在本篇将详细讨论各个功能的实现主要包括1.获取磁盘信息2.获取目录信息3.获取文件信息4.运行指定文件5.删除指定文件6.删除指定目录7.创建指定目录8.上传下载文件9.获取远程文件图标获取磁盘信息磁盘信息可以用API GetDriveType来实…

Linux下快速分区格式化大于2T大容量存储

在生产环境中&#xff0c;我们会遇到分区大于2T的磁盘&#xff08;比如&#xff1a;添加一个10TB的存储&#xff09;&#xff0c;由于MBR分区表只支持2T磁盘&#xff0c;所以大于2T的磁盘必须使用GPT分区表&#xff0c;而我们在做raid时会划分多个VD来进行装系统&#xff0c;但…

ubuntu18.04 Desktop版本部署13.2.6版本ceph

文章目录选择系统安装系统网络配置CEPH部署想要查看版本较高的ceph在进行录像业务存储且在磁盘占用率在70%左右时且ceph底层出现slow_request是否会对上层录像业务造成显性影响 所以需要在ubuntu 18.04版本部署mimic版本ceph&#xff0c;先将部署步骤描述如下&#xff1a; 选…

java获取ajax上传的文件,Java使用Ajax异步上传文件

相关代码示例:html代码片段:名称class"layui-input">描述文件请选择配置文件立即提交重置js代码片段://上传配置文件$("#save_config_file").click(function () {var name $("#config_name").val();var desc $("#config_desc").v…

hdu 1423

最长公共上升子序列&#xff1a;O(n*m)的算法&#xff1b; 1 #include<cstdio>2 #include<cstring>3 #define maxn 10004 using namespace std;5 int a[maxn],b[maxn],f[maxn];6 int main()7 {8 int t,n,m;9 scanf("%d",&t); 10 while(t…