Ticket #10556 (new defect)
Opened 4 years ago
Deleting snapshot gets suddenly interrupted + doesn't check for disk space + doesn't cleanup after fail
|Reported by:||matteosistisette||Owned by:|
There are at least 3 issues here, but since I don't know to which extent they are related, I report them together as they happened.
I'm sorry for the long report but this really NEEDS to be fixed because it is very, very critical
I had a VM with 2 snapshots (+ the current state), like this:
| +--+--Snapshot B
| +----Current State
From the guest's point of view, the VM's disk had a total space of 40GB of which 30 were used.
In the host, the original vdi file (corresponding to snapshot A) was about 8 GB in size, and the vdi file corresponding to snapshot B was about 22 GB in size. The vdi file corresponding to the current state I cannot tell, but it couldn't be very big because I hadn't written nor deleted much data since the last snapshot.
The machine was turned off.
- I deleted (or tried to delete) Snapshot B.
When the progress bar was at about 30%, the dialog with the progress bar suddenly disappeared, without an error message or anything. As if it had suddenly completed despite apparently being only at 30%.
Only that the snapshot was still there.
- In the hope that data had not been corrupted, I simply deleted the snapshot AGAIN. I forgot to check for disk space, but the VirtualBox Manager should, well, MUST check that enough disk space is available before starting such an operation. Here's the second issue
=> the host disk got full (it is about 50GB) during the snapshot deletion and the operation failed (V_ERR_DISKFULL or something like that). Available disk space should have been checked BEFORE starting the merge operation.
- After this failure, not one byte was cleaned up. The vdi file corresponding to the current state is now about 23 GB in size.
So I guess the merging is done in-place into the image belonging to the later snapshot.
After the disaster, I could boot the VM succesfully (which was a pleasant surprise), so I guess that even if the merging is done in-place it is done somehow in a safe way (this makes sense, otherwise you wouldn't do it in-place, would you?); but if so, then it should be possible, after such a failure, to clean up the garbage that has been left in the later differencing image.
(later I got an error when I tried to delete some files from the guest hard disk, because the host disk was full and I didn't realise that having differencing images, deleting was actually adding more data)
Unless the differencing image actually _is_ screwed up, just not enough to prevent the VM from booting?