Ceph RBD 镜像的实际大小

shan

RBD 镜像采用稀疏分配,因此你并不总是知道镜像的实际大小。此外,Ceph 也没有提供任何简单的工具来检查镜像的实际大小。这篇博文的灵感来自 Ceph 邮件列表

创建镜像

1
$ rbd create -s 1024 toto

使用块差异的魔法公式

1
2
$ rbd diff rbd/tota | awk '{ SUM += $2 } END { print SUM/1024/1024 " MB" }'
0 MB

进一步测试

1
2
3
4
5
6
7
8
9
10
$ rbd map toto

$ rbd showmapped
id pool image snap device
2  rbd  toto  - /dev/rbd1

$ dd if=/dev/zero of=/dev/rbd1 bs=1M count=10 oflag=direct
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 6.91826 s, 1.5 MB/s

所以我们写入了 10M,应该在输出中得到 10MB :).

1
2
$ rbd diff rbd/toto | awk '{ SUM += $2 } END { print SUM/1024/1024 " MB" }'
10 MB

感谢 Olivier Bonvalet 提供的 AWK 命令。