[Dirvish] dirvish and an lv snapshot

Eric Searcy emsearcy at gmail.com
Wed Jul 14 23:20:03 UTC 2010


On Jul 14, 2010, at 2:40 PM, Jenny Hopkins wrote:

> Hullo,
> 
> I'm having problems with making a backup of an lvm partition on a xen server.
> I have a working script that creates an lvm snapshot of the partition
> and mounts it. In the dirvish cronjob script I have placed the script
> to run before dirvish expire and dirvish runall is called, then the
> same script with an unmount parameter is called.
> Like this:
> 
> 
> ## Example of how to mount and umount a backup partition...
> # mount_check /backup
> lvmsnapshot.sh create scafell
> 
> /usr/sbin/dirvish-expire --quiet && /usr/sbin/dirvish-runall --quiet
> rc=$?
> 
> # umount /backup || rc=$?
> 
> lvmsnapshot.sh remove scafell || rc=$?

Couple thoughts:

I wouldn't have dirvish-runall conditional on dirvish-expire succeeding (&&).  Running your scheduled backup is (presumably) too important to skip just because some old copies might have failed deleting (actually I'm not sure what conditions would cause dirvish-expire to return non-zero, but I'd want to press on with the backups regardless).

While you're at it, put dirvish-expire before your lvm snapshot creation.  Expiring could take awhile, and you'd just be making the snapshot volume store more blocks (if it's a write-heavy LV) by increasing the time between LV snapshot creation and deletion.

That done, you'd get rid of the && before the dirvish-runall line, and you could have:

dirvish-runall --quiet
rc=$?

Which hopefully wouldn't have the error ...

the rc=$? doesn't actually cause the rest of the script to block, you shouldn't hit that line until dirvish-runall finishes, and it just saves the return code.  In other words, I don't know why the script, as you have it, appears to run dirvish-runall asyncronously as if you had & at the end of the line.

Another thought: after making the changes I mentioned above, try:

time dirvish-runall --quiet
rc=$?

Assuming you're getting cron email, it would be interesting to verify how quickly dirvish-runall is returning while you're debugging.  Thinking along similar lines, remove the --quiet and make sure the vault name is echoing.

Last thought would be to switch to post/pre-server commands for the vault in question (assuming a local dirvish backup from the looks of it? ... otherwise pre/post-client).  Would be "cleaner" if you have other vaults to backup that don't need to be inside the snapshot critical-space. :-)

Eric


More information about the Dirvish mailing list