Version 23 (modified by Bruno Cornec, 11 years ago) ( diff )

Add modify_iso script example

This page is targetted at providing a more living documentation for MondoRescue vs the current HOWTO.

The foolowing points could also be more easily addressed by using a new trac version (0.11) and the TracDocbookPlugin

The current idea is this one:

I think it's time for a documentation revamp phase.
My goals are in order:

1/ Unify the 2 existing FAQs on the wiki
   Advantage: Single point of info
   Drawback: Breaks existing references.
2/ Keep an official doc under docbook to generate multiple formats (HTML, PDF, RTF, Text, ...)
   Advantage: Easier access whatever context. Put under SVN for each
   version for historicl purposes
   Drawback: Need to write/use a trac2docbook tool. Increase check phase
   before release.
3/ Put the whole doc on the wiki and merge with some existing pages
   Advantage: easy modifications.
   Drawback: Control of the content
4/ Allow for bi-directional modifications (docbook *and* wiki)
   Advantage: easy modifications with vim on my side in docbook
   (copy/paste, search replace, ...)
   Drawback: Need to write/use a docbook2trac tool. Increase check phase

Now some questions:

- Does that sound like a good idea ?
- Who would like to volunteer to help ? (especially neither Victor nor
  myself are native english speakers so fixes are always welcome here).
Note that if there is no volunteer, I'm must less inclined to to more
than the FAQ, as it represents quite some work, and the current status is
for me working well (except for some content but that could be fixed

The TOC I'd like to propose for the Doc is the following based on the
existing HOWTO:
(Each main chapter could be a dedicated Wiki page)

1. About this Guide
    1.1. Purpose / Scope of this Guide
    1.2. New versions of this document
    1.3. Suggestions / Feedback
    1.4. Aknowledgements
(Updated but not touched that much)

2. QuickStart
(Updated but not touched that much)

3. Overview
(Updated but not touched that much)
    3.1. MondoRescue
    3.2. Mindi
    3.3. Linux Backup
    3.4. Windows Backup
        3.4.1. Windows ME/95/98
        3.4.2. Windows NT4/2K/XP
    3.5. Mondo Rescue and Mindi Linux History
    3.6. System Requirements
        3.6.1. Hardware Requirements
        3.6.2. Kernel Requirements
        3.6.3. Software Requirements

4. Installation
(This should be rewritten, IMO completely using what already exists on
the Web site and the wiki)
    4.1 SVN based installations
    4.2 tar.gz based installations
    4.3 Packages based installations
        4.3.1 Deb based installations
        4.3.2 RPM based installations
        4.3.3 ebuild based installations
        4.3.3 other packages based installations
    4.4 Upstream vs distribution packages
        4.4.1 Deb based installations
        4.4.2 RPM based installations
        4.4.3 ebuild based installations
        4.4.3 other packages based installations

5. Tests
(This one should be increased with a mondoarchive section and also a
debugging part from the Wiki)
    5.1. Testing mindi
    5.2. Testing mondoarchive
    5.3. Testing mondorestore
    5.4. Debugging MondoRescue issues

6. mindi: mini-distribution builder
    6.1. Recommendations
    6.2. Command and Options
    6.3. Distributions specificities

7. Backup
(Updated but not touched that much)
    7.1. Recommendations
    7.2. Backup Commands and Options
        7.2.1. Standard Example With CD-R
        7.2.2. Standard Example With CD-RW
        7.2.3. Standard Example With Tape
        7.2.4. Standard Example With Failsafe kernel
        (This will be removed in 2.2.10)
        7.2.5. Standard Example With Network Backup
    7.3. Distributions specificities

7bis. HOWTO run mondo interactively using cron
(Shouldn't that be rather a section of the previous chapter ?)
(Could someone check whther this is still valid and a problem)
    7.1. Overview
    7.2. Introduction
    7.3. Who should read this?
        7.3.1. Insurance
        7.3.2. Efficiency
    7.4. The Problem
        7.4.1. Cron's environment
        7.4.2. Interactivity
        7.4.3. Screen
    7.5. The Solution
        7.5.1. Briefly
        7.5.2. In Detail

8. Compare
(Updated but not touched that much)

9. Restore
(Updated but not touched that much)
    9.1. Overview
    9.2. Tips and Tricks
        9.2.1. Barebones (Nuke) Restore
        9.2.2. Interactive Restore
        9.2.3. Expert Restore
        9.2.4. Modified partitions - Restore to a different disk geometry
        9.2.5. Advanced
    9.3. Distributions specificities

10. FAQ
(First to be touched and re-formated)
    10.1. Overview and Support
    10.2. General Questions
    10.4. Installation related Questions
        10.4.1. Debian related questions
        10.4.2. Ubuntu related questions
        10.4.3. Fedora related questions
        10.4.4. OpenSuSE related questions
        10.4.5. Mandriva related questions
    10.5. Environment related Questions
       10.5.1. Hardware
       10.5.2. Software
  Boot Loader
    10.6. mindi related Questions
    10.7. mondoarchive related Questions
    10.8. mondorestore related Questions
        10.8.1. Booting issues
        10.8.2. Kernel/Modules issues

What are your feedbacks on this ?


Here is an example script of mondoarchive encapsulation for NFS backup:


# better to got those locally


# Relative path that will be used locally and remotely on the NFS server

if (! test `mount | grep $MOUNT_PATH | wc -l` -eq 0);
  then umount $MOUNT_PATH;

if (! test -d $TEMP_PATH);
  then mkdir -p $TEMP_PATH;
echo "Temp directory $TEMP_PATH created"

if (! test -d $SCRATCH_PATH);
  then mkdir -p $SCRATCH_PATH;
echo "Scratch directory $SCRATCH_PATH created"

if (! test -d $MOUNT_PATH);
  then mkdir -p $MOUNT_PATH;
echo "Mount directory $MOUNT_PATH created"

echo "Try to mount NFS point $NFS_HOST:$NFS_MOUNT on $MOUNT_PATH..."

echo "NFS point ${NFS_HOST}:$NFS_MOUNT mounted on $MOUNT_PATH"

if (! test -d $MOUNT_PATH/$BCKUP_PATH);
  then mkdir -p $MOUNT_PATH/$BCKUP_PATH;
echo "Backup directory $MOUNT_PATH/$BCKUP_PATH created"

BCKUP_NAME=`hostname -s`"-"`date +%Y%m%d%H%M`
echo "Backup name: "$BCKUP_NAME

CMD_LINE="mondoarchive -O -n $NFS_HOST:$NFS_MOUNT -p $BCKUP_NAME -N -d $BCKUP_PATH -s 4380m -S $SCRATCH_PATH -T $TEMP_PATH -E /tmp"
echo "Will run command: $CMD_LINE"

echo "Mondorescue terminated"

umount $MOUNT_PATH
echo "Backup directory $MOUNT_PATH unmounted"

rm -rf $TEMP_PATH
echo "Temp directory $TEMP_PATH removed"

echo "Scratch directory $SCRATCH_PATH removed"

echo "Backup over"

Here is a script example "modify_iso" showing how to to filter out all references to Serviceguard volume groups and disks so recovery program had easier situation. The script is called from mondoarchive's "-B" switch and it need scratch dir as only argument. Example: -B "/scripts/modify_iso /tmp/mondo.$$" (Contribution from Jan Derfinak)



if [ ! -f $1/mondo.scratch.*/mondo.scratch.*/images/all.tar.gz ]; then
  exit 0

mkdir -p /tmp/mondo.modify_iso.$$
cd /tmp/mondo.modify_iso.$$
tar -xzf $1/mondo.scratch.*/mondo.scratch.*/images/all.tar.gz
cd tmp
grep -v /dev/mapper/mpath < mountlist.txt > mountlist.txt~ && mv mountlist.txt~ mountlist.txt
awk '{gsub(/\/dev\/mapper\/mpath[[:alnum:]]*/, ""); print}' < i-want-my-lvm | grep -E -v -e /dev/mpath/mpath -e "($DENY_VG)" > i-want-my-lvm~ && mv i-want-my-lvm~ i-want-my-lvm
cd ..
tar -czf $1/mondo.scratch.*/mondo.scratch.*/images/all.tar.gz *
cd /tmp
rm -rf /tmp/mondo.modify_iso.$$


Boot parameters

The file README.bootparam of the mindi package provides all the parameters one can use at boot time during a MondoRescue restoration.

pre and post parameters

In 2.2.9, mindi introduced 2 new parameters at boot prompt, pre and post. They are used to respectively launch a script just before launching mondorestore, and after its execution.

The main goal is to allow for the pre option to configure for example the HDD layout differently, and to re-configure the systems (static IP address e.g.) for the post option.

If the mastering of the target systems is regular, you can even create a /etc/mindi/mindi.conf configuration file on the master, which could redefine the MINDI_ADDITIONAL_BOOT_PARAMS variable of mindi like this:

cat >> /etc/mindi/mindi.conf << EOF
MINDI_ADDITIONAL_BOOT_PARAMS="devfs=nomount noresume selinux=0 barrier=off udevtimeout=10 pre=/tmp/isodir/ post=/mnt/RESTORING/tmp/"

Of course, these params can be passed at the boot prompt.

And the scripts could contain as an example:

cat > /path/to/nfs/ << EOF
sed -i -e "/vg02/ d" /tmp/mountlist.txt
sed -i -e "/vg03/ d" /tmp/mountlist.txt
cat > /tmp/ << EOF
mount /proc
mount /sys
vgcfgrestore vg02
vgcfgrestore vg03
sed -i -e "s/IPADDR=.*/IPADDR=x.y.z.t/" /mnt/RESTORING/etc/sysconfig/network-scripts/ifcfg-eth0

Of course, those scripts could make more dynamic requests to improve the resulting deployment.

Manual restoration

In the case of a problem during restoration, you have to know that your data are stored in an open format so that you can always have access to them.

A first way to do it is to use the mondorestore command manually on a system where it is installed, and point it to the media containing you data, and then interactively select the files you want to restore in the tree displayed and the place in which mondorestore will re-create them.

A second even more manual way to do it, is to mount your media (if not tape) and extract from it with afio the content you want to restore. A quick howto would be:

# mount /dev/hdb /cdrom

(or if you have the iso-image you use: mount -o loop mondo.iso /cdrom)

Locate the wanted files in /cdrom/archive/filelist.* If you want to find the file fstab:

# grep fstab /cdrom/archives/filelist.*

That might return something like this:


Once you know which number has your wanted files:

mkdir /tmp/mondoextract ; cd /tmp/mondoextract
cat /cdrom/archives/13.afio.lzo | cpio -idvm --verbose

If you used bzip2 instead of lzo, then unpack with:

afio -ZP bzip2 -i /cdrom/archives/13.afio.bz2
Note: See TracWiki for help on using the wiki.