juicedata/juicefs · error
load setting: %v
Error message
load setting: %v
What it means
`juicefs status <meta-url>` first loads the volume format (settings record) from the metadata engine. If Meta.Load fails — the volume record is missing, unreadable, or the metadata backend is unreachable — Status wraps the failure as 'load setting'. No status output can be produced without the format.
Source
Thrown at pkg/meta/status.go:54
PendingDeletedFileCount int64 `json:",omitempty"`
PendingDeletedFileSize int64 `json:",omitempty"`
TrashSliceCount int64 `json:",omitempty"`
TrashSliceSize int64 `json:",omitempty"`
PendingDeletedSliceCount int64 `json:",omitempty"`
PendingDeletedSliceSize int64 `json:",omitempty"`
}
type Sections struct {
Setting *Format
Sessions []*Session
Stat *Statistic
}
// Status retrieves the status of the filesystem
func Status(ctx context.Context, m Meta, trash bool, sections *Sections) error {
format, err := m.Load(true)
if err != nil {
return fmt.Errorf("load setting: %v", err)
}
format.RemoveSecret()
sessions, err := m.ListSessions()
if err != nil {
return fmt.Errorf("list sessions: %v", err)
}
stat := &Statistic{}
var totalSpace uint64
if err = m.StatFS(Background(), RootInode, &totalSpace, &stat.AvailableSpace, &stat.UsedInodes, &stat.AvailableInodes); err != syscall.Errno(0) {
return fmt.Errorf("stat fs: %v", err)
}
stat.UsedSpace = totalSpace - stat.AvailableSpace
if trash {
progress := utils.NewProgress(false)
defer progress.Done()View on GitHub (pinned to c9a67b23e8)
Solutions
- Read the wrapped inner error: connection refused → server down; 'setting format not found' → wrong meta URL or unformatted volume.
- Confirm you are passing the same META-URL used at `juicefs format` time (status expects a meta URL, not a mount point).
- Check metadata backend health and credentials (redis-cli ping / mysql client connect).
- If metadata is genuinely lost, the volume cannot be inspected; restore from metadata backup (`juicefs dump` artifacts) before retrying.
Example fix
// before (mount point passed instead of meta URL) juicefs status /mnt/jfs // after juicefs status "redis://127.0.0.1:6379/1"
Defensive patterns
Strategy: validation
Validate before calling
// shell redis-cli -u "$META_URL" PING || echo "metadata backend unreachable" redis-cli -u "$META_URL" EXISTS setting || echo "volume not formatted at this meta URL"
Try / catch
if err := execStatus(metaURL); err != nil && strings.Contains(err.Error(), "load setting") {
log.Fatalf("wrong meta URL or volume not formatted: %v", err)
} Prevention
- Pass the META-URL, never a mount point, to juicefs status
- Store the meta URL used at format time in config management
- Keep metadata backups (juicefs dump) so a lost record is recoverable
When it happens
Trigger: Running `juicefs status META-URL` where Load(true) errors: wrong meta URL pointing at an empty/nonexistent volume, wrong credentials, network failure to Redis/MySQL, or a corrupted/erased metadata store.
Common situations: Typo in the meta URL or pointing at a fresh Redis DB where the volume was never formatted; Redis AUTH/ACL misconfiguration; trying to inspect a volume whose metadata was deleted; typo'd bucket/vol name assumption — status takes a meta URL, not a mount point.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- invalid unit
- changelog is not enabled, use `juicefs config %s --changelog
- clone failed: %v
- compact [%d:%s] error: %s
- cannot disable dir stats when there are still %d dir quotas:
AI-assisted analysis of juicedata/juicefs@c9a67b23e8 (2026-09-06).
Data as JSON: /api/errors/cf06e334d6c572e8.
Report an issue: GitHub.