查看,创建,删除,映射rbd镜像
标签(空格分隔): ceph,ceph实验,pg
1. 创建镜像:
[root@node3 ~]# rbd create testpool/foo --size 1024
2. 查看镜像信息:
[root@node3 ~]# rbd info testpool/foo
rbd image 'foo':
size 1024 MB in 256 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.3723643c9869
format: 2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
flags:
create_timestamp: Sat Oct 21 14:38:04 2017
size : 就是这个块的大小,即1024MB=1G,1024MB/256 = 4M,共分成了256个对象(object),每个对象4M。
order 22: 22是个编号,4M是22, 8M是23,也就是2^22 bytes = 4MB, 2^23 bytes = 8MB
block_name_prefix : 这个是块的最重要的属性了,这是每个块在ceph中的唯一前缀编号,有了这个前缀,把主机上的OSD都拔下来带回家,就能复活所有的VM了
format : 格式有两种,1和2
查看创建了镜像之后,该pool中生成的对象:
[root@node3 ~]# rados -p testpool ls
rbd_directory
rbd_info
rbd_object_map.3723643c9869
rbd_id.foo
rbd_header.3723643c9869
查看 rbd_directory 中的内容:
[root@node3 ~]# rados -p testpool listomapvals rbd_directory
id_3723643c9869
value (7 bytes) :
00000000 03 00 00 00 66 6f 6f |....foo|
00000007
name_foo
value (16 bytes) :
00000000 0c 00 00 00 33 37 32 33 36 34 33 63 39 38 36 39 |....3723643c9869|
00000010
rbd_directory会增加刚刚的创建的rbdName及其prefix,rbd_directory文件就是这个pool里面的所有RBD的索引。
查看 rbd_id.foo 中的内容:
[root@node3 ~]# rados -p testpool get rbd_id.foo rbd_id.foo
[root@node3 ~]# hexdump -vC rbd_id.foo
00000000 0c 00 00 00 33 37 32 33 36 34 33 63 39 38 36 39 |....3723643c9869|
00000010
每个RBD刚创建(format 2)时都会生成一个rbd_id.rbdName这样的文件,里面保存了这个块的prefix。
查看 rbd_header.3723643c9869 中的内容:
[root@node3 ~]# rados -p testpool listomapvals rbd_header.3723643c9869
create_timestamp
value (8 bytes) :
00000000 4c eb ea 59 0d f4 01 06 |L..Y....|
00000008
features
value (8 bytes) :
00000000 3d 00 00 00 00 00 00 00 |=.......|
00000008
object_prefix
value (25 bytes) :
00000000 15 00 00 00 72 62 64 5f 64 61 74 61 2e 33 37 32 |....rbd_data.372|
00000010 33 36 34 33 63 39 38 36 39 |3643c9869|
00000019
order
value (1 bytes) :
00000000 16 |.|
00000001
size
value (8 bytes) :
00000000 00 00 00 40 00 00 00 00 |...@....|
00000008
snap_seq
value (8 bytes) :
00000000 00 00 00 00 00 00 00 00 |........|
00000008
rbd_header 保存的是一个 RBD 镜像的元数据
再创建一个镜像,看看 testpool 中的对象和 rbd_directory 有什么变化:
[root@node3 ~]# rbd create testpool/myimage --size 100 --order 23
[root@node3 ~]# rbd -p testpool ls
foo
myimage
查看testpool中存储的内容:
[root@node3 ~]# rados -p testpool ls|sort
rbd_directory
rbd_header.3723643c9869
rbd_header.3734643c9869
rbd_id.foo
rbd_id.myimage
rbd_info
rbd_object_map.3723643c9869
rbd_object_map.3734643c9869
可以看到多了myimage相关的内容,再看看 rbd_directory 中的内容:
[root@node3 ~]# rados -p testpool listomapvals rbd_directory
id_3723643c9869
value (7 bytes) :
00000000 03 00 00 00 66 6f 6f |....foo|
00000007
id_3734643c9869
value (11 bytes) :
00000000 07 00 00 00 6d 79 69 6d 61 67 65 |....myimage|
0000000b
name_foo
value (16 bytes) :
00000000 0c 00 00 00 33 37 32 33 36 34 33 63 39 38 36 39 |....3723643c9869|
00000010
name_myimage
value (16 bytes) :
00000000 0c 00 00 00 33 37 33 34 36 34 33 63 39 38 36 39 |....3734643c9869|
00000010
从上面的内容可以看出:rbd_directory 中保存了pool内所有image的 ID 和 name 信息。
3. 删除镜像:
[root@node3 ~]# rbd rm testpool/myimage
Removing image: 100% complete...done.
[root@node3 ~]# rbd -p testpool ls
foo
4. 映射使用rbd:
4.1. 映射镜像:
[root@node3 ~]# rbd map testpool/foo
/dev/rbd0
映射镜像如果提示 rbd: sysfs write failed,参考 映射块设备提示rbd: sysfs write failed的解决方法
4.2. 格式化该设备:
[root@node3 ~]# mkfs.xfs /dev/rbd0
meta-data=/dev/rbd0 isize=512 agcount=9, agsize=31744 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=1024 swidth=1024 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
4.3. 挂载该设备:
[root@node3 ~]# mkdir foo
[root@node3 ~]# mount /dev/rbd0 foo/
[root@node3 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 18G 1.7G 16G 10% /
devtmpfs 482M 0 482M 0% /dev
tmpfs 493M 0 493M 0% /dev/shm
tmpfs 493M 26M 468M 6% /run
tmpfs 493M 0 493M 0% /sys/fs/cgroup
/dev/sda1 497M 171M 326M 35% /boot
tmpfs 99M 0 99M 0% /run/user/0
/dev/sdb1 97M 13M 84M 14% /var/lib/ceph/osd/ceph-2
/dev/sdc1 97M 23M 74M 24% /var/lib/ceph/osd/ceph-5
/dev/rbd0 1014M 33M 982M 4% /root/foo
上面的33M就是刚格式化完的xfs系统的大小,此时查看集群发生的变化,观察下:
[root@node3 ~]# rados -p testpool ls|sort
rbd_data.3723643c9869.0000000000000000
rbd_data.3723643c9869.0000000000000001
rbd_data.3723643c9869.000000000000001f
rbd_data.3723643c9869.000000000000003e
rbd_data.3723643c9869.000000000000005d
rbd_data.3723643c9869.000000000000007c
rbd_data.3723643c9869.000000000000007d
rbd_data.3723643c9869.000000000000007e
rbd_data.3723643c9869.000000000000009b
rbd_data.3723643c9869.00000000000000ba
rbd_data.3723643c9869.00000000000000d9
rbd_data.3723643c9869.00000000000000f8
rbd_data.3723643c9869.00000000000000ff
rbd_directory
rbd_header.3723643c9869
rbd_header.3752643c9869
rbd_id.foo
rbd_id.foo1
rbd_info
比刚刚多了13个文件,这些文件的后缀缀是以16进制进行编码的,那么从0x00 -> 0xff是多大呢,就是十进制的256。可是这里只有13个文件,并没有256个,这就是RBD的精简置备的一个验证,刚刚创建foo的时候,一个都没有呢,而这里多出的13个,是因为刚刚格式化成xfs时生成的。
查看头两个对象:
[root@node3 ~]# rados -p testpool get rbd_data.3723643c9869.0000000000000000 rbd_data.3723643c9869.0000000000000000
[root@node3 ~]# hexdump -vC rbd_data.3723643c9869.0000000000000000|more
00000000 58 46 53 42 00 00 10 00 00 00 00 00 00 04 00 00 |XFSB............|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000020 0d d3 5d 60 90 8c 42 d4 9f 72 90 53 4b 4f b1 4c |..]`..B..r.SKO.L|
……
[root@node3 ~]# ll rbd* -h
-rw-r--r-- 1 root root 128K 10月 21 17:29 rbd_data.3723643c9869.0000000000000000
-rw-r--r-- 1 root root 32K 10月 21 17:31 rbd_data.3723643c9869.0000000000000001
[root@node3 ~]# file rbd_data.3723643c9869.0000000000000000
rbd_data.3723643c9869.0000000000000000: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)
[root@node3 ~]# file rbd_data.3723643c9869.0000000000000001
rbd_data.3723643c9869.0000000000000001: data
查看第一个对象,开头就是XFSB,可以验证这是刚刚mkfs.xfs留下来的,这时候查看文件大小,发现并没有4M那么大,别担心一会会变大的,值得关注的是file第0x00个对象,输出居然是XFS filesystem data,进一步验证了刚刚mkfs.xfs的足迹,这和整个块的file信息是一样的
参考文献:
查看,创建,删除,映射rbd镜像的更多相关文章
- [Git]Git指南一 查看创建删除标签
1. 查看标签 列出现有标签,使用如下命令: xiaosi@yoona:~/code/learningnotes$ git tag r-000000-000000-cm.cm v1.0.0 v1.0. ...
- linux专题一之文件管理(目录结构、创建、查看、删除、移动)
在linux系统中一切都是文件./ 在linux中为根目录,是一切文件的根目录.本文将通过linux系统的目录结构和与linux文件操作有关的相关命令(touch.mkdir.cp.mv.mv.les ...
- Docker 创建、运行、查看、删除容器
Docker 创建.运行.查看.删除容器 Step 1: 查看docker程序是否存在, 功能是否正常. sudo docker info 若不正常请参考下文: Docker安装和程序创建 Step ...
- MongoDB索引管理-索引的创建、查看、删除
索引是提高查询查询效率最有效的手段.索引是一种特殊的数据结构,索引以易于遍历的形式存储了数据的部分内容(如:一个特定的字段或一组字段值),索引会按一定规则对存储值进行排序,而且索引的存储位置在内存中, ...
- 索引-mysql索引创建、查看、删除及使用示例
mysql索引创建.查看.删除及使用示例 1.创建索引: ALTER TABLE用来创建普通索引.UNIQUE索引或PRIMARY KEY索引. ALTER TABLE table_name ADD ...
- 【学习随手记】kubeadm 查看创建集群需要的镜像版本,附拉取镜像脚本
查看创建集群需要的镜像版本 kubeadm config images list [--kubernetes-version <version>] 国内拉取镜像脚本 一般而言,直接使用ku ...
- 创建 tomcat 服务的镜像
如何设计 Tomcat 的 Dockerfile $ sudo docker search tomcat |wc -l 285 在 dockerhub 上搜索与 tomcat 相关的镜像,有如此之多的 ...
- 重构rbd镜像的元数据
这个已经很久之前已经实践成功了,现在正好有时间就来写一写,目前并没有在其他地方有类似的分享,虽然我们自己的业务并没有涉及到云计算的场景,之前还是对rbd镜像这一块做了一些基本的了解,因为一直比较关注故 ...
- ceph 006 rbd高级特性 rbd快照 镜像克隆 rbd缓存 rbd增量备份 rbd镜像单向同步
版本 [root@clienta ~]# ceph -v ceph version 16.2.0-117.el8cp (0e34bb74700060ebfaa22d99b7d2cdc037b28a57 ...
随机推荐
- ElasticSearch入门常用命令
基于开源项目MyAlice智能客服学习ElasticSearch https://github.com/hpgary/MyAlice/wiki/%E7%AC%AC01%E7%AB%A0%E5%AE%8 ...
- 考勤助手——基于CS三层结构的子系统设计
因为小组比较倾向于cs分层结构的风格,所以基于对考勤助手最初的体系架构的设计进行了子系统的分层设计,如下图: 1.教务老师安排课程子系统 2.教务老师查询相关信息的子系统 3.任课教师管理考勤子系统 ...
- Java -- JDBC 操作mysql数据库
1. Demo1 导包时 不要导具体的mysql包, 为了兼容性,导JDBC 中 sql的包既可以了. public class Demo1 { /** * @param args * @throws ...
- (转)Openstack Cascading和Nova Cell
Openstack是看着AWS成长起来的,这点毋庸置疑:所以AWS大规模商用已成事实的情况下,Openstack也需要从架构和产品实现上进行优化,以满足大规模商用的要求.从已有的实现来看其中两种方式值 ...
- python中的excel操作
一. Excel在python中的应用 存测试数据 有的时候大批量的数据,我们需要存到数据库中,在测试的时候才能用到.测试的时候就从数据库中读取出来.这点是非常重要的! 存测试结果 二. Excel中 ...
- 2015 Benelux Algorithm Programming Contest (BAPC 15)E - Excellent Engineers
这题想了很久没思路,不知道怎么不sort维护二维的最小值 emmmm原来是线段树/树状数组,一维sort,二维当成下标,维护三维的最小值 #include<bits/stdc++.h> # ...
- hdu2243 ac自动机+矩阵快速幂
和上一题有点相似,但是这题是求包含的,并且还要求和 可以求所有情况-不包含的情况,所有情况可用矩阵快速幂求得 还有一点就是如果题目说答案余2^64,直接开unsigned long long就行了,会 ...
- iTunes 12恢复.ipsw固件
恢复.ipsw步骤: 1. 下载好与移动设备对应的.ipsw固件(zip文件可以解压出来). 2. 将移动设备连接到安装有iTunes的电脑,解锁并信任这台电脑 3. 启动iTunes,选择这个移动设 ...
- LKDBHelper Sqlite操作数据库
首先这里要说明一下,为什么用FMDB而不用Core Data呢,因为我们不知道Core Data是如何映射对象里面的属性关系的,如果我们更改了属性的话,就会报错 首先是创建LKDBHelper对象 L ...
- Admin和单例模式
admin功能定制 两种定制方式: 方式一: class UserConfig(admin.ModelAdmin): list_display = ('user', 'pwd',) admin.sit ...