This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Clone

    Instant Cloning

    Piglet Run supports Copy-on-Write (CoW) cloning for rapid database forking.

    How It Works

    Copy-on-Write means:

    • Zero copy at clone time
    • Only changed blocks consume storage
    • TB-scale databases clone in milliseconds
    Original Database
    ┌─────────────────────┐
    │ Block A │ Block B │ Block C │
    └────┬────┴────┬────┴────┬────┘
         │         │         │
         ▼         ▼         ▼
    ┌────────────────────────────┐
    │      Shared Storage        │
    └────────────────────────────┘
         ▲         ▲         ▲
         │         │         │
    ┌────┴────┬────┴────┬────┴────┐
    │ Block A │ Block B │ Block C │ (shared)
    │         │ Block B'│         │ (changed in clone)
    └─────────┴─────────┴─────────┘
    Cloned Database
    

    Use Cases

    Use CaseBenefit
    DevelopmentClone prod for testing
    AI ExperimentsBranch for each experiment
    Feature BranchesDatabase per branch
    TrainingEach learner gets own copy

    Database Cloning

    Using PostgreSQL utilities:

    # Create database from template
    pig pg psql -c "CREATE DATABASE dev TEMPLATE prod"
    
    # Or using pg_dump/pg_restore for cross-server clone
    pg_dump -Fc prod > prod.dump
    pg_restore -d dev prod.dump
    

    Using pgBackRest for Cloning

    # Restore to a new cluster as a clone
    pig pb restore --target-pgdata=/data/pg-clone
    
    # Or restore to specific time point
    pig pb restore -t "2025-01-29 10:00:00" --target-pgdata=/data/pg-clone
    

    Filesystem Cloning with JuiceFS

    # Clone directory using JuiceFS snapshot
    juicefs snapshot create /jfs/workspace ws-snapshot
    juicefs snapshot restore /jfs/workspace-clone ws-snapshot
    

    Next Steps