On 9/26/23 12:48, Marco Gaiarin wrote:
Mandi! Rados??aw Korzeniewski
   In chel di` si favelave...

Because of this. To make Virtual Full Bacula needs to read all backup jobs
starting from Full, Diff and all Incrementals. Your Full (as volume
suggests) is stored on Obito_Full_0001 which has an improper media type.
Correct your configuration and backups and start again.
I'm really getting mad. This make sense for the behaviour (the first
VirtualFull worked because read full and incremental for the same pool) but
still the docs confuse me.

         https://www.bacula.org/9.4.x-manuals/en/main/Migration_Copy.html


No. Not because they were in the same pool, but rather because the volumes were all loadable and readable by the same device.


Say in 'Migration and Copy':

  For migration to work properly, you should use Pools containing only Volumes 
of the same Media Type for all migration jobs.

but in 'Important Migration Considerations':

  * Each Pool into which you migrate Jobs or Volumes must contain Volumes of 
only one Media Type.


While true, I find that misleading. It is true only because a Device resource can specify only a single Media Type. What is really going on is that Bacula makes a one-time decision when the job starts as to which device it will read from and which device it will write to. Once that read device is established, all volumes that need to be read must be readable by that particular device. Hence, all volumes must have the same Media Type, because they must all be read by the same read device.


  [...]
  * Bacula currently does only minimal Storage conflict resolution, so you must 
take care to ensure that you don't try to read
    and write to the same device or Bacula may block waiting to reserve a drive 
that it will never find.
    In general, ensure that all your migration pools contain only one Media 
Type, and that you always migrate to pools with different Media Types.

and in 'Virtual Backup Consolidation':

  In some respects the Virtual Backup feature works similar to a Migration job, 
in that Bacula normally reads the data from the pool
  specified in the Job resource, and writes it to the Next Pool specified in 
the Job resource. Note, this means that usually the output
  from the Virtual Backup is written into a different pool from where your 
prior backups are saved. Doing it this way guarantees that you
  will not get a deadlock situation attempting to read and write to the same 
volume in the Storage daemon. If you then want to do
  subsequent backups, you may need to move the Virtual Full Volume back to your 
normal backup pool. Alternatively, you can set your
  Next Pool to point to the current pool. This will cause Bacula to read and 
write to Volumes in the current pool. In general, this will
  work, because Bacula will not allow reading and writing on the same Volume. 
In any case, once a VirtualFull has been created, and a
  restore is done involving the most current Full, it will read the Volume or 
Volumes by the VirtualFull regardless of in which Pool the
  Volume is found.


In a nutshell, you must have multiple devices and you must ensure that one device reads all of the existing volumes and another different device writes the new virtual full volumes. This is why it is not possible to do virtual fulls or migration with only a single tape drive.


So, after an aspirin, seems to me that:

1) for a virtual backup, the reading part need to READ jobs from volumes
  with the same 'Media Type'; so i can use different pools/storage, but have
to use the same 'Media Type'.


Yes. Also, if you have multiple devices with the same Media Type, you must make certain that any volume with that Media Type can be loaded into any of those devices.


2) i can use the same pool, but clearly i cannot guarantee that i'll have
  only TWO full backup; error in rotation, ... could sooner or later lead to
a virtualfull job will write to an empty volume, making another copy of
data; surely i need TWO full copy (one for reading, one for writing).


A new full backup is made each time the virtual full job runs. You can purge volumes in a RunAfter script or you limit the number of volumes in the pool, but I guess the only way to guarantee there are only two copies is to manually purge old volumes.


3) i can use different pool, but with the same media type; in this way i can
  somewhat limit the number of full backup to two (using two media in the
full pool). But still i think that there's no way to have ONE full copy...
clearly without 'scripting' something around (create a scratch pool/volume,
consolidate, migrate back to original pool/volume, delete scratch).


I don't understand the goal, I think, but MaximumVolumeJobs in the Pool resource might work.




I'm missing something? Thanks.



_______________________________________________
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users

Reply via email to