管理预案
常见运维场景如下:
更多问题参见 FAQ。
初始化实例
初始化流程:
- 安装
juicefs软件包 - 创建共享缓存目录(默认
/data/juice) - 执行
juicefs format --no-update(仅首次创建有效) - 创建挂载点目录并设置权限
- 渲染 systemd 单元与环境文件
- 启动服务并等待指标端口就绪
- 注册到 VictoriaMetrics(若存在 infra 节点)
重新配置
修改配置后,建议执行以下命令(更新配置并确保服务在线):
仅渲染配置文件而不触碰服务状态:
说明:
juice_config,juice_launch会确保服务处于started,但不会强制重启已运行实例data仅在首次format时生效- 变更
mount参数后,请手动重启对应服务(systemctl restart juicefs-<name>)
移除实例
- 将实例
state设为absent - 执行
juice_clean
移除动作:
- 停止 systemd 服务
umount -l懒卸载- 删除 unit 与环境文件
- 重载 systemd
- 重写该节点的 VictoriaMetrics 目标文件,移除
state=absent的实例
不会删除 PostgreSQL 元数据、PostgreSQL jfs_blob 数据表或对象存储数据。
只执行 -t juice_clean 不会更新监控目标,会暂时留下已移除实例的陈旧抓取地址;因此上面的命令同时执行 juice_register。
添加新实例
在配置中新增实例,确保端口唯一:
部署:
多节点共享挂载
多个节点配置相同的 meta 与实例名:
首次格式化由任一节点完成,其余节点会通过 --no-update 自动跳过。
PITR 恢复
JuiceFS 元数据与数据必须恢复到相互一致的状态。 执行任何恢复前,请停止所有写入方并卸载/停止每个客户端上的对应 JuiceFS 服务,明确目标 PostgreSQL 集群和时间点,并先确认可用备份:
确认准确的集群名、近期备份、恢复时间点与回滚方案后,按照 PostgreSQL PITR 教程 停止 Patroni/PostgreSQL 并执行恢复。pg-pitr 不负责停止服务、恢复 Patroni/DCS、验证数据或重建副本,不要把上述命令当作完整恢复流程。
当元数据与 --storage postgres 的 jfs_blob 位于同一个被恢复的 PostgreSQL 数据库中时,数据库级 PITR 可以把两者恢复到同一时间点。
若两者位于不同数据库或集群,必须设计一致的联合恢复点。
如果文件数据位于 Silo/S3,对 PostgreSQL 做 PITR 只会回滚元数据,不会回滚对象: 目标时间点之后的新对象可能残留,而已删除或回收的旧对象可能无法找回。恢复能否得到完整文件系统取决于对象版本、回收站与生命周期策略;验证完成前不要运行垃圾回收。
故障排查
挂载失败
元数据连接问题
指标端口检查
性能调优
通过 mount 传入 juicefs mount 选项:
常用关注指标:
juicefs_blockcache_hits/juicefs_blockcache_miss:缓存命中率juicefs_object_request_durations_histogram_seconds:对象存储延迟juicefs_transaction_durations_histogram_seconds:元数据事务延迟