Scratch is fast and disposable. Volumes are durable and portable. Snapshots are cheap and cold. Pick per dataset, not per project.
Physically attached to the host. Use it for the working set of an active job — extracted datasets, intermediate activations, checkpoints you are about to copy out.
Network block storage, triple replicated. Detach from one instance and attach to another in the same region in seconds. This is where datasets and checkpoints belong.
Point-in-time copies, stored incrementally so only changed blocks are charged. Restore onto a fresh instance to reproduce an environment exactly.
Destroying an instance cryptographically erases its root volume and local scratch. The keys are discarded, which makes the data unrecoverable immediately rather than eventually. Persistent volumes and snapshots are untouched by instance teardown — they are deleted only when you delete them.
Stopping an instance is different: the root volume is retained and you continue to pay for it at the volume rate, but compute billing stops. Use stop when you will come back within a day or two, destroy when you are finished.
A 2 TB dataset on a persistent volume costs $160 a month. If you only need it during a two-week experiment, that is $80 — typically far less than re-downloading it for each run and cheaper than the engineer time spent managing the transfer.
Snapshots of that same volume, assuming 10% of blocks change between captures, cost roughly $8 a month for a weekly cadence.
Triple replication protects against hardware failure. It does not protect against you running rm -rf on the wrong path. Snapshot anything you cannot recreate.