Linux及OpenShift Gerrit查询仓库占用大小的命令与方法
报错原因
之前执行du -sch $(ls -A)出现报错、结果不准的原因:
- 命令遍历了整个根目录,包含
/proc、/sys这类系统虚拟目录、/root这类普通用户无权限的系统目录,必然会报权限不足 /proc下存的是运行中进程的临时文件,遍历过程中进程退出、文件销毁就会触发文件不存在的报错- 命令没有指定Gerrit仓库的实际存储路径,统计的是整个系统的文件大小,和目标仓库占用结果完全无关
OpenShift上Gerrit仓库大小查询方法
容器内直接查询
OpenShift部署的Gerrit默认仓库存储路径为/var/gerrit/review_site/git/,直接指定该路径统计即可,不需要遍历全系统:
- 统计所有仓库各自的占用大小:
du -sh /var/gerrit/review_site/git/*
- 统计所有仓库总占用大小:
du -sch /var/gerrit/review_site/git/
如果执行时仍有零散权限报错,把错误输出重定向丢弃即可,不影响仓库目录的统计结果:
du -sch /var/gerrit/review_site/git/ 2>/dev/null
如果你的Gerrit做过自定义存储配置,先查看/var/gerrit/review_site/etc/gerrit.config中gerrit.basePath字段对应的实际路径,替换上述命令中的路径即可
通过oc命令在集群侧查询
如果没有容器交互权限,直接用OpenShift的oc工具查询即可:
- 先定位Gerrit所在命名空间下的Pod:
oc get pods -n <Gerrit所属项目命名空间> | grep gerrit
- 直接远程执行du命令查询仓库大小,不需要进入容器:
oc exec -n <命名空间> <上一步查到的Gerrit Pod名> -- du -sch /var/gerrit/review_site/git/ 2>/dev/null
如果需要查看Gerrit持久化存储的整体占用,直接查询对应PVC的使用量:
oc get pvc -n <命名空间> | grep gerrit
返回结果中CAPACITY为存储总容量,USED为已使用空间。
通过Gerrit自带工具查询
Gerrit集成的jgit工具可以统计仓库实际Git对象占用,结果比du更精准(不含文件系统块冗余占用):
java -jar /var/gerrit/bin/gerrit.war jgit count-objects -H /var/gerrit/review_site/git/<目标仓库名>.git
返回结果里的size-pack字段就是对应仓库的实际存储大小。
内容的提问来源于stack exchange,提问作者passion23
相关产品推荐
相关产品推荐

