ob 磁盘空间使用查询

【产品名称】开源 OceanBase

【产品版本】3.1.1

【问题描述】我有3个zone,每个zone下面一个obs、结构为1-1-1 。配置为 16c/64G/2T 、假设现在每个observer的磁盘都使用到了1.8T、存储空间不足。现在扩容集群规模为2-2-2、新增的3个obs配置依然为16c/64G/2T、unit_unmber改为2、在数据量不变的情况下、集群可用计算资源48c/192G,数据完全平衡完以后,每个obs节点磁盘占用是900G吗?还是后加入的OBS每个节点占用还是1.8T?

1、由于目前OB中datafile_size参数或者datafile_disk_percentage参数不支持调小,命令行中调小可以执行成功,但文件并不会缩小。

2、OB在开始部署的时候磁盘上的数据文件block_file就是预分配的,虽然可以通过扩容将一部分分区的数据迁移到扩容后的节点,并最终均衡,但实际文件的大小并不会缩小。

3、可以尝试扩容后尝试滚动重做节点的方式在启动的时候指定-o datafile_size来达到缩减数据文件的目的。

可以参考视频:https://open.oceanbase.com/docs/videoCenter/5900003

说明:重做节点是高危动作,需要谨慎操作。

意思是OB的存储只能纵向扩容,不能横向扩容吗、

我明白您说的意思,如果我的存储容量是2T  datafile_disk_percentage=80、也就是集群启动后磁盘会占用1.6T的空间,但是其实里面是没有数据的,类似于vmware厚卷的概念。只是OB把磁盘先占用上了,担并不是实际数据是1.6T。如果我1-1-1的集群、每个OBS节点的数据量为1.4T,也就是说我还有200G的可用空间。扩容集群为2-2-2、那么后3个obs起来,集群集群的配置磁盘占用肯定还是服务启动后就会占用1.6T的空间、那么问题来来,后加入的这3个obs,实际数据量是多少,还是每个节点1.4T吗。还是6个节点会平分数据

如果新增的observer分别对应原来的每个zone,那么实际使用的磁盘空间是扩容后的6个节点平分。

如果新增的observer对应新的3个zone,那么所有的6个节点的磁盘使用空间跟扩容前的一致,每个zone都有全一份全量数据。

就是同zone下增加。 1-1-1 扩容为 2-2-2、 还是3个zong,只不过是扩容后没个zone下是2个obs了、如果原来每个节点实际数据是1.4T,新增后每个节点实际数据大小是700G了吗

全量数据是针对zone来说的吧,不管同一集群下多少个zone,每个zone下都有一份全量的数据。和OBS没有关系。如果zone1下有一个OBS,那么这个OBS放的就是zone1的全量数据。如果zone1下有4个OBS,那么zone1的全量数据是平分在4个obs下。是这样么

是的

那实际数据大小怎么统计啊,如图,现在是1-1-1、节点use大小就是实际数据量,如果2-2-2,是要把一个zone下大小相加吗

__all_virtual_disk_stat可以跟 __all_server之类的表进行关联查询,如:

select zone,sum(d.used_size) from __all_server s, __all_virtual_disk_stat d where s.svr_ip=d.svr_ip and s.svr_port=d.svr_port group by s.zone;

好的,感谢工程师