疑似tikv bug

每次tikv 错误日志出现这个信息,tikv 就重启了,这应该是BUG吧,请原厂的老师帮忙确认下
failed to initialize rocksdb log with file /X/rocksdb.info: Permission denied (os error 13)
thread ‘archive-worker-0’ panicked at components/tikv_util/src/logger/file_log.rs:279:45:
called Result::unwrap() on an Err value: Os { code: 2, kind: NotFound, message: “No such file or directory” }
note: run with RUST_BACKTRACE=1 environment variable to display a backtrace
thread ‘archive-worker-0’ panicked at components/tikv_util/src/logger/file_log.rs:279:45:
called Result::unwrap() on an Err value: Os { code: 2, kind: NotFound, message: “No such file or directory” }
note: run with RUST_BACKTRACE=1 environment variable to display a backtrace
thread ‘archive-worker-0’ panicked at components/tikv_util/src/logger/file_log.rs:279:45:
called Result::unwrap() on an Err value: Os { code: 2, kind: NotFound, message: “No such file or directory” }
note: run with RUST_BACKTRACE=1 environment variable to display a backtrace

code: 2, kind: NotFound, message: “No such file or directory

看起来是目录没了

看这个日志,应该是X目录下权限不足导致的RocksDB 日志初始化失败

权限被拒:Permission denied (os error 13) → TiKV 进程无权限写 /X/rocksdb.info。
文件 /
目录不存在:Os { code: 2, … No such file or directory } → 日志目录未创建或路径错误。
panic 触发重启:archive-worker-0 线程在初始化日志时 unwrap 失败,直接 panic → 进程退出被 systemd 拉起。

权限被拒绝 (Permission denied)

假设 TiKV 数据目录在 /X/ 或类似位置

ls -ld /X/ 要755 权限

其实我也不知道是哪个目录没了

权限没问题的,无论是/X/rocksdb.info,还是X目录 属主和属组都是tidb,而且
/X/rocksdb.info 已经有数据在写入了

  • 临时用 root 启动 TiKV 验证是否为权限问题(生产不推荐)。
  • 配置 log.file.filename/tmp 等全局可写目录,快速恢复服务。

文件系统权限 + 日志归档路径配置 / 目录不存在导致的 TiKV 进程 panic 重启

tiup 里面有描述 tikv 的目录信息的,然后去 tikv 节点上检查

failed to initialize rocksdb log with file /X/rocksdb.info: Permission denied (os error 13) 你这个没有权限

更偏向环境问题,不是 TiKV 核心 BUG

原因:

TiKV 使用 Rust。

Rust 中:

unwrap()

如果失败会 panic。

TiKV 设计是:

日志目录初始化失败 → 直接 panic → 重启

这是为了避免:

日志不可写但服务继续运行。

属于:

Fail Fast 机制

1 个赞

最常见触发原因 :warning:

生产中出现这种错误,一般是下面几种。


:one: 目录权限被修改(最常见)

例如:

/data/tidb/tikv/

原来:

tikv:tikv

后来被改成:

root:root

chmod 改错。

导致:

TiKV 无法写 rocksdb.info。


检查

在 TiKV 节点执行:

ls -ld /X
ls -l /X

看权限。

例如:

drwx------ root root

就会报错。


正确权限

tikv tikv
755

700

即可。


:two: 日志目录被删除

例如:

rm -rf rocksdb.info
rm -rf log

磁盘清理脚本误删。

导致:

No such file or directory

然后 panic。


检查

ls /X

看 rocksdb.info 是否存在。


:three: 挂载盘异常

例如:

磁盘挂载丢失。

/data 挂载掉了

变成:

空目录

TiKV 无法写入。

就会报:

Permission denied
No such file


检查

df -h
mount

看磁盘是否正常。


:four: 运维脚本改权限

常见:

logrotate
cleanup
自动清理脚本

误改权限。

例如:

chown root

导致 TiKV 无法写

1 个赞

这是运行运行着就重启了

后续部署个脚本监控定时输出一下这个目录权限呢

看看后面还会不会出现

确认路径

ls -ld /X/

查看 SELinux 状态

sestatus

明面上报错是找不到目录了