【问题标题】:I can't open Cassandra because of insufficient disk space to write由于磁盘空间不足,我无法打开 Cassandra
【发布时间】:2018-01-17 11:41:45
【问题描述】:

我设置了一个新的 Cassandra 并使用./cassandra 打开它,但它失败了。在system.log中显示如下错误:

ERROR 13:30:31 Exception encountered during startup java.lang.RuntimeException: java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.RuntimeException: Insufficient disk space to write 542 bytes
    at org.apache.cassandra.db.ColumnFamilyStore.runWithCompactionsDisabled(ColumnFamilyStore.java:2888) ~[apache-cassandra-2.2.10.jar:2.2.10]
    at org.apache.cassandra.db.ColumnFamilyStore.truncateBlocking(ColumnFamilyStore.java:2849) ~[apache-cassandra-2.2.10.jar:2.2.10]
    at org.apache.cassandra.db.SystemKeyspace.discardCompactionsInProgress(SystemKeyspace.java:404) ~[apache-cassandra-2.2.10.jar:2.2.10]
    at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:230) [apache-cassandra-2.2.10.jar:2.2.10]
    at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:533) [apache-cassandra-2.2.10.jar:2.2.10]
    at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:642) [apache-cassandra-2.2.10.jar:2.2.10] Caused by: java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.RuntimeException: Insufficient disk space to write 542 bytes
    at org.apache.cassandra.utils.FBUtilities.waitOnFuture(FBUtilities.java:394) ~[apache-cassandra-2.2.10.jar:2.2.10]
    at org.apache.cassandra.db.SystemKeyspace.forceBlockingFlush(SystemKeyspace.java:593) ~[apache-cassandra-2.2.10.jar:2.2.10]
    at org.apache.cassandra.db.SystemKeyspace.saveTruncationRecord(SystemKeyspace.java:432) ~[apache-cassandra-2.2.10.jar:2.2.10]
    at org.apache.cassandra.db.ColumnFamilyStore$13.run(ColumnFamilyStore.java:2843) ~[apache-cassandra-2.2.10.jar:2.2.10]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_141]
    at org.apache.cassandra.db.ColumnFamilyStore.runWithCompactionsDisabled(ColumnFamilyStore.java:2884) ~[apache-cassandra-2.2.10.jar:2.2.10]           ... 5 common frames omitted Caused by: java.util.concurrent.ExecutionException: java.lang.RuntimeException: Insufficient disk space to write 542 bytes
    at com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:299) ~[guava-16.0.jar:na]
    at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:286) ~[guava-16.0.jar:na]
    at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116) ~[guava-16.0.jar:na]
    at org.apache.cassandra.utils.FBUtilities.waitOnFuture(FBUtilities.java:390) ~[apache-cassandra-2.2.10.jar:2.2.10]           ... 10 common frames omitted Caused by: java.lang.RuntimeException: Insufficient disk space to write 542 bytes
    at org.apache.cassandra.db.Directories.getWriteableLocation(Directories.java:349) ~[apache-cassandra-2.2.10.jar:2.2.10]
    at org.apache.cassandra.db.Memtable.flush(Memtable.java:324) ~[apache-cassandra-2.2.10.jar:2.2.10]
    at org.apache.cassandra.db.ColumnFamilyStore$Flush.run(ColumnFamilyStore.java:1187) ~[apache-cassandra-2.2.10.jar:2.2.10]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_141] 

命令“df -h”的输出:

root@srv-machine-learning01:/var/lib/cassandra# df -h

Filesystem                                   Size  Used Avail Use% Mounted on

/dev/xvda1                                        61G   60G     0 100% /

udev                                              10M     0   10M   0% /dev

tmpfs                                            2.4G  8.3M  2.4G   1% /run

tmpfs                                            5.9G     0  5.9G   0% 

/dev/shm

tmpfs                                            5.0M     0  5.0M   0% 

/run/lock

tmpfs                                            5.9G     0  5.9G   0% 

/sys/fs/cgroup

bak02.sovanta.com:/volume1/bak_machine_learning   70T   19T   52T  27% 

【问题讨论】:

  • 您使用哪种操作系统?它的驱动器上有多少可用空间?您的数据目录的权限设置是否正确?
  • linux 3.16.0-4-amd64,存储Cassandra的空间足够大。你说的权限是什么意思?因为我使用的是Cassandra的二进制版本,所以我认为数据会默认存放在cassandra/data目录下,我没有设置var/lib/data目录。
  • whats output of df and whats your data_file_directories set to in cassandra.yaml
  • data_file_directories 在 cassandra.yaml 中有注释,我没有为数据设置任何目录,它是默认的。
  • 您能否取消注释 Cassandra.yaml 中的 data_file_directories 并将其显式设置为您知道有可用空间的目录。

标签: java cassandra cqlsh


【解决方案1】:

您的根文件系统似乎已满。

/dev/xvda1 61G 60G 0 100% /

由于 Cassandra 默认将数据存储在 /var/lib/cassandra 中,并且您没有为此路径设置不同的文件系统,因此它将使用您的根文件系统。对于这个问题,我可以想出几个解决方案。

  • 释放根分区上的空间
  • 为根文件系统增加磁盘空间
  • 向您的系统添加一个新磁盘并创建一个挂载到 /var/lib/cassandra 的新文件系统

【讨论】:

    【解决方案2】:

    去 mchine 并手动删除未使用的 cassandra 架构。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-08
      • 2013-10-09
      • 2015-12-04
      • 2015-12-30
      相关资源
      最近更新 更多