修改rbd指定位置的数据

标签(空格分隔): ceph,ceph实验



我们通过查看index为0x01的小4M文件,得知了file2.txt这个文件内容在这个4M内保存的位置为0x9000,因为0x01前面还有一个4M文件即0x00,那么这个file2.txt在整个RBD内的偏移量为:4MB+0x9000B=0x400,000B+0x9000B=0x409000B=4231168
也就是说保存在/dev/rbd0的偏移量为0x409000的位置,这时候用dd工具,直接向这个位置写入一个Ceph,再查看file2.txt的内容,果然,被修改了!

[root@node3 ~]# cat foo/file2.txt 
222222222222222222222222222222222222222222

[root@node3 ~]# echo Ceph>ceph
[root@node3 ~]# dd if=ceph  of=/dev/rbd0 seek=4231168 oflag=seek_bytes
记录了0+1 的读入
记录了0+1 的写出
5字节(5 B)已复制,0.0422493 秒,0.1 kB/秒

[root@node3 ~]# hexdump -Cv /dev/rbd0 -n 100 -s 0x409000
00409000  43 65 70 68 0a 32 32 32  32 32 32 32 32 32 32 32  |Ceph.22222222222|
00409010  32 32 32 32 32 32 32 32  32 32 32 32 32 32 32 32  |2222222222222222|
00409020  32 32 32 32 32 32 32 32  32 32 0a 00 00 00 00 00  |2222222222......|
00409030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00409040  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00409050  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00409060  00 00 00 00                                       |....|
00409064
[root@node3 ~]# sync && echo 1 > /proc/sys/vm/drop_caches
[root@node3 ~]# cat foo/file2.txt 
Ceph
2222222222222222222222222222222222222

参考文献:

大话Ceph--RBD那点事儿

原文地址:https://www.cnblogs.com/sisimi/p/7766932.html