Disclaimer: I'm a software engineer at Datto.
Have you asked upstream what they think of it, at all?
If you ever cared it's easy enough to clone one of those snapshots and bring it up as another DB instance to poke around at how things used to be...
PostgreSQL on ZFS is great.
I have zstd compression enabled and I average 3.50x compression ratios.
(Probably some pretty awful CPU tradeoffs in there, but system load and query times seem fine. My database is 50 GB before zstd compression, so enabling it helps a ton.)
I also have ZFS snapshots taken hourly and shipped offsite. It's awesome that I don't need to pause PostgreSQL or anything to take the snapshot. It's atomic and instant.
But VSS, like LVM or other snapshoting FS, requires dedicated FS support. You don't have VSS on FAT32. Here, blktrace works at block device level, so does not rely on any FS support.
That's also what the article says: If you have LVM, you don't need any special tool.
However, it does signal to the filesystem, quoting https://manned.org/fsfreeze.8 :
fsfreeze is unnecessary for device-mapper devices. The device-mapper (and
LVM) automatically freezes a filesystem on the device when a snapshot
creation is requested. For more details see the dmsetup(8) man page.I guess MS-SQL does something similar, and that does seem useful beyond what LVM does.
Also VSS apparently can offload the snapshotting to a SAN ('VSS Hardware Provider'): https://docs.microsoft.com/en-us/windows-server/storage/file...
More interesting is e.g. Hyper-V using this to snapshot the guest VMs.
It just takes you one step beyond being only crash-consistent, so that everything is actually application-consistent.
Implementing a VSS writer is a big 90's-style COM interface, but there is also a lightweight alternative model on top of that that eludes my search right now.
Red Hat has some similar convention for freeze/thaw scripts that can make API calls to the DB to ask it to do the same thing.
It can run through VMware tools into virtual machines, too, and down a layer to SAN storage and trigger a SAN snapshot so that a backup system like Veeam can take data from the SAN while knowing the guests two levels higher flushed data before the snapshot was taken.
or e.g. here Nimble SAN can talk up to servers through VSS to trigger SQL Server quiesce before they take a SAN snapshot: https://infosight.hpe.com/InfoSight/media/cms/active/public/...
I assume this is to prevent situations that would need time-intensive WAL-replay or such, and there it'd only be opportunistic with the "sudden power loss" recovery as a fall-back path.
https://www.postgresql.org/docs/8.1/backup-online.html
These database already have to make sure that they can recover from the system crashing. So it is probably only incrementally more work to add a feature to write out some extra metadata to enable these sorts of online backups.
[Also if you are playing with custom block devices in Linux -- mounted or otherwise but not /dev/sda -- https://gitlab.com/nbdkit/nbdkit https://libguestfs.org/nbdkit.1.html One filter we have which is kind of similar to blktrace is called the nbdkit-stats-filter https://libguestfs.org/nbdkit-stats-filter.1.html]