Administration
Common operations:
- Initialize Instance
- Reconfigure
- Remove Instance
- Add New Instance
- Shared Mount Across Nodes
- PITR Recovery
- Troubleshooting
- Performance Tuning
See FAQ for more.
Initialize Instance
Initialization steps:
- Install
juicefspackage - Create shared cache dir (default
/data/juice) - Run
juicefs format --no-update(only effective on first creation) - Create mount point and set permissions
- Render systemd unit and env files
- Start service and wait for metrics port
- Register to VictoriaMetrics (if infra node exists)
Reconfigure
After configuration changes, we recommend this command to update the configuration and make sure the service is running:
To generate the configuration without changing the service state:
Notes:
juice_config,juice_launchsets the service state tostarted. It does not force a restart of a running instance.dataonly takes effect on the firstformat- After changing
mountoptions, manually restart the instance service (systemctl restart juicefs-<name>)
Remove Instance
- Set instance
statetoabsent - Run
juice_clean
Removal actions:
- Stop systemd service
umount -llazy unmount- Remove unit and env files
- Reload systemd
- Rewrite this node’s VictoriaMetrics target file, removing instances with
state=absent
PostgreSQL metadata, PostgreSQL jfs_blob data tables, and object-storage data are not deleted.
If you run only -t juice_clean, monitoring targets remain unchanged. Removed instances temporarily retain stale scrape endpoints. The commands above also run juice_register to update these targets.
Add New Instance
Add a new instance to the configuration. Give it a unique port:
Deploy:
Shared Mount Across Nodes
Configure the same meta and instance name on multiple nodes:
Only one node needs to format the filesystem. Other nodes skip this operation because of --no-update.
PITR Recovery
Restore JuiceFS metadata and data to a mutually consistent state. Before any restore, stop every writer. Unmount or stop the corresponding JuiceFS service on every client. Identify the exact PostgreSQL cluster and target time. Confirm that a backup is available:
First, confirm the exact cluster name, a recent backup, the recovery target, and a rollback plan. Only then follow the PostgreSQL PITR tutorial to stop Patroni/PostgreSQL and restore the data. The pg-pitr command does not stop services, repair Patroni/DCS, validate data, or rebuild replicas. The command above is not a complete recovery procedure.
If metadata and the --storage postgres jfs_blob table share the restored PostgreSQL database, PITR can restore both to the same time. If they reside in different databases or clusters, design a coordinated recovery point for both.
If file data resides in Silo/S3, PostgreSQL PITR rolls back metadata only. It does not restore objects. Newer objects can remain. Older objects can be unavailable if they were deleted or removed by garbage collection.
Recovery depends on object versioning, trash, and lifecycle policies. Do not run garbage collection until validation is complete.
Troubleshooting
Mount Fails
Metadata Connection Issues
Metrics Port Check
Performance Tuning
Pass juicefs mount options via mount:
Key metrics to watch:
juicefs_blockcache_hits/juicefs_blockcache_miss: cache hit ratiojuicefs_object_request_durations_histogram_seconds: object storage latencyjuicefs_transaction_durations_histogram_seconds: metadata transaction latency
Was this page helpful?
Thanks—your feedback helps us improve this page.
What got in the way? (optional)