我刚刚将应用程序部署到OpenShift,它工作正常,直到我推动更改。然后它开始警告我超出了磁盘配额,我再也无法做任何事了。
从终端运行rhc app-tidy [app-name]
给了我这个:
Warning: Gear 5395736e5004467cae0004ba is using 100.0% of disk quota
Failed to execute: 'control start' for /var/lib/openshift/5395736e5004467cae0004ba/nodejs
app-root/logs
文件夹为空。
运行du -h * | sort -rh | head -50
,给我这个:
481M mongodb/data
481M mongodb
385M mongodb/data/journal
275M app-root/runtime
275M app-root
267M app-deployments/2014-06-09_04-51-12.537
267M app-deployments
157M app-root/runtime/repo
156M app-deployments/2014-06-09_04-51-12.537/repo
125M app-root/runtime/repo/node_modules
125M app-deployments/2014-06-09_04-51-12.537/repo/node_modules
119M app-root/runtime/dependencies/.npm
119M app-root/runtime/dependencies
111M app-deployments/2014-06-09_04-51-12.537/dependencies/.npm
111M app-deployments/2014-06-09_04-51-12.537/dependencies
不确定为什么mongodb / data占用了这么多空间,究竟是什么?我的数据库应该是空的。
**更新**
在我的mongodb / data文件夹上运行后,这就是我得到的:
total 97M
drwxr-xr-x. 3 5395736e5004467cae0004ba 5395736e5004467cae0004ba 4.0K Jun 9 05:21 .
drwxr-xr-x. 11 5395736e5004467cae0004ba 5395736e5004467cae0004ba 4.0K Jun 9 04:44 ..
-rw-------. 1 5395736e5004467cae0004ba 5395736e5004467cae0004ba 16M Jun 9 04:45 admin.0
-rw-------. 1 5395736e5004467cae0004ba 5395736e5004467cae0004ba 16M Jun 9 04:45 admin.ns
drwxr-xr-x. 2 5395736e5004467cae0004ba 5395736e5004467cae0004ba 4.0K Jun 9 06:51 journal
-rw-------. 1 5395736e5004467cae0004ba 5395736e5004467cae0004ba 16M Jun 9 06:51 local.0
-rw-------. 1 5395736e5004467cae0004ba 5395736e5004467cae0004ba 16M Jun 9 06:51 local.ns
-rwxr-xr-x. 1 5395736e5004467cae0004ba 5395736e5004467cae0004ba 0 Jun 9 06:51 mongod.lock
-rw-------. 1 5395736e5004467cae0004ba 5395736e5004467cae0004ba 16M Jun 9 04:45 surge.0
-rw-------. 1 5395736e5004467cae0004ba 5395736e5004467cae0004ba 16M Jun 9 04:45 surge.ns
答案 0 :(得分:14)
对我有帮助的是禁用journaling
制定完整的步骤
SSH进入您的OpenShift
rhc ssh $@ -a $app
在MongoDB配置中
vim ~/mongodb/conf/mongodb.conf
添加或设置
nojournal = true
注意:~
会自动解析为/var/lib/openshift/<YOUR_OPENSHIFT_ID>
删除以前的日记帐数据
rm ~/mongodb/data/journal/*
然后退出SSH,
重启MongoDB
rhc cartridge-restart mongodb-2.4 -a $app
当然,这是以非日记为代价的,这对recovering the data in case of corruption or unclean shutdown很有帮助。但是,如果你只是在测试内容并且空间不足,那么禁用日记功能会非常有用,因为它占用了大量空间。
答案 1 :(得分:5)
如果您达到的磁盘配额是因为您达到了大小或inode限制。
要修复大小,您可以清理tmp文件夹,应用程序日志,git repos等。您可以使用:
rhc app-tidy -a <appname>
要检查您是否使用quota
命令来访问inode限制:
quota -s
要解决配额问题,您需要将文件数量保持在最低限度。
如果这没有帮助,您可以尝试关闭MongoDB并删除mongodb
文件夹的内容(即使用helmy的建议)。
答案 2 :(得分:2)
MongoDB preallocates data files和may preallocate journal files。
如果您的数据库是空的和/或您不关心数据,请尝试停止mongod然后吹掉数据目录。然后验证/设置以下mongod选项:
smallfiles=true
noprealloc=true
答案 3 :(得分:0)