文章内容

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.reconcontainer.recon 等文件。

为什么会发生这种情况?

通常是因为:

  1. 系统重启/var/cache 在某些 Linux 发行版中可能会被清理,或者 /var/run 是 tmpfs(内存盘)。虽然 /var/cache 通常是持久的,但如果你的安装脚本没有创建它,服务启动就会报错。

  2. 新安装遗漏:在使用源码安装(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 存储策略

3、OpenStack Swift 单节点构造文件添加磁盘

4、OpenStack Swift 配置 Memcached

5、OpenStack Swift 自定义认证中间件

分享到:

发表评论

评论列表