文章内容
2025/12/2 22:52:28,作 者: 黄兵
FileNotFoundError: [Errno 2] No such file or directory: '/var/cache/swift/object.recon'
错误原因分析
错误日志的核心信息是:
FileNotFoundError: [Errno 2] No such file or directory: '/var/cache/swift/object.recon'
这意味着 OpenStack Swift 的 object-auditor 进程试图将运行状态(Reconnaissance data)写入 /var/cache/swift/ 目录下的 object.recon 文件,但是它发现这个目录不存在,或者没有权限创建文件。
Swift 使用 /var/cache/swift 目录来存储统计信息(recon),供 swift-recon 工具查询集群状态。如果这个目录不存在,或者 swift 用户无法写入,所有的后台进程都会疯狂报错。
✅ 解决方案
你需要创建这个目录并赋予正确的权限。
请以 root 身份在服务器上执行以下命令:
# 1. 创建目录 sudo mkdir -p /var/cache/swift # 2. 修改目录的所有者为 swift 用户和组 # (假设你的 Swift 服务是用 swift 用户运行的,这是标准做法) sudo chown -R swift:swift /var/cache/swift # 3. 设置目录权限 (确保 swift 用户可读写) sudo chmod 755 /var/cache/swift
验证修复
执行完上述命令后,你可以重启一下 object-auditor 服务,或者直接观察日志,错误应该会立即消失。
# 重启服务 (根据你的服务名调整) sudo systemctl restart swift-object-auditor # 再次查看日志 sudo journalctl -u swift-object-auditor -f
如果目录权限正确,你会看到该目录下会自动生成 object.recon、container.recon 等文件。
为什么会发生这种情况?
通常是因为:
系统重启:
/var/cache在某些 Linux 发行版中可能会被清理,或者/var/run是 tmpfs(内存盘)。虽然/var/cache通常是持久的,但如果你的安装脚本没有创建它,服务启动就会报错。新安装遗漏:在使用源码安装(
pip install)时,安装程序通常不会自动创建这个系统级的缓存目录,需要运维人员手动创建。
建议:如果你编写了自动化部署脚本(如 Ansible 或 Shell 脚本),请务必把 mkdir -p /var/cache/swift && chown swift:swift /var/cache/swift 加入到初始化步骤中。
其它相关推荐:
1、Ubuntu 24.04 安装 OpenStack Swift
2、Ubuntu 24.04 安装 OpenStack Swift 存储策略
评论列表