插入额外的磁盘后,Cassandra 会重新平衡数据吗?

插入额外的磁盘后,Cassandra 会重新平衡数据吗?

我正在运行一个有 5 个节点的 Cassandra 集群,每个节点有 10 个 1Tb 磁盘 (JBOD)。目前,其中一个节点处于问题状态,由于单个磁盘空间不足,大型压缩无法成功完成。

我试图弄清楚在 JBOD 配置中添加额外的磁盘会产生什么效果。

  1. 现有数据是否会自动重新分配以最佳地利用新磁盘?
  2. 新添加的磁盘是否只会写入新数据?
  3. 我可以手动将 sstables 移动到不同的磁盘吗?
  4. 拆分 sstables 是一种选择吗?

我在网上找到了一些不完全确定的资料:

答案1

新数据和压缩期间都会写入新磁盘。实际逻辑取决于 Cassandra 版本,例如,较新的版本将特定分区范围放入特定磁盘。通常的建议是使用 RAID-0 来拥有一个大磁盘,这样您就不会遇到大 SSTables 的问题。但这种方法有一个缺点 - 如果您丢失一个磁盘,您将丢失所有数据并需要重建所有内容。

理论上,您可以手动将一些 SSTable 移动到其他磁盘(假设该节点已停止),然后 Cassandra 将在压缩期间重新分配数据,但我尚未针对此配置尝试过。该操作还有另一个问题 - 如果您移动一些 SSTable,并且它已删除或更新了被另一个磁盘上较新数据覆盖的数据,并且如果该磁盘崩溃,那么您可以恢复已删除/旧的数据。

PS 每个节点 10Tb 太疯狂了。想想如果服务器坏了,重建一个节点需要多长时间。

相关内容