Cassandra EC2节点异常关机:FileSystemException权限问题求助
Cassandra EC2节点因权限问题异常关机的排查与解决办法
问题根源
从日志可知,Cassandra在尝试为快照文件创建硬链接时被拒绝:
java.nio.file.FileSystemException: /var/lib/cassandra/data/dev_fortis_mtd/explanationofbenefit-5fb6576031e511ec8611d5b080c74d01/snapshots/dropped-1666726203042-explanationofbenefit/mc-1-big-Summary.db -> /var/lib/cassandra/data/dev_fortis_mtd/explanationofbenefit-5fb6576031e511ec8611d5b080c74d01/mc-1-big-Summary.db: 操作不被允许
由于disk_failure_policy被设置为stop,触发了节点自动关机逻辑。
解决步骤
1. 修复数据目录权限
确保Cassandra运行用户(默认是cassandra)拥有数据目录的完整权限:
# 递归设置目录所有权 sudo chown -R cassandra:cassandra /var/lib/cassandra/data # 设置目录与文件的读写执行权限 sudo chmod -R 750 /var/lib/cassandra/data
2. 检查文件系统硬链接支持
如果EC2节点使用EFS作为数据存储,EFS默认不支持硬链接,需修改Cassandra配置禁用硬链接:
- 编辑
cassandra.yaml配置文件,找到hard_link_before_delete参数,修改为:hard_link_before_delete: false - 重启Cassandra服务:
sudo systemctl restart cassandra
3. 临时调整磁盘故障策略(应急恢复)
若需快速恢复节点,可临时修改disk_failure_policy避免因权限问题直接关机:
- 编辑
cassandra.yaml,修改磁盘故障策略:disk_failure_policy: warn - 重启服务后,再彻底处理权限或文件系统问题(生产环境不建议长期使用
warn/ignore)。
4. 验证修复结果
- 启动Cassandra后,实时查看日志确认无权限错误:
tail -f /var/log/cassandra/system.log - 手动创建快照测试功能是否正常:
nodetool snapshot dev_fortis_mtd -t test_snapshot - 检查快照目录下的文件是否正常生成,且无操作被拒绝的报错。
注意事项
- 生产环境避免使用EFS作为Cassandra数据盘,EFS不支持硬链接且性能远低于EBS;
- 定期巡检Cassandra数据目录权限,避免因运维操作(如手动修改文件)导致权限变更;
- 正常情况下
disk_failure_policy建议保持stop或stop_paranoid,确保磁盘异常时及时止损。
内容的提问来源于stack exchange,提问作者dheeraj
相关产品推荐
相关产品推荐

