Files
calypso/ZFS-MOUNTPOINT-FIX.md
2026-01-09 16:54:39 +00:00

1.7 KiB

ZFS Pool Mountpoint Fix

Issue

ZFS pool creation was failing with error:

cannot mount '/default': failed to create mountpoint: Read-only file system

The issue was that ZFS was trying to mount pools to the root filesystem (/default), which is read-only.

Solution

Updated the ZFS pool creation code to set a default mountpoint to /opt/calypso/data/pool/<pool-name> for all pools.

Changes Made

1. Updated backend/internal/storage/zfs.go

  • Added mountpoint configuration during pool creation using -m flag
  • Set default mountpoint to /opt/calypso/data/pool/<pool-name>
  • Added code to create the mountpoint directory before pool creation
  • Added logging for mountpoint creation

Key Changes:

// Set default mountpoint to /opt/calypso/data/pool/<pool-name>
mountPoint := fmt.Sprintf("/opt/calypso/data/pool/%s", name)
args = append(args, "-m", mountPoint)

// Create mountpoint directory if it doesn't exist
if err := os.MkdirAll(mountPoint, 0755); err != nil {
    return nil, fmt.Errorf("failed to create mountpoint directory %s: %w", mountPoint, err)
}

2. Directory Setup

  • Created /opt/calypso/data/pool directory
  • Set ownership to calypso:calypso
  • Set permissions to 0755

Default Mountpoint Structure

All ZFS pools will now be mounted under:

/opt/calypso/data/pool/
├── pool-name-1/
├── pool-name-2/
└── ...

Testing

  1. Backend rebuilt successfully
  2. Service restarted successfully
  3. Ready to test pool creation from frontend

Next Steps

  • Test pool creation from the frontend UI
  • Verify that pools are mounted correctly at /opt/calypso/data/pool/<pool-name>
  • Ensure proper permissions for pool mountpoints

Date

2026-01-09