【问题标题】:Disk quota exceeded on OpenShiftOpenShift 上超出磁盘配额
【发布时间】:2015-10-08 03:11:14
【问题描述】:

我刚刚将应用程序部署到 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

【问题讨论】:

  • mongodb/data 可能是您的 dbpath 文件夹 - mongo 存储其数据库文件的文件夹。发布该文件夹的ls -lah。
  • 嘿,@ChristianP,我刚刚更新了答案。

标签: mongodb openshift


【解决方案1】:

对我也有帮助的是禁用journaling

列出完整的步骤

  1. SSH 到您的 OpenShift

    rhc ssh $@ -a $app
    
  2. 在 MongoDB 配置中

    vim ~/mongodb/conf/mongodb.conf
    

    添加或设置

    nojournal = true
    

注意:~ 自动解析为 /var/lib/openshift/<YOUR_OPENSHIFT_ID>

  1. 删除以前的日志数据

    rm ~/mongodb/data/journal/*
    

然后退出SSH,然后

  1. 重启 MongoDB

    rhc cartridge-restart mongodb-2.4 -a $app
    

当然,这是以不写日记为代价的,这对recovering the data in case of corruption or unclean shutdown 很有帮助。但是,如果您只是在进行测试并且空间不足,那么禁用日记功能会很有帮助,因为它会占用大量空间。

【讨论】:

  • 很好的答案!安全我的一天:)
【解决方案2】:

如果您达到磁盘配额,那是因为您达到了大小或 inode 限制。

要修复大小,您可以清理 tmp 文件夹、应用程序日志、git repos 等。您可以使用:

rhc app-tidy -a <appname>

要检查您是否达到 inode 限制,请使用 quota 命令:

quota -s

要解决配额问题,您需要将文件数量保持在最低限度。

如果这没有帮助,您可以尝试关闭 MongoDB 并删除 mongodb 文件夹的内容(即使用 helmy 的建议)。

【讨论】:

    【解决方案3】:

    MongoDB preallocates data files 和 may preallocate journal files。

    如果您的数据库是空的并且/或者您不关心数据,请尝试停止 mongod,然后删除您的数据目录。然后验证/设置以下 mongod 选项:

    smallfiles=true
    noprealloc=true
    

    【讨论】:

    • 当然,我可以删除文件夹,但不确定如何以及在哪里指定远程服务器上的这个 mongod 选项?有什么提示吗?现在,mongod 是由 SailsJS 框架启动的,所以我想我应该在启动它时以某种方式配置它。
    • 转到您的应用程序的 OpenShift 控制台,右侧有一个远程访问链接。如果您还没有设置 ssh 密钥,则可能需要设置。那里有 SSH 帮助页面的链接。在您能够通过 ssh 进入您的 OpenShift 实例后,您应该能够只编辑 /etc/mongod.conf
    • 其实做个ps auxwww | grep mongo 查看正在使用的配置文件。它可能正在使用 /var/lib/openshift//mongodb/conf/mongodb.conf。但它可能已经在使用 smallfiles 和 noprealloc。
    • 好的,当我运行 ps auxwww | grep mongo,这就是我得到的:paste.ofcode.org/K62ETfbYCmipbmdUnpnHft。关于 etc/mongod/conf,我无法编辑它,权限被拒绝:/
    • PS:命令重启 mongod on openshift rhc cartridge-restart mongodb-2.4 -a &lt;app-name&gt;
    【解决方案4】:

    我也有同样的问题。 登录到您的 mongodb 并运行:

    db.repairDatabase()
    

    查看更多信息:MongoDB - file size is huge and growing

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-02
      • 1970-01-01
      • 1970-01-01
      • 2019-04-29
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      相关资源
      最近更新 更多