Allow explicit user snapshots of persistent blockstores (remote datasets)
Right now, snapshots of a blockstore are only made when an experiment containing a node with a RW mapping of that blockstore is terminated. This might be a bit cumbersome for workflows in which the "master" of a dataset is being updated on a regular basis (instantiate, update, terminate).
We could allow for users to make an explicit snapshot of a blockstore while a RW mapping exists. The workflow would be: user clicks a button on the GUI somewhere, invokes a script on boss which ssh
s over to the node with the RW mapping and unmounts any filesystem associated with the dataset, then makes the DB call on boss to create a snapshot of the zvol, and finally ssh
s again to the node to remount any filesystem.
I would not allow more than a single snapshot which would basically be "the most recent snapshot" that new RO and clone mappings use. If they then create another snapshot, it will replace the previous one if possible (i.e., the snapshot is not in active use). I don't want to start accounting for multiple user snapshots and providing ways to map particular ones. I view this just as a shortcut of the terminate/reinstantiate model.