Snapshots with Parallels Provider
Vagrant snapshots work with Parallels Desktop through the same vagrant snapshot commands. Under the hood, Vagrant uses the prlctl snapshot CLI. Parallels snapshots are very fast and support the full named + push/pop workflow.
Named Snapshots
BASH — Named Snapshots
# Take a named snapshot
vagrant snapshot save clean-oel8
# Take snapshot of specific machine in multi-machine setup
vagrant snapshot save master "mysql-8-installed"
vagrant snapshot save replica1 "replication-configured"
# List snapshots
vagrant snapshot list
vagrant snapshot list master
# Restore snapshot
vagrant snapshot restore clean-oel8
vagrant snapshot restore master "mysql-8-installed"
# Delete snapshot
vagrant snapshot delete clean-oel8
# Parallels snapshot management via prlctl directly
prlctl snapshot-list "OEL8-Lab"
prlctl snapshot "OEL8-Lab" -n "mysql-installed"
prlctl snapshot-revert "OEL8-Lab" --id {snapshot-uuid}
Push/Pop Snapshots
BASH — Push/Pop Snapshots
# Push (save unnamed snapshot before risky operation)
vagrant snapshot push
# Do something risky
vagrant ssh -c "sudo dnf upgrade mysql-community-server -y"
# If something went wrong — instant rollback
vagrant snapshot pop
# If successful — no need to pop, snapshot remains as safety net
# You can pop later to free disk space
vagrant snapshot pop --no-restore # just delete without restoring
Database Lab Snapshot Strategy
BASH — Lab Snapshot Strategy
# Complete lab snapshot workflow
# === Phase 1: Base Setup ===
vagrant up --provider=parallels
vagrant snapshot save all "01-base-oel8"
# === Phase 2: MySQL Installed ===
vagrant provision master
vagrant snapshot save master "02-mysql-installed"
# === Phase 3: Replication Configured ===
# ... configure replication ...
vagrant snapshot save master "03-replication-master"
vagrant snapshot save replica1 "03-replication-replica1"
vagrant snapshot save replica2 "03-replication-replica2"
# === Phase 4: ProxySQL Added ===
vagrant provision proxysql
vagrant snapshot save proxysql "04-proxysql-configured"
# === Jump to any state ===
# Go back to just MySQL, no replication:
vagrant snapshot restore master "02-mysql-installed"
# Go back to full stack:
vagrant snapshot restore master "03-replication-master"
vagrant snapshot restore replica1 "03-replication-replica1"
vagrant snapshot restore proxysql "04-proxysql-configured"
Parallels Snapshot Management via prlctl
BASH — prlctl Snapshot Commands
# List all VMs and their snapshots
prlctl list --all
prlctl snapshot-list "DB-Lab-master"
# Take snapshot via prlctl directly
prlctl snapshot "DB-Lab-master" -n "before-upgrade"
# Get snapshot UUID
prlctl snapshot-list "DB-Lab-master" --json
# Revert to snapshot by name
SNAP_UUID=$(prlctl snapshot-list "DB-Lab-master" | grep "before-upgrade" | awk "{print $1}")
prlctl snapshot-revert "DB-Lab-master" --id $SNAP_UUID
# Delete snapshot
prlctl snapshot-delete "DB-Lab-master" --id $SNAP_UUID
Snapshot Comparison — VirtualBox vs Parallels
| Feature | VirtualBox | Parallels |
|---|---|---|
| Snapshot speed | ~5-10 seconds | ~2-5 seconds |
| Restore speed | ~10-20 seconds | ~3-8 seconds |
| Disk space per snapshot | Varies (COW) | Varies (COW) |
| Max snapshots | No hard limit | No hard limit |
| Snapshot tree/branching | Yes | Yes |
| Vagrant push/pop support | Yes | Yes |
✓ Parallels snapshots are generally faster than VirtualBox snapshots — both for taking and restoring. On Apple Silicon, snapshot operations are near-instant for small VMs.
⚠ Warning: Snapshots grow over time and consume disk space. Run prlctl snapshot-list "VM-Name" regularly and delete snapshots you no longer need to keep your Mac disk free.