What do they do? VBM files are an XML dump of relevant backup metadata pertaining to the relevant backup job from the Veeam DB. A VBM file will be created for each backup and backup copy job.
Why do we create VBMs? Before VBM files, Veeam would read metadata information from the backup files themselves. As Veeam was deployed into larger and larger environments it soon became apparent that this method of reading metadata information was too I/O intensive and needed to be improved, so the VBM file was born.
When are VBM files created? VBM files are actually generated multiple times during a backup job run. The exact number depends on a few things such as the number of VMs in a job, how many concurrent tasks are running, whether a transform operation is performed during a given run, etc. Regarding the very first VBM file that is generated, Veeam collects all pertinent backup-related metadata for the running job from the Veeam DB which is then processed and stored in the Veeam.Backup.Manager process memory, this is otherwise known as a ‘Full’ read of the relevant backup metadata from the DB. This can be quite I/O expensive so all subsequent VBM file generations will use incremental ‘Reads’ of backup metadata from the Veeam DB to improve performance. This metadata information stored in the Veeam.Backup.Manager process memory is then written to a resulting VBM file on disk. One important thing to note is that while subsequent reads from the Veeam DB will be incremental, the VBM file creation operation is always a full, meaning Veeam will always overwrite VBM file in its entirety. Veeam has quite a bit of intelligence built around optimising this VBM file generation process, for example, Veeam schedules multiple VBM generations to be merged into one VBM if multiple generation requests coincide in time, this results in less overhead and improved VBM file creation performance.
Where are they stored? For simple repositories, there will be a single VBM per job located alongside the backup files. If you are using scale-out repositories you will see a VBM for each job on every extent that the backup job has files residing on.
When do we use it? The VBM file is used when something is wrong with the Veeam DB, so, for example, you create a new VBR and we want to import the backup file. The VBM file is also critical for scale-out repositories because it tracks which files living on the extent belong to which backup.
What happens if I don’t have one? While VBM files are not necessary to import or restore a backup they will notably improve the backup import process. If you are trying to map existing backups files you will need to recreate the VBM file though, that process is described here; https://rhyshammond.com/creating-vbm-from-scratch/