Nodejs 环境下 nitrous parts 安装 mongodb 无法启动成功

Nodejs 环境下 nitrous parts 安装 mongodb 无法启动成功

: errno:122 Disk quota exceeded. will try again in 10 seconds Fri Jan 24 05:35:55.775 [initandlisten] Assertion: 12520:new file allocation failure Fri Jan 24 05:35:55.775 [initandlisten] exception in initAndListen: 12520 new file allocation failure, terminating Fri Jan 24 05:35:55.775 dbexit: Fri Jan 24 05:35:55.775 [initandlisten] shutdown: going to close listening sockets… Fri Jan 24 05:35:55.775 [initandlisten] shutdown: going to flush diaglog… Fri Jan 24 05:35:55.775 [initandlisten] shutdown: going to close sockets… Fri Jan 24 05:35:55.775 [initandlisten] shutdown: waiting for fs preallocator… Fri Jan 24 05:35:55.775 [initandlisten] shutdown: lock for final commit… Fri Jan 24 05:35:55.775 [initandlisten] shutdown: final commit… Fri Jan 24 05:35:55.776 [FileAllocator] allocating new datafile /home/action/.parts/var/mongodb/local.0, filling with zeroes… Fri Jan 24 05:35:55.779 [initandlisten] shutdown: closing all files… Fri Jan 24 05:35:55.780 [initandlisten] closeAllFiles() finished Fri Jan 24 05:35:55.780 [initandlisten] journalCleanup… Fri Jan 24 05:35:55.780 [initandlisten] removeJournalFiles Fri Jan 24 05:35:55.783 [FileAllocator] FileAllocator: posix_fallocate failed: errno:122 Disk quota exceeded falling back Fri Jan 24 05:35:55.786 [FileAllocator] error: failed to allocate new file: /home/action/.parts/var/mongodb/local.0 size: 16777216 failure creating new datafile; lseek failed for fd 8 with errno : errno:122 Disk quota exceeded. will try again in 10 seconds Fri Jan 24 05:35:55.797 [initandlisten] shutdown: removing fs lock… Fri Jan 24 05:35:55.797 dbexit: really exiting now


6 回复

Node.js 环境下 Nitrous Parts 安装 MongoDB 无法启动成功

在 Node.js 环境下使用 Nitrous Parts 安装 MongoDB 时,如果遇到 MongoDB 无法启动的问题,通常会伴随着一些错误信息。根据你提供的日志,错误主要集中在磁盘配额不足(Disk quota exceeded)上。

错误分析

从日志中可以看到,MongoDB 在尝试分配新的数据文件时失败了,错误信息为 errno:122 Disk quota exceeded。这表明当前用户所使用的磁盘空间已经达到了上限,MongoDB 无法再分配更多的磁盘空间来创建新的数据文件。

解决方案

解决这个问题的方法通常是增加磁盘配额或清理不必要的文件以释放磁盘空间。具体操作取决于你的云服务提供商。以下是几种可能的解决方案:

  1. 检查磁盘使用情况: 使用以下命令检查当前磁盘使用情况:

    df -h
    
  2. 清理不必要的文件: 删除一些不再需要的文件或临时文件,例如日志文件、缓存文件等。

    rm -rf /path/to/unused/files
    
  3. 增加磁盘配额: 如果你有权限,可以联系云服务提供商增加磁盘配额。对于 Nitrous Parts 特定的情况,你可能需要通过其控制面板进行操作。

示例代码

这里提供一个简单的脚本,用于检查磁盘使用情况并删除一些临时文件以释放空间:

const exec = require('child_process').exec;

// 检查磁盘使用情况
exec('df -h', (error, stdout, stderr) => {
    if (error) {
        console.error(`执行出错: ${stderr}`);
        return;
    }
    console.log(`磁盘使用情况:\n${stdout}`);
});

// 删除临时文件
exec('rm -rf /tmp/*', (error, stdout, stderr) => {
    if (error) {
        console.error(`删除文件出错: ${stderr}`);
        return;
    }
    console.log(`临时文件已删除`);
});

总结

当 MongoDB 在 Node.js 环境下安装过程中无法启动时,首先应该检查磁盘使用情况。如果发现磁盘空间不足,可以通过删除不必要的文件或增加磁盘配额来解决问题。希望以上建议能帮助你成功启动 MongoDB。


为什么总是显示 error: failed to allocate new file: /home/action/.parts/var/mongodb/local.0 size: 16777216 failure creating new datafile; lseek failed for fd 8 with errno

难道free的Nitrous account不能创建16M的数据文件?

mongodb.conf 配置文件 dbpath = /home/action/.parts/var/mongodb pidfilepath = /home/action/.parts/var/mongodb/mongod.pid logpath = /home/action/.parts/var/log/mongodb/mongod.log logappend = true bind_ip = 127.0.0.1 smallfiles = true

找到问题了,nitrous免费用户只支持750M空间,创建了mongodb后就已经748M了。 就是说不购买服务,是没法用mongodb的。。没有数据库支持的nitrous。。也不知有撒用。。:S

?不会啊。我用mongodb和redis都没问题。

parts install mongodb parts start mongodb

难道你是手动安装的?

根据错误信息 errno:122 Disk quota exceeded,问题出在磁盘空间不足或磁盘配额用完。这通常意味着MongoDB尝试创建新的数据文件时没有足够的磁盘空间或权限。

解决方案:

  1. 检查磁盘使用情况

    df -h
    

    这将显示当前磁盘使用情况。确认是否有足够的可用空间。

  2. 清理不必要的文件: 删除一些不需要的文件以释放空间。

    rm -rf /path/to/unneeded/files
    
  3. 增加磁盘空间: 如果你使用的是虚拟机或云服务,考虑增加磁盘空间。

  4. 检查磁盘配额: 使用以下命令检查用户磁盘配额:

    quota
    

    如果超过配额,需要联系管理员提升配额。

示例代码(用于测试环境):

如果你在本地开发环境中遇到此问题,可以考虑增加磁盘空间。例如,在Docker容器中运行MongoDB时,可以调整磁盘空间限制:

docker run -v /local/path:/data/db -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=password --storage-opt size=10G mongo

这里的 --storage-opt size=10G 设置了10GB的存储限制,可以根据需要调整大小。

以上步骤应该能够解决 Disk quota exceeded 的问题。如果问题仍然存在,请提供更多关于系统环境的信息以便进一步诊断。

回到顶部