You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Nexus创建任务时遭遇OrientDB磁盘空间不足错误求助

Nexus创建任务时数据库错误的成因与解决方法

错误日志

2022-09-23 09:57:34,637+0000 ERROR [status-delayed-tasks-2-thread-1] *SYSTEM com.orientechnologies.orient.core.db.OPartitionedDatabasePool$DatabaseDocumentTxPooled - $ANSI{green {db=component}} Error on transaction commit `52E3D568`
com.orientechnologies.orient.core.exception.OLowDiskSpaceException: Error occurred while executing a write operation to database 'component' due to limited free space on the disk (1751 MB). The database is now working in read-only mode. Please close the database (or stop OrientDB), make room on your hard drive and then reopen the database. The minimal required space is 4096 MB. Required space is now set to 4096MB (you can change it by setting parameter storage.diskCache.diskFreeSpaceLimit) .
        DB name="component"
        at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.checkLowDiskSpaceRequestsAndReadOnlyConditions(OAbstractPaginatedStorage.java:5073)
        at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.commit(OAbstractPaginatedStorage.java:1729)
        at com.orientechnologies.orient.core.tx.OTransactionOptimistic.doCommit(OTransactionOptimistic.java:541)
        at com.orientechnologies.orient.core.tx.OTransactionOptimistic.commit(OTransactionOptimistic.java:99)
        at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.commit(ODatabaseDocumentTx.java:2908)
        at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.commit(ODatabaseDocumentTx.java:2870)
        at org.sonatype.nexus.orient.transaction.OrientTransaction.commit(OrientTransaction.java:74)
        at org.sonatype.nexus.transaction.TransactionalWrapper.proceedWithTransaction(TransactionalWrapper.java:69)
        at org.sonatype.nexus.transaction.Operations.proceedWithTransaction(Operations.java:232)
        at org.sonatype.nexus.transaction.Operations.transactional(Operations.java:223)
        at org.sonatype.nexus.transaction.Operations.run(Operations.java:175)
        at org.sonatype.nexus.orient.transaction.OrientOperations.run(OrientOperations.java:62)
        at org.sonatype.nexus.orient.internal.status.OrientStatusHealthCheckStore.checkWritable(OrientStatusHealthCheckStore.java:82)
        at org.sonatype.nexus.orient.internal.status.OrientStatusHealthCheckStore$$EnhancerByGuice$$180293120.GUICE$TRAMPOLINE(<generated>)
        at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:74)
        at org.sonatype.nexus.common.stateguard.MethodInvocationAction.run(MethodInvocationAction.java:39)
        at org.sonatype.nexus.common.stateguard.StateGuard$GuardImpl.run(StateGuard.java:272)
        at org.sonatype.nexus.common.stateguard.GuardedInterceptor.invoke(GuardedInterceptor.java:54)
        at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:75)
        at com.google.inject.internal.InterceptorStackCallback.invoke(InterceptorStackCallback.java:55)
        at org.sonatype.nexus.orient.internal.status.OrientStatusHealthCheckStore$$EnhancerByGuice$$180293120.checkWritable(<generated>)
        at org.sonatype.nexus.orient.internal.freeze.OrientFreezeService.checkWritable(OrientFreezeService.java:119)
        at org.sonatype.nexus.thread.DatabaseStatusDelayedExecutor.lambda$1(DatabaseStatusDelayedExecutor.java:103)
        at org.sonatype.nexus.thread.DatabaseStatusDelayedExecutor.lambda$0(DatabaseStatusDelayedExecutor.java:90)
        at org.sonatype.nexus.thread.internal.MDCAwareRunnable.run(MDCAwareRunnable.java:40)
        at org.apache.shiro.subject.support.SubjectRunnable.doRun(SubjectRunnable.java:120)
        at org.apache.shiro.subject.support.SubjectRunnable.run(SubjectRunnable.java:108)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:750)

错误成因

这个错误是磁盘空间不足导致的。Nexus依赖的OrientDB数据库检测到磁盘剩余空间仅1751MB,低于其预设的最小阈值4096MB,为避免数据库损坏,自动触发只读保护机制,拒绝所有写入操作(包括创建任务时的事务提交)。

排查与解决步骤

排查操作

  • 验证磁盘剩余空间:登录Nexus所在服务器,执行df -h(Linux系统)或通过系统属性查看磁盘空间(Windows系统),确认Nexus数据存储目录所在磁盘的剩余空间是否确实低于4096MB。
  • 定位空间占用大户:在Linux系统中执行du -sh /path/to/nexus-data/*(替换为实际Nexus数据目录路径),查看目录下各文件夹的大小,快速定位占用空间最多的资源(比如仓库缓存、日志文件等)。

解决方法

  1. 清理磁盘空间(优先推荐)

    • 删除过期日志:找到Nexus安装目录下的logs文件夹,手动删除旧日志文件;也可以配置Nexus的日志滚动策略,让系统自动清理过期日志。
    • 清理无用仓库构件:通过Nexus后台删除不再需要的镜像、快照版本,或创建并执行「删除旧快照」「清理未使用构件」等内置任务释放空间。
    • 清理服务器无关文件:删除服务器上的临时文件、未使用的安装包、备份文件等无关内容,释放磁盘空间。
  2. 调整OrientDB磁盘空间阈值(临时应急)
    如果暂时无法扩容或清理空间,可以临时降低OrientDB要求的最小磁盘空间阈值:

    • 停止Nexus服务
    • 找到Nexus数据目录下的orientdb/config/orientdb-server-config.xml配置文件
    • 添加或修改参数:<parameter name="storage.diskCache.diskFreeSpaceLimit" value="2048"/>(单位为MB,示例设置为2048,可根据实际情况调整)
    • 重启Nexus服务
  3. 磁盘扩容(长期解决方案)
    如果频繁出现空间不足问题,建议对服务器磁盘进行扩容,从根本上解决空间限制。

  4. 恢复数据库可写状态
    当磁盘剩余空间满足要求后,重启Nexus服务,OrientDB会自动退出只读模式,恢复正常的写入功能。

内容的提问来源于stack exchange,提问作者MADHU

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 16:25:15