[Bacula-users] Slow Spooling / Despooling

2023-05-18 Thread Udo Kaune

Am 11.05.23 um 08:06 schrieb Dr. Thorsten Brandau:


It looks fitting to other services like Rsync. I am running on an 
external RAID6, so I assume the discs and caching is just low, as I 
have several file storages >80TB on that device. No SSD or so.


Initially I tested the drive with about 400MB/s, so that fits around 
the maximum read speed of the discs coming from the raid.


Are there any tweaking parameters I could try?

Cheers

TB




Please try the bacula-sd parameters. This is from our Quantum 
Superloader 3 LTO-7 definitions. See if it makes any difference for you. 
Despooling sustained ~ 290MB/sec from an SSD Raid 1.


bacula-sd.conf:

Device {
  ...
 # 300 Mb/sec = eof filemark every two minutes, this is not max size of 
YOUR files... #8-)

  MaximumFileSize = 36G

  MaximumBlockSize = 1048576
  ...
}

Another point would be spooling of file attributes to reduce 
intermittent access to you sql server.


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


Re: [Bacula-users] compression with lto?

2023-05-18 Thread Josh Fisher via Bacula-users

On 5/17/23 14:14, Phil Stracchino wrote:

On 5/17/23 12:52, Marco Gaiarin wrote:


I've LTO tape that work in very dusty environment by at least 6 years.

Istead of dust, i've found that setting properly spooling and buffers
prevent the spinup/spindown effect, that effectively can be very
stressful...


Yes, I went to great lengths to try to keep mine streaming and avoid 
shoe-shining, but with only moderate success.


I have had many fewer problems, as well as much better performance, 
since I abandoned tape and went to disk-to-disk-to-removable-disk 
(with both of the destination disk stages being RAID).  Full backup 
cycles that used to take 18 hours and two or three media changes, with 
about a 10% failure rate due to media errors, now take 3 or 4 hours 
with no media changes and nearly 100% success.



However, we are getting further and further off the subject of 
compression.



That approach actually affects both tape and disk. Software compression 
happens on the client, so performance greatly depends on the type of 
clients being backed up. For example, there may be NAS boxes with low 
power processors, Software compression will definitely slow the backup 
of such clients.




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


Re: [Bacula-users] Slow Spooling / Despooling

2023-05-18 Thread Dr. Thorsten Brandau


Udo Kaune schrieb am 18.05.23 um 12:38:

Am 11.05.23 um 08:06 schrieb Dr. Thorsten Brandau:


It looks fitting to other services like Rsync. I am running on an 
external RAID6, so I assume the discs and caching is just low, as I 
have several file storages >80TB on that device. No SSD or so.


Initially I tested the drive with about 400MB/s, so that fits around 
the maximum read speed of the discs coming from the raid.


Are there any tweaking parameters I could try?

Cheers

TB




Please try the bacula-sd parameters. This is from our Quantum 
Superloader 3 LTO-7 definitions. See if it makes any difference for 
you. Despooling sustained ~ 290MB/sec from an SSD Raid 1.


bacula-sd.conf:

Device {
  ...
 # 300 Mb/sec = eof filemark every two minutes, this is not max size 
of YOUR files... #8-)

  MaximumFileSize = 36G

  MaximumBlockSize = 1048576
  ...
}

Another point would be spooling of file attributes to reduce 
intermittent access to you sql server.


Regards


Hi

okay, I will try that. I had set no BlockSize but my Filesize to 3TB to 
avoid permanen spooling and despooling.


Let's see if that changes anything.

BR

T

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


Re: [Bacula-users] compression with lto?

2023-05-18 Thread Dr. Thorsten Brandau


Josh Fisher via Bacula-users schrieb am 18.05.23 um 14:48:

On 5/17/23 14:14, Phil Stracchino wrote:

On 5/17/23 12:52, Marco Gaiarin wrote:


I've LTO tape that work in very dusty environment by at least 6 years.

Istead of dust, i've found that setting properly spooling and buffers
prevent the spinup/spindown effect, that effectively can be very
stressful...


Yes, I went to great lengths to try to keep mine streaming and avoid 
shoe-shining, but with only moderate success.


I have had many fewer problems, as well as much better performance, 
since I abandoned tape and went to disk-to-disk-to-removable-disk 
(with both of the destination disk stages being RAID).  Full backup 
cycles that used to take 18 hours and two or three media changes, 
with about a 10% failure rate due to media errors, now take 3 or 4 
hours with no media changes and nearly 100% success.



However, we are getting further and further off the subject of 
compression.



That approach actually affects both tape and disk. Software 
compression happens on the client, so performance greatly depends on 
the type of clients being backed up. For example, there may be NAS 
boxes with low power processors, Software compression will definitely 
slow the backup of such clients.



Well, I do not see a big effect here. But I am running of a 64 CPU 
server with a bit of Ram ;-) At last I do not need to care about 
performance lost if it s running at night or weekends.


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


[Bacula-users] Copy job clarification requested

2023-05-18 Thread Chris Wilkinson
I have not used a copy job before so I thought I would try one. I used
Baculum v11 to set one up that copies a job from a local USB drive to a
NAS. The setup was straightforward. I created a new pool to receive the
copy, defined the source and destination job, pool and SD/storage. This
worked just fine creating the new volumes on the destination storage.

The thing I'm not clear about is whether a copy job copies only the pool
specified as the source, in my case a full, or whether all of
full/diff/incr pools for the job are copied.

My suspicion is that only the full is copied and I would need additional
jobs for the diff/incr.

Given that there is a 1:1 correspondence between a job definition and its
pools, Bacula should be able to deduce one from the other but it seems to
be required to specify both.

Could anyone help me understand this?

Chris Wilkinson
___
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users


Re: [Bacula-users] Slow Spooling / Despooling

2023-05-18 Thread Bill Arlofski via Bacula-users

On 5/18/23 04:38, Udo Kaune wrote:



[...snip...]

Another point would be spooling of file attributes to reduce intermittent 
access to you sql server.


Hello Udo,

Just a quick FYI for everyone: When Data Spooling is enabled, Attribute 
Spooling is automatically forced on.


Best regards,
Bill

--
Bill Arlofski
w...@protonmail.com



signature.asc
Description: OpenPGP digital signature
___
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users


Re: [Bacula-users] Copy job clarification requested

2023-05-18 Thread Bill Arlofski via Bacula-users

On 5/18/23 08:07, Chris Wilkinson wrote:

I have not used a copy job before so I thought I would try one. I used Baculum 
v11 to set one up that copies a job from a
local USB drive to a NAS. The setup was straightforward. I created a new pool 
to receive the copy, defined the source and
destination job, pool and SD/storage. This worked just fine creating the new 
volumes on the destination storage.

The thing I'm not clear about is whether a copy job copies only the pool 
specified as the source, in my case a full, or
whether all of full/diff/incr pools for the job are copied.

My suspicion is that only the full is copied and I would need additional jobs 
for the diff/incr.

Given that there is a 1:1 correspondence between a job definition and its 
pools, Bacula should be able to deduce one from the
other but it seems to be required to specify both.

Could anyone help me understand this?

Chris Wilkinson


Hello Chris,

A Copy job will copy
what you tell it to. :)

What I mean is there are several ways to tell a Copy job what jobs to copy. The 
simplest being the `SelectionType =
PoolUncopiedJobs`

Using this option, Bacula will only look to the Pool specified in the Copy job 
itself for jobids which have not yet been
copied and it will spawn n-1 new iterations of itself - each one to copy one 
job - and it will take the last jobid found and
copy it itself.

At the beginning of the Copy job, Bacula will list the jobids it has identified 
to be copied.

When setting up Copy jobs for the first time on an existing pool with a lot of 
jobs existing it is a good idea to set the
`MaximumSpawnedJobs = 1` while testing to make sure things look/work OK so you 
are not spawning hundreds or thousands of Copy
jobs which may not work or need to be canceled. :)

Then, once things are OK, that number can be raised or the setting can be 
removed entirely.

You can also just specify a specific jobid to be copied on the comm
and line:

* run job=CopyJobNAme jobid=12345

And this one jobid would be copied - regardless of the `Pool =` setting the the 
Copy job.

You can use `SelectionType = SQLQuery` and then the `SelectionPattern =` can be 
used to specify *any* jobs you want to be
copied, also overriding the pool set in the Copy job itself.

If you have Full, Inc, and Diff pools, you might have three copy jobs, one for 
each pool, or  you could simply call the Copy
job three times and override the `pool=xxx` on the command line or in a 
Schedule.

Something I have helped customers with is to set up a Copy job to be run 
immediately after the backup job itself has
completed. In this use case, you just call a small script in a RunScript {} 
section in your job:


Job {
 ...All normal job stuff goes here...

  RunScript {
RunsOnCLient = no
RunsWhen = after
Command = "path/to/triggerCopyJobsScript.sh %i '%n' %l"
  }
}

 ...and that script simply starts the copy job wit
h the jobid= option:

8<
#!/bin/bash
#
# $1 = jobid, $2 = Job name, $3 = Level
#
if [ "$3" = "Full" ]; then
  echo "Jobid $3 (${2}) is a Full job, triggering a copy of it..."
  echo "run yes job=CopyJobName jobid=$1" | bconsole
else
  echo "This is not a Full level job, not copying it..."
fi
8<

I pass the level and jobname so, as in the case of this customer, they wanted 
to only copy full jobs, so we just check the
level and decide to trigger the copy job or not.

Note: Using this method, the Priority of your Copy job needs to be the same as 
the Backup job otherwise you will enter a
deadlock where the Backup job never finishes because it is waiting on the Copy 
to finish, but the Copy will never start
because it is waiting on the Backup job to finish. :) (Sure, allowing "mixed 
priority" can be done, but that just adds
more confusion, problems etc.)


Hope some of this helps!


Best regards,
Bill

--
Bill Arlofski
waa@proto
nmail.com



signature.asc
Description: OpenPGP digital signature
___
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users


Re: [Bacula-users] Copy job clarification requested

2023-05-18 Thread Chris Wilkinson
Thank you Bill, a comprehensive reply as always 🙏. I'll need to study this
some more.

-Chris-

On Thu, 18 May 2023, 16:45 Bill Arlofski via Bacula-users, <
bacula-users@lists.sourceforge.net> wrote:

> On 5/18/23 08:07, Chris Wilkinson wrote:
> > I have not used a copy job before so I thought I would try one. I used
> Baculum v11 to set one up that copies a job from a
> > local USB drive to a NAS. The setup was straightforward. I created a new
> pool to receive the copy, defined the source and
> > destination job, pool and SD/storage. This worked just fine creating the
> new volumes on the destination storage.
> >
> > The thing I'm not clear about is whether a copy job copies only the pool
> specified as the source, in my case a full, or
> > whether all of full/diff/incr pools for the job are copied.
> >
> > My suspicion is that only the full is copied and I would need additional
> jobs for the diff/incr.
> >
> > Given that there is a 1:1 correspondence between a job definition and
> its pools, Bacula should be able to deduce one from the
> > other but it seems to be required to specify both.
> >
> > Could anyone help me understand this?
> >
> > Chris Wilkinson
>
> Hello Chris,
>
> A Copy job will copy
> what you tell it to. :)
>
> What I mean is there are several ways to tell a Copy job what jobs to
> copy. The simplest being the `SelectionType =
> PoolUncopiedJobs`
>
> Using this option, Bacula will only look to the Pool specified in the Copy
> job itself for jobids which have not yet been
> copied and it will spawn n-1 new iterations of itself - each one to copy
> one job - and it will take the last jobid found and
> copy it itself.
>
> At the beginning of the Copy job, Bacula will list the jobids it has
> identified to be copied.
>
> When setting up Copy jobs for the first time on an existing pool with a
> lot of jobs existing it is a good idea to set the
> `MaximumSpawnedJobs = 1` while testing to make sure things look/work OK so
> you are not spawning hundreds or thousands of Copy
> jobs which may not work or need to be canceled. :)
>
> Then, once things are OK, that number can be raised or the setting can be
> removed entirely.
>
> You can also just specify a specific jobid to be copied on the comm
> and line:
>
> * run job=CopyJobNAme jobid=12345
>
> And this one jobid would be copied - regardless of the `Pool =` setting
> the the Copy job.
>
> You can use `SelectionType = SQLQuery` and then the `SelectionPattern =`
> can be used to specify *any* jobs you want to be
> copied, also overriding the pool set in the Copy job itself.
>
> If you have Full, Inc, and Diff pools, you might have three copy jobs, one
> for each pool, or  you could simply call the Copy
> job three times and override the `pool=xxx` on the command line or in a
> Schedule.
>
> Something I have helped customers with is to set up a Copy job to be run
> immediately after the backup job itself has
> completed. In this use case, you just call a small script in a RunScript
> {} section in your job:
>
>
> Job {
>   ...All normal job stuff goes here...
>
>RunScript {
>  RunsOnCLient = no
>  RunsWhen = after
>  Command = "path/to/triggerCopyJobsScript.sh %i '%n' %l"
>}
> }
>
>   ...and that script simply starts the copy job wit
> h the jobid= option:
>
> 8<
> #!/bin/bash
> #
> # $1 = jobid, $2 = Job name, $3 = Level
> #
> if [ "$3" = "Full" ]; then
>echo "Jobid $3 (${2}) is a Full job, triggering a copy of it..."
>echo "run yes job=CopyJobName jobid=$1" | bconsole
> else
>echo "This is not a Full level job, not copying it..."
> fi
> 8<
>
> I pass the level and jobname so, as in the case of this customer, they
> wanted to only copy full jobs, so we just check the
> level and decide to trigger the copy job or not.
>
> Note: Using this method, the Priority of your Copy job needs to be the
> same as the Backup job otherwise you will enter a
> deadlock where the Backup job never finishes because it is waiting on the
> Copy to finish, but the Copy will never start
> because it is waiting on the Backup job to finish. :) (Sure, allowing
> "mixed priority" can be done, but that just adds
> more confusion, problems etc.)
>
>
> Hope some of this helps!
>
>
> Best regards,
> Bill
>
> --
> Bill Arlofski
> waa@proto
> nmail.com
>
> ___
> Bacula-users mailing list
> Bacula-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/bacula-users
>
___
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users


Re: [Bacula-users] Copy job clarification requested

2023-05-18 Thread Chris Wilkinson
I'm not sure I'm getting the motivation for using a copy job in preference
to a duplicate job to a second SD. This would also create a second backup.
The only reason I can think of is that a duplicate job might be different
if the files changed in between. That shouldn't be an issue.

I read that a copy job cannot be used for a restore but if the source
backup job becomes unavailable then the copy will be automatically promoted
to a regular backup which can be used for a restore. I can see that if a
job or its pools are deleted or pruned out in the database that would work,
but under a failure scenario, e.g. a storage fails, then it seems unlikely
Bacula could be smart enough to do this.

Am I being paranoid!?

Chris

On Thu, 18 May 2023, 4:45 pm Bill Arlofski via Bacula-users, <
bacula-users@lists.sourceforge.net> wrote:

> On 5/18/23 08:07, Chris Wilkinson wrote:
> > I have not used a copy job before so I thought I would try one. I used
> Baculum v11 to set one up that copies a job from a
> > local USB drive to a NAS. The setup was straightforward. I created a new
> pool to receive the copy, defined the source and
> > destination job, pool and SD/storage. This worked just fine creating the
> new volumes on the destination storage.
> >
> > The thing I'm not clear about is whether a copy job copies only the pool
> specified as the source, in my case a full, or
> > whether all of full/diff/incr pools for the job are copied.
> >
> > My suspicion is that only the full is copied and I would need additional
> jobs for the diff/incr.
> >
> > Given that there is a 1:1 correspondence between a job definition and
> its pools, Bacula should be able to deduce one from the
> > other but it seems to be required to specify both.
> >
> > Could anyone help me understand this?
> >
> > Chris Wilkinson
>
> Hello Chris,
>
> A Copy job will copy
> what you tell it to. :)
>
> What I mean is there are several ways to tell a Copy job what jobs to
> copy. The simplest being the `SelectionType =
> PoolUncopiedJobs`
>
> Using this option, Bacula will only look to the Pool specified in the Copy
> job itself for jobids which have not yet been
> copied and it will spawn n-1 new iterations of itself - each one to copy
> one job - and it will take the last jobid found and
> copy it itself.
>
> At the beginning of the Copy job, Bacula will list the jobids it has
> identified to be copied.
>
> When setting up Copy jobs for the first time on an existing pool with a
> lot of jobs existing it is a good idea to set the
> `MaximumSpawnedJobs = 1` while testing to make sure things look/work OK so
> you are not spawning hundreds or thousands of Copy
> jobs which may not work or need to be canceled. :)
>
> Then, once things are OK, that number can be raised or the setting can be
> removed entirely.
>
> You can also just specify a specific jobid to be copied on the comm
> and line:
>
> * run job=CopyJobNAme jobid=12345
>
> And this one jobid would be copied - regardless of the `Pool =` setting
> the the Copy job.
>
> You can use `SelectionType = SQLQuery` and then the `SelectionPattern =`
> can be used to specify *any* jobs you want to be
> copied, also overriding the pool set in the Copy job itself.
>
> If you have Full, Inc, and Diff pools, you might have three copy jobs, one
> for each pool, or  you could simply call the Copy
> job three times and override the `pool=xxx` on the command line or in a
> Schedule.
>
> Something I have helped customers with is to set up a Copy job to be run
> immediately after the backup job itself has
> completed. In this use case, you just call a small script in a RunScript
> {} section in your job:
>
>
> Job {
>   ...All normal job stuff goes here...
>
>RunScript {
>  RunsOnCLient = no
>  RunsWhen = after
>  Command = "path/to/triggerCopyJobsScript.sh %i '%n' %l"
>}
> }
>
>   ...and that script simply starts the copy job wit
> h the jobid= option:
>
> 8<
> #!/bin/bash
> #
> # $1 = jobid, $2 = Job name, $3 = Level
> #
> if [ "$3" = "Full" ]; then
>echo "Jobid $3 (${2}) is a Full job, triggering a copy of it..."
>echo "run yes job=CopyJobName jobid=$1" | bconsole
> else
>echo "This is not a Full level job, not copying it..."
> fi
> 8<
>
> I pass the level and jobname so, as in the case of this customer, they
> wanted to only copy full jobs, so we just check the
> level and decide to trigger the copy job or not.
>
> Note: Using this method, the Priority of your Copy job needs to be the
> same as the Backup job otherwise you will enter a
> deadlock where the Backup job never finishes because it is waiting on the
> Copy to finish, but the Copy will never start
> because it is waiting on the Backup job to finish. :) (Sure, allowing
> "mixed priority" can be done, but that just adds
> more confusion, problems etc.)
>
>
> Hope some of this helps!
>
>
> Best regards,
> Bill
>
> --
> Bill Arlofski
> waa@proto
> nmail.com
>
> 

Re: [Bacula-users] Copy job clarification requested

2023-05-18 Thread Phil Stracchino

On 5/18/23 18:37, Chris Wilkinson wrote:
I'm not sure I'm getting the motivation for using a copy job in 
preference to a duplicate job to a second SD. This would also create a 
second backup. The only reason I can think of is that a duplicate job 
might be different if the files changed in between. That shouldn't be an 
issue.


I read that a copy job cannot be used for a restore



Not true.  Just select that job to restore from.


--
  Phil Stracchino
  Babylon Communications
  ph...@caerllewys.net
  p...@co.ordinate.org
  Landline: +1.603.293.8485
  Mobile:   +1.603.998.6958



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