Howto Perform Backup Restores with Amanda with the Tape Spanning Feature

NEVER NEVER NEVER EVER ATTEMPT TO RESTORE DATA IN PLACE, ON TOP OF THE ORIGINAL DATA, UNLESS YOU REALLY KNOW WHAT YOU ARE DOING! YOU WILL WIPE OUT ALL THE PRE-EXISTING DATA. RATHER CREATE A TEMPORARY DIRECTORY, RESTORE IN THERE AND COPY/MOVE THE DATA IN PLACE MANUALLY.

(:toc:)


CVS tag kept for nostalgic purposes:

$Id: howto-amanda-restore.txt,v 1.7 2010–08–26 20:05:00 malin Exp $

$Author: malin $

$Date: 2010–08–26 20:05:00 $


There are many ways to restore files with amanda, all depending if the amanda config is online and if the index/logs are online.

Levels of functionality for restore:

OSAmandaConfigLogsIndexesRestore program
XXXXXamrecover
XXXX amfetchdump
XX   amrestore(*)
X    Bare metal

(*) not changer-aware.

Amfetchdump

To restore an entire DLE you should use amfetchdump if it is using the tape-spanning feature. Note that all the logs must be online to use this method. If somehow the logs are lost you can recreate them with amfetchdump -i log <config>.

This might not be true even if the online doc says so. Caveat Emptor.
The syntax presented below might not be completely up to date. Read the man page to make sure!

The amfetchdump syntax is:

amfetchdump [-pcClawns] [-d device] [-O directory] [-b blocksize] \
config hostname [disk [ date [ level [ hostname [...] ] ] ]]      \
[-o configoption]...

See man amfetchdump for more info.

The options hostname, diskname, date, level are pattern-matching regex. That means that you cannot use a date as reported by amadmin <conf> find <host> <disk> as it will be outputed like `2010–01–09–11–05–22’. You must remove the dashes. Also, amfetchdump doesn’t know about the history of a DLE and won’t help you to do a full restore up to a certain date. You have to walk through manually all the sessions (full and intermediate incrementals levels) and the tapes used in those to perform a full restore up to a specific date. To find those tapes use the amadmin command:

su amanda -c "~amanda/sbin/amadmin <CONF> info <HOST> <DLE>"

The amfetchdump command must be run as user ‘amanda’ (2.5.x doesn’t check the effective uid’s and gid’s but newer versions do enforce them) and it’s output is piped to gnutar as root.

Example of a full restore of DLE tutor:/raid/hrrt6 in (already existing) directory /holddisk/restore/hrrt6:

root@grumpy:$ su amanda -c "~amanda/sbin/amfetchdump -p -d tape:/dev/nst1 \
               up tullus /raid/hrrt6 20130921 " | tar -xpGf -
1 volume(s) needed for restoration
The following volumes are needed: av48-2_up_Q00007
Press enter when ready
IT IS ABSOLUTELY VITAL TO LOAD ALL THE TAPES WITH THE AMANDA TOOLS!

At this point you have to load the tape(s) requested if they are not in the changer and update amanda’s knowledge of where they are by using amtape CONF update [what]. Manually loading the tape using mtx won’t do as amfetchdump uses the state file ~amanda/etc/amanda/av24-state as specified by the variable ‘changerfile’ in the amanda config file and it has to be updated before starting the restore.

So in this case you would load the tape in the library, in let say, slot 6, and type:

~# su amanda -c "~amanda/sbin/amtape down update 6"
scanning slot 6
update complete

~# su amanda -c "/opt/amanda/sbin/amtape up label av48-2_up_Q00007"
slot 6: av48-2_up_Q00007
slot   6: time 20130922201102 label av48-2_up_Q00007
label av48-2_up_Q00007 is now loaded from slot 6

Let the command finish and press enter in the window with the amfetchdump command. You should get an output like:

amfetchdump: 1: restoring split dumpfile: date 20130921201101 host tullus disk /raid/hrrt6 part 1/UNKNOWN lev 0 comp N program APPLICATION
41869312 kb 
amfetchdump: 2: restoring split dumpfile: date 20130921201101 host tullus disk /raid/hrrt6 part 2/UNKNOWN lev 0 comp N program APPLICATION
...

If the tapes needed are already in the library then use the amfetchdump option -a rather then prompting the operator to load them. For multi-tapes restore you can just hit return after amfetchdump request the 2nd tape as it will just try to find it itself.

A final note: I tested the amfetchdump option -O (output restored files to this directory, instead of to the current working directory) in Amanda versions prior to 3.3.4 only to find that it didn’t work. Suffice to say that this is very dangerous. I will make a test with 3.3.4 to see it it works as documented in the man page.

Amfetchdump and Zmanda Enterprise Edition

  • Zmanda server commands requires the use of sudo -u amandabackup some_command rather than su amanda -c “some_command”.
  • This introduces a few quirks since in the pure Amanda case there are some permissions and ownerships to take care of and so the syntax is different.
~# sudo -u amandabackup amadmin isilon find edgar-xge

date                host      disk        lv tape or file          file part status
2017-09-07 00:15:06 edgar-xge /opt/amanda  0 isilon-NEO-T48-B00022    7  1/1 OK 
2017-09-08 00:15:08 edgar-xge /opt/amanda  0 isilon-NEO-T48-B00025    8  1/1 OK 
2017-09-09 00:15:07 edgar-xge /opt/amanda  0 isilon-NEO-T48-B00028    8  1/1 OK 
2017-09-10 00:15:08 edgar-xge /opt/amanda  0 isilon-NEO-T48-B00033    7  1/1 OK 
2017-09-11 00:15:07 edgar-xge /opt/amanda  0 isilon-NEO-T48-B00036   10  1/1 OK 


~# sudo -u amandabackup /usr/sbin/amfetchdump -p isilon edgar-xge /opt/amanda 20170911 | tar -xpGf -

or

~# sudo -u amandabackup /usr/sbin/amfetchdump isilon edgar-xge /opt/amanda 20170911


Amrecover

amrecover uses the index files to know on which tape(s) is a particular file. This is the best way to proceed for a small restore.

NEVER DO AN AMRECOVER RESTORE IN PLACE UNLESS YOU DO A FULL RESTORE! DOING SO WILL ZAP THE ENTIRE PREEXISTING CONTENT OF THE WORKING DIRECTORY.

Create a temp directory with sufficient disk space, do the restore, then if satisfied, move the stuff to it’s original location. Make sure to keep the ownerships and timestamps intact. Also, since the executables are compiled with some defaults that might not be applicable to the config in use for amrecover, YOU ABSOLUTELY HAVE TO SPECIFY THE CONFIG NAME ON THE COMMAND LINE, ‘-C <config>’. Again, as with amfetchdump, you have to update the amanda state file if the tapes required are not loaded in the library.

Summary: at the amrecover prompt you issue something like:

amrecover> listhost
amrecover> listdisk
amrecover> sethost <client>
amrecover> setdisk <dle_name>
amrecover> setdate <timestamps>
amrecover> setdevice -h <tape_server> changer
amrecover> cd <some_path>
amrecover> lpwd
amrecover> ls
amrecover> lcd <some_path>
amrecover> history
amrecover> add <some_file>
amrecover> extract
amrecover> quit

Here’s an example:

root@grumpy:$ ~amanda/sbin/amrecover -C right1 -s grumpy -t grumpy
AMRECOVER Version 2.6.0p2. Contacting server on grumpy ...
220 grumpy AMANDA index server (2.6.0p2) ready.
Setting restore date to today (2008-11-17)
200 Working date set to 2008-11-17.
200 Config set to left1.
501 Host grumpy is not in your disklist.
Trying host grumpy.bic.mni.mcgill.ca ...
501 Host grumpy.bic.mni.mcgill.ca is not in your disklist.
Trying host grumpy ...
501 Host grumpy is not in your disklist.
Trying host grumpy.bic.mni.mcgill.ca ...
501 Host grumpy.bic.mni.mcgill.ca is not in your disklist.
Use the sethost command to choose a host to recover
amrecover> 

amrecover> listhost
200- List hosts for config left1
201- gertrude
201- yorick
201- gloria
201- shadow
201- bigbrain
201- gaspar
201- cicero
201- mail
200  List hosts for config left1
amrecover> sethost grumio
amrecover> setdisk /export_raid00/data-flob
200 Disk set to /export_raid00/data-flob.
amrecover> setdevice -h grumpy changer
Using tape "changer" from server grumpy.
amrecover> lpwd
/export_raid05/restore-test
amrecover> ls
2007-09-26 sebas/
2007-09-26 schad/
2007-09-26 marita/
2007-09-26 lost+found/
2007-09-26 jens/
2007-09-26 danielle/
2007-09-26 .
amrecover> cd schad
/export_raid00/data-flob/schad
amrecover> ls
2007-09-26 db027867/
2007-09-26 db025687.zip
2007-09-26 .
amrecover> add db025687.zip
amrecover> history
200- Dump history for config "right1" host "grumio" disk
/export_raid00/data-flob
201- 2007-09-26 0 av24-1_right1_T00009L3:39,40,41,42,43,44
201- 2007-09-25 1 av24-1_right1_T00008L3:41
201- 2007-09-24 1 av24-1_right1_T00006L3:19
201- 2007-09-23 1 av24-1_right1_T00005L3:83
201- 2007-09-22 1 av24-1_right1_T00029L3:52
201- 2007-09-21 1 av24-1_right1_T00028L3:87
201- 2007-09-20 0 av24-1_right1_T00027L3:7,8,9,10,11,12
201- 2007-09-19 1 av24-1_right1_T00026L3:63
201- 2007-09-18 1 av24-1_right1_T00025L3:15
201- 2007-09-17 1 av24-1_right1_T00024L3:45
201- 2007-09-16 1 av24-1_right1_T00014L3:83
201- 2007-09-15 1 av24-1_right1_T00013L3:62
201- 2007-09-14 0 av24-1_right1_T00012L3:14,15,16,17,18,19
201- 2007-09-13 1 av24-1_right1_T00022L3:44,45,46,47,48,49
201- 2007-09-12 1 av24-1_right1_T00017L3:90,91;av24-1_right1_T00018L3:1,2,3,4
201- 2007-09-10 0 av24-1_right1_T00002L3:70,71,72,73,74,75
201- 2007-09-09 0 av24-1_right1_T00011L3:98,99,100,101,102,103
200 Dump history for config "right1" host "grumio" disk
/export_raid00/data-flob
amrecover> setdate 2007-09-26
200 Working date set to 2007-09-26.
amrecover> extract

Extracting files using tape drive changer on host grumpy.
The following tapes are needed: av24-1_right1_T00009L3

Restoring files into directory /export_raid05/restore-test
Continue [?/Y/n]? y

Extracting files using tape drive changer on host grumpy.
Load tape av24-1_right1_T00009L3 now
Continue [?/Y/n/s/t]? 
./schad/db025687.zip
amrecover> quit
200 Good bye.

Restore with Amanda Config But Without The Log and Index Files.

There are 2 ways to proceed:

  1. Extract the chunks with amrestore and manually reassemble them or
  2. Concatenate them together and pipe the result to GNUtar.
############### The only things required to be known for a succesfull restore are:
############### the application used for the backup: GNU tar version 1.26
############### the blocksize used to access the tape device: 2048KB or 2097152, 
############### the "-b" argument of amrestore command used below.

Extract the chunks with amrestore and manually reassemble them

This way of proceeding will create a series of files in the current dir named like hostname.diskname.datestamp.dumplevel.chunknumber
If the dump is split across multiple tapes the last chunk on tape is truncated and is therefore not a good one and amrestore will name it with a ‘tmp’ extension. The first chunk on the next tape will rewrite it.

As of Amanda-3.x this is not true anymore: Amanda now properly detects EOT and the last chunk at the tape end is good and can be/has to be used to recreate the archive. This was an important concern with previous versions of Amanda in the context of a tape-spanning dump and bare-metal restore. Now the second method explained below can be safely used in all cases, tape-spanning or not. The first method is still very instructive of the inner workings of Amanda and is thus still useful.
  • Shown below is an example of an archive on tapes of a DLE called tatania-xge:/raid/ai.
  • Make a tmpdir with proper ownerships and permissions for the Amanda user (amrestore need to be run as Amanda user).
  • You must specify the tape blocksize used to create the archive, here we used 2048KiB or 2097152 bytes.
  • An excerpts of the tape contents show that the chunks we are interested in are on tape file 22 and 23 on tape archive-ace-004 and tape file 1 and 2 on tape archive-ace-005, ie, the archived DLE spans 2 tapes:
edgar:~# cat ~amanda/usr/adm/amanda/archive-ace/log/archive-ace-004.toc
  #  Server:/partition                       date            lev  size[Kb]
  0  archive-ace-004:                        20160422153902    -         -
  1  tatania-xge:/raid/nihpd                 20160422153902    0        *0
  2  tatania-xge:/raid/nihpd                 20160422153902    0        *0
  3  tatania-xge:/raid/nihpd                 20160422153902    0        *0
  4  tatania-xge:/raid/nihpd                 20160422153902    0        *0
  5  tatania-xge:/raid/nihpd                 20160422153902    0        *0
  6  tatania-xge:/raid/nihpd                 20160422153902    0        *0
  7  tatania-xge:/raid/nihpd                 20160422153902    0        *0
  8  tatania-xge:/raid/nihpd                 20160422153902    0        *0
     tatania-xge:/raid/nihpd                 20160422153902    0 309757880
  9  tatania-xge:/raid/nih2                  20160422153902    0        *0
 10  tatania-xge:/raid/nih2                  20160422153902    0        *0
     tatania-xge:/raid/nih2                  20160422153902    0 194610220
 11  tullus-xge:/raid/nihpd_scratch01        20160422153902    0        *0
 12  tullus-xge:/raid/nihpd_scratch01        20160422153902    0        *0
 13  tullus-xge:/raid/nihpd_scratch01        20160422153902    0        *0
 14  tullus-xge:/raid/nihpd_scratch01        20160422153902    0        *0
 15  tullus-xge:/raid/nihpd_scratch01        20160422153902    0        *0
 16  tullus-xge:/raid/nihpd_scratch01        20160422153902    0        *0
 17  tullus-xge:/raid/nihpd_scratch01        20160422153902    0        *0
 18  tullus-xge:/raid/nihpd_scratch01        20160422153902    0        *0
 19  tullus-xge:/raid/nihpd_scratch01        20160422153902    0        *0
 20  tullus-xge:/raid/nihpd_scratch01        20160422153902    0        *0
 21  tullus-xge:/raid/nihpd_scratch01        20160422153902    0        *0
     tullus-xge:/raid/nihpd_scratch01        20160422153902    0 104914283
 22  tatania-xge:/raid/ai                    20160422153902    0        *0
 23  tatania-xge:/raid/ai                    20160422153902    0        *0
 23  total:on_tape                           -                 - 215768666

edgar:~# cat ~amanda/usr/adm/amanda/archive-ace/log/archive-ace-005.toc
  #  Server:/partition                       date            lev  size[Kb]
  0  archive-ace-005:                        20160422153902    -         -
  1  tatania-xge:/raid/ai                    20160422153902    0        *0
  2  tatania-xge:/raid/ai                    20160422153902    0        *0
     tatania-xge:/raid/ai                    20160422153902    0 246080870
  3  tatania-xge:/raid/neuralyse1            20160422153902    0        *0
     tatania-xge:/raid/neuralyse1            20160422153902    0 103002790
  3  total:on_tape                           -                 - 236115980
  -  total:origin                            -                 - 749586891
  • Load the first required tape, archive-ace-004:
~# su amanda -c "~amanda/sbin/amtape archive-ace label archive-ace-004"
slot 4: archive-ace-004
slot   4: time 20160422153902 label archive-ace-004
label archive-ace-004 is now loaded from slot 4
  • Start the restore of tape file 22 and 23, starting to scan at file 22 (-f 22) to speed up things.
  • Use a tape blocksize of 2048KiB (-b 2097152), the same used to create the archive.
  • Use a tape device tape:/dev/nst0, as the volume might be a virtual tape on disk or even a Amazon S3 bucket.
~# su amanda -c "~amanda/sbin/amrestore -f 22 -b 2097152 tape:/dev/nst0 tatania-xge /raid/ai"
Restoring from tape archive-ace-004 starting with file 22.
amrestore: 22: restoring split dumpfile: date 20160422153902 host tatania-xge disk /raid/ai part 1/UNKNOWN lev 0 comp N program APPLICATION
amrestore: 23: restoring split dumpfile: date 20160422153902 host tatania-xge disk /raid/ai part 2/UNKNOWN lev 0 comp N program APPLICATION
  • Verify that the chunks are there.
  • Notice the first chunk size is 100GiB, as specified in the LTO5 tapetype definition of the Amanda config.
  • Notice also the the last chunk has been truncated but Amanda is now smart enough to cope with this. It didn’t used to be the case in versions previous to 3.X as explained above.
~# ls -la
total 167493448
drwxr-xr-x 2 amanda disk         4096 Apr 23 12:47 ./
drwxr-xr-x 3 root   root           41 Apr 23 11:11 ../
-rw------- 1 amanda disk 107374182400 Apr 23 12:14 tatania-xge._raid_ai.20160422153902.0.0000001
-rw------- 1 amanda disk   8304721920 Apr 23 12:15 tatania-xge._raid_ai.20160422153902.0.0000002
  • We now get the first two tape files from tape archive-ace-005 to complete the chunks needed to reconstitute the archive.
  • amrestore will stop restoring when it detects the chunk’s label doesn’t match the DLE specified on the command line.
~# su amanda -c "~amanda/sbin/amtape archive-ace label archive-ace-005"
slot 5: archive-ace-005
slot   5: time 20160422153902 label archive-ace-005
label archive-ace-005 is now loaded from slot 5
~# su amanda -c "~amanda/sbin/amrestore -b 2097152 /dev/nst0 tatania-xge /raid/ai"
Restoring from tape archive-ace-005 starting with file 1.
amrestore: 1: restoring split dumpfile: date 20160422153902 host tatania-xge disk /raid/ai part 3/UNKNOWN lev 0 comp N program APPLICATION
amrestore: 2: restoring split dumpfile: date 20160422153902 host tatania-xge disk /raid/ai part 4/UNKNOWN lev 0 comp N program APPLICATION
amrestore: 3: skipping split dumpfile: date 20160422153902 host tatania-xge disk /raid/neuralyse1 part 1/UNKNOWN lev 0 comp N program APPLICATION
  • List the chunks files and concatenate them together, in the proper order, the create a tar archive.
  • Verify that the tar file archive it is a good, healthy one:
~# ls -la
total 246081548
drwxr-xr-x 2 amanda disk         4096 Apr 23 12:59 ./
drwxr-xr-x 3 root   root           41 Apr 23 11:11 ../
-rw------- 1 amanda disk 107374182400 Apr 23 12:14 tatania-xge._raid_ai.20160422153902.0.0000001
-rw------- 1 amanda disk   8304721920 Apr 23 12:15 tatania-xge._raid_ai.20160422153902.0.0000002
-rw------- 1 amanda disk 107374182400 Apr 23 12:59 tatania-xge._raid_ai.20160422153902.0.0000003
-rw------- 1 amanda disk  28934406144 Apr 23 13:02 tatania-xge._raid_ai.20160422153902.0.0000004

~# file *
tatania-xge._raid_ai.20160422153902.0.0000001: POSIX tar archive (GNU)
tatania-xge._raid_ai.20160422153902.0.0000002: data
tatania-xge._raid_ai.20160422153902.0.0000003: data
tatania-xge._raid_ai.20160422153902.0.0000004: data
tatania-xge._raid_ai.20160422153902.0.tar:     POSIX tar archive (GNU)

~# cat tatania-xge._raid_ai.20160422153902.0.000000* > tatania-xge._raid_ai.20160422153902.0.tar
~# ls -la
total 492163088
drwxr-xr-x 2 amanda disk         4096 Apr 23 13:32 ./
drwxr-xr-x 3 root   root           41 Apr 23 11:11 ../
-rw------- 1 amanda disk 107374182400 Apr 23 12:14 tatania-xge._raid_ai.20160422153902.0.0000001
-rw------- 1 amanda disk   8304721920 Apr 23 12:15 tatania-xge._raid_ai.20160422153902.0.0000002
-rw------- 1 amanda disk 107374182400 Apr 23 12:59 tatania-xge._raid_ai.20160422153902.0.0000003
-rw------- 1 amanda disk  28934406144 Apr 23 13:02 tatania-xge._raid_ai.20160422153902.0.0000004
-rw-r--r-- 1 root   root 251987492864 Apr 23 13:40 tatania-xge._raid_ai.20160422153902.0.tar

~# tar tf tatania-xge._raid_ai.20160422153902.0.tar
~# echo $?
0
  • Note that GNUtar will clobber the chunks as it completes if you do this ‘in place’, so better stow them in a safe place!
  • You might want to supplement the GNU tar extract options with: -C, —directory=DIR change to directory DIR.
  • Also note that using this technique requires 2 times the amount of disk space used by the DLE, so if you restore a 500GB DLE, you need 1TB, 1 for the chunks and 1TB for the DLE itself…

Concatenate The Tape Chunks Together and Pipe The Result to GNU Tar

  • The other way is to let amrestore send the chunks directly to stdout and pipe them to gnutar.
  • This is the way to go when the dump is not split across multiple tapes as amrestore is not aware of the tape changer.
  • This will only works if the dump is contained in one and one chunk only, ie, this does not work for split dumps.
su amanda -c "~amanda/sbin/amrestore -p -f 4 -b 2097152 tape:/dev/nst0 gustav-xge /raid/nihpd1" | (cd /some/empty/dir && tar -xpGf - )
  • The flag -p pipes the stream to stdout, and the -f 4 make amrestore skips directly to tape file 4 on the volume.
  • It is very important to note that you must do this is an empty dir /some/empty/dir: any pre-existing files and dirs in there will be clobbered!
  • Note that tar should be GNUtar and must be run as root so that permissions and ownerships are restored properly.
  • The tape device can be specified as /dev/nst0 but this is a deprecated syntax and might go away in the future.

Raw, Bare-Metal Restore:

OK, so you don’t have Amanda installed: all you got are just some tapes from an Amanda archive that someone gave you and you want to restore some files from it. Hmmm.

  • First, it is very easy to compile Amanda.
  • No configuration is needed when doing a bare-metal restore as the only thing you really need is the Amanda utility amrestore.
  • It will do all the fancy footwork explained below to extract the archive from the tapes.
  • But lets just assume that for the sake of the argument: you can not or will not compile Amanda. So here we go.

Requirements

  • A tape drive (not even a tape changer) that can read the tapes — we will assume here a LTO5 or LTO6 drive.
  • The barebones Unix utilities and programs to manipulate the tape drive(s) and access tape files: mt, dd, cat, and of course, GNUtar to extract or list the archive content.

Amanda Volume Structure

First, lets explain the Amanda way of stuffing files on a volume, be it a tape or virtual tape/disk/volume.

  • An Amanda volume is just a continuous stream of data with the following structure:
+------------------+----------------+----------+----------------+----------+------+------------------+
|Amanda Tape Label | Chunk Label #1 | Chunk #1 | Chunk Label #2 | Chunk #2 | .... | Last Chunk | EOT |
+------------------+----------------+----------+----------------+----------+------+------------------+
     2048KiB            2048KiB        100GiB        2048KiB       100GiB 
  • This assumes Amanda was configured to create volume archives with a tapetype blocksize of 2048KiB and dumptype chunksize of 100GiB. This is how our local Amanda environment is configured. YMMV.

How To List an Amanda Volume Content

  • Insert a tape, position the tape head to the BOT. Assume tape device is called /dev/nst0.
  • List its content (assume a blocksize of 2048KiB) using the following shell script (lstape):
#!/bin/sh
TAPEDEV="$1"
if [ "$TAPEDEV" = "" ]; then
        echo "you must provide a tape device!"
        exit 1
    else
        while mt -f $TAPEDEV fsf 1 ; do
          dd if=$TAPEDEV bs=2048k count=1 | head -1
          sleep 1
        done
fi
  • You will get an output similar to this, listing the content of the tape by date, DLE’s hostname and directory, chunk part number, backup level, compression and the application program used to create the chunk:
~# lstape /dev/nst0
AMANDA: SPLIT_FILE 20160422153902 tatania-xge /raid/utrecht  part 1/-1  lev 0 comp N program APPLICATION
AMANDA: SPLIT_FILE 20160422153902 tatania-xge /raid/utrecht  part 2/-1  lev 0 comp N program APPLICATION
AMANDA: SPLIT_FILE 20160422153902 tatania-xge /raid/utrecht  part 3/-1  lev 0 comp N program APPLICATION
AMANDA: SPLIT_FILE 20160422153902 gustav-xge /raid/nihpd1  part 1/-1  lev 0 comp N program APPLICATION
AMANDA: SPLIT_FILE 20160422153902 gustav-xge /raid/nihpd1  part 2/-1  lev 0 comp N program APPLICATION
AMANDA: SPLIT_FILE 20160422153902 gustav-xge /raid/nihpd1  part 3/-1  lev 0 comp N program APPLICATION
AMANDA: SPLIT_FILE 20160422153902 gustav-xge /raid/nihpd1  part 4/-1  lev 0 comp N program APPLICATION
AMANDA: SPLIT_FILE 20160422153902 gustav-xge /raid/nihpd1  part 5/-1  lev 0 comp N program APPLICATION
AMANDA: SPLIT_FILE 20160422153902 tatania-xge /raid/sendai1  part 1/-1  lev 0 comp N program APPLICATION
AMANDA: SPLIT_FILE 20160422153902 tatania-xge /raid/sendai1  part 2/-1  lev 0 comp N program APPLICATION
AMANDA: SPLIT_FILE 20160422153902 tatania-xge /raid/sendai1  part 3/-1  lev 0 comp N program APPLICATION
AMANDA: SPLIT_FILE 20160422153902 tatania-xge /raid/sendai1  part 4/-1  lev 0 comp N program APPLICATION
AMANDA: SPLIT_FILE 20160422153902 tatania-xge /raid/sendai1  part 5/-1  lev 0 comp N program APPLICATION
AMANDA: SPLIT_FILE 20160422153902 gustav-xge /raid/nih1  part 1/-1  lev 0 comp N program APPLICATION
AMANDA: SPLIT_FILE 20160422153902 gustav-xge /raid/nih1  part 2/-1  lev 0 comp N program APPLICATION
AMANDA: SPLIT_FILE 20160422153902 gustav-xge /raid/nih1  part 3/-1  lev 0 comp N program APPLICATION
AMANDA: SPLIT_FILE 20160422153902 gustav-xge /raid/nih1  part 4/-1  lev 0 comp N program APPLICATION
AMANDA: SPLIT_FILE 20160422153902 gustav-xge /raid/nih1  part 5/-1  lev 0 comp N program APPLICATION
AMANDA: SPLIT_FILE 20160422153902 gustav-xge /raid/nih1  part 6/-1  lev 0 comp N program APPLICATION
AMANDA: SPLIT_FILE 20160422153902 gustav-xge /raid/icbm-pedro  part 1/-1  lev 0 comp N program APPLICATION
AMANDA: SPLIT_FILE 20160422153902 tullus-xge /raid/nihpd_scratch02  part 1/-1  lev 0 comp N program APPLICATION
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0.00687954 s, 0.0 kB/s
/dev/nst0: Input/output error

Going in more details:

  • Place the tape head at the BOT and extract the tape label.
  • Fast forward to the first tape mark.
  • Extract the first chunk label, ie the first 2048KiB.
  • Rince and Repeat the last two steps until you hit EOT.
~# mt -f /dev/nst0 status
SCSI 2 tape drive:
File number=0, block number=0, partition=0.
Tape block size 0 bytes. Density code 0x58 (no translation).
Soft error count since last status=0
General status bits on (41010000):
 BOT ONLINE IM_REP_EN

~# dd if=/dev/nst0 count=1 bs=2048k
AMANDA: TAPESTART DATE 20160422153902 TAPE archive-ace-001


1+0 records in
1+0 records out
2097152 bytes (2.1 MB) copied, 2.55526 s, 821 kB/s

~# mt -f /dev/nst0 rewind
~# mt -f /dev/nst0 fsf 1 

~# dd if=/dev/nst0 count=1 bs=2048k
AMANDA: SPLIT_FILE 20160422153902 tatania-xge /raid/utrecht  part 1/-1  lev 0 comp N program APPLICATION
APPLICATION=amgtar
ORIGSIZE=257885650
DLE=<<ENDDLE
<dle>
  <program>APPLICATION</program>
  <disk>/raid/utrecht</disk>
  <level>0</level>
  <auth>BSDTCP</auth>
  <record>NO</record>
  <datapath>AMANDA</datapath>
  <backup-program>
    <plugin>amgtar</plugin>
    <property>
      <name>ignore</name>
      <value encoding="raw" raw="OiBEaXJlY3RvcnkgaXMgbmV3JA==">:_Directory_is_new$</value>      
<value encoding="raw" raw="OiBEaXJlY3RvcnkgaGFzIGJlZW4gcmVuYW1lZA==">:_Directory_has_been_renamed</value>      
<value encoding="raw" raw="OiBmaWxlIGNoYW5nZWQgYXMgd2UgcmVhZCBpdCQ=">:_file_changed_as_we_read_it$</value>      
<value encoding="raw" raw="OiBGaWxlIHJlbW92ZWQgYmVmb3JlIHdlIHJlYWQgaXQk">:_File_removed_before_we_read_it$</value>
<value encoding="raw" raw="OiBzb2NrZXQgaWdub3JlZCQ=">:_socket_ignored$</value>      
<value encoding="raw" raw="OiBDYW5ub3Qgc3RhdDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSQ=">:_Cannot_stat:_No_such_file_or_directory$</value>      
<value encoding="raw" raw="OiBDYW5ub3Qgc2F2ZWRpcjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSQ=">:_Cannot_savedir:_No_such_file_or_directory$</value>
    </property>
    <property>
      <name>check-device</name>
      <value>NO</value>
    </property>
  </backup-program>
</dle>
ENDDLE
To restore, position tape at start of file and run:
	dd if=<tape> bs=2048k skip=1 | /opt/amanda-3.3.0/libexec/amanda/application/amgtar restore [./file-to-restore]+ 


1+0 records in
1+0 records out
2097152 bytes (2.1 MB) copied, 0.101557 s, 20.7 MB/s
  • The recipe to extract the content of the chunk is shown at the end of the chunk label above:
To restore, position tape at start of file and run:
	dd if=<tape> bs=2048k skip=1 | /opt/amanda-3.3.0/libexec/amanda/application/amgtar restore [./file-to-restore]+ 
  • Well, sort of :).
  • This is not tar archive, just one piece of the full one: one must first reassemble all the chunks, concatenate them together to recreate the tar archive and then we can proceed to extract files from it.

Example

  • Extract chunk# 20 from tape archive-ace-001 above.
  • It contains the archive of DLE gustav-xge:/raid/icbm-pedro in one chunk.
  • First, using mt, position the tape head at tape file 20.
  • Use dd to stream out the device content to a file, skipping the first 2048KiB used for the Amanda tape chunk label.
~# mt -f /dev/nst0 fsf 20
~# dd if=/dev/nst0 bs=2048k skip=1 of=_raid_icbm-pedro.001

dd: warning: working around lseek kernel bug for file (/dev/nst0)
  of mt_type=0x72 -- see <sys/mtio.h> for the list of types
dd: warning: working around lseek kernel bug for file (/dev/nst0)
  of mt_type=0x72 -- see <sys/mtio.h> for the list of types
20973+0 records in
20973+0 records out
43983568896 bytes (44 GB) copied, 179.655 s, 245 MB/s

~# ls -la
total 42952708
drwxr-x---  6 amanda disk         131 Apr 24 14:36 ./
drwxr-xr-x 59 root   root        4096 Apr  4  2015 ../
drwxr-x---  2 amanda disk           6 Apr 23 09:51 archive-ace/
drwxr-x---  2 amanda disk           6 Mar 14  2014 archive-hrrt/
drwxr-x---  2 amanda disk           6 Apr 24 07:18 charm/
-rw-r--r--  1 root   root 43983568896 Apr 24 14:39 _raid_icbm-pedro.001
drwxr-x---  2 root   root           6 Apr 23 14:14 restore/

~# file _raid_icbm-pedro.001
_raid_icbm-pedro.001: POSIX tar archive (GNU)

~# tar tf _raid_icbm-pedro.001
~# echo $?
0
  • In the case of an archive containing multiple chunks, proceed as above and extract each chunk.
  • Scanning multiple tapes will be necessary if the archive is spanning multiple tapes.
  • When all chunks have been extracted, concatenate them to recreate the tar archive.
  • Be careful to select a good lexicographic order when using cat, ie, choose a meaningful naming scheme!
  • Finally, be careful of where you will extract/open the tar file, you might clobber already existing files!
~# cat chunk.* > archive.tar

How to Restore Data From a NDMP Client (BIC Isilon Cluster in this case) With Zmanda

NEVER NEVER NEVER EVER ATTEMPT TO RESTORE DATA IN PLACE, ON TOP OF THE ORIGINAL DATA, UNLESS YOU REALLY KNOW WHAT YOU ARE DOING!
YOU WILL WIPE OUT ALL THE PRE-EXISTING DATA.
RATHER CREATE A TEMPORARY DIRECTORY, RESTORE IN THERE AND COPY/MOVE THE DATA IN PLACE MANUALLY.

Directly on the NDMP Client Using the CLI

  • Goal: restore some backup data to an alternate location on the Isilon cluster, preventing the erasure of the original source.
  • Source: DLE /ifs/data/noel/noel9 on the BIC Isilon Cluster
  • Target: /ifs/data/zmanda on the BIC Isilon Cluster. (It must already exist. If not, create it first then come back here).
  • You MUST ABSOLUTELY set the directory property for the target name, otherwise you will do a restore in place and crush any existing data!!.
  • Below, this is done with the amrecover command setproperty directory //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/zmanda
  • The target authentication information must be in /etc/amanda/isilon/ndmp_filer_shares configuration file:
"nfs.isi-node.bic.mni.mcgill.ca" "/ifs/data/dagher/dagher7" "ndmp" "******" md5
"nfs.isi-node.bic.mni.mcgill.ca" "/ifs/data/mica1" "ndmp" "******" md5
"nfs.isi-node.bic.mni.mcgill.ca" "/ifs/data/noel/noel10" "ndmp" "******" md5
"nfs.isi-node.bic.mni.mcgill.ca" "/ifs/data/noel/noel9" "ndmp" "******" md5
"nfs.isi-node.bic.mni.mcgill.ca" "/ifs/data/zmanda" "ndmp" "******" md5
  • List the DLEs in the Backup Set isilon.
  • Check the current info on the DLE to restore:
dow:~# sudo -u amandabackup amadmin isilon dles
dow172 //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/mica1
dow172 //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/mril/mril16
dow172 //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9
dow172 //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel10
dow172 //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/dagher/dagher7

dow:~# sudo -u amandabackup amadmin isilon find dow172 /ifs/data/noel/noel9$

date                host   disk                                                 lv tape or file          file part status
2017-03-29 12:33:07 dow172 //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9  0 isilon-NEO-T48-B00081    6  1/6 OK 
2017-03-29 12:33:07 dow172 //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9  0 isilon-NEO-T48-B00081    7  2/6 OK 
2017-03-29 12:33:07 dow172 //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9  0 isilon-NEO-T48-B00081    8  3/6 OK 
2017-03-29 12:33:07 dow172 //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9  0 isilon-NEO-T48-B00081    9  4/6 OK 
2017-03-29 12:33:07 dow172 //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9  0 isilon-NEO-T48-B00081   10  5/6 OK 
2017-03-29 12:33:07 dow172 //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9  0 isilon-NEO-T48-B00081   11  6/6 OK 
2017-03-31 09:41:33 dow172 //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9  1 isilon-NEO-T48-B00082    2  1/1 OK 
2017-04-01 00:15:06 dow172 //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9  1 isilon-NEO-T48-B00083    2  1/1 OK 
2017-04-02 00:15:07 dow172 //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9  1 isilon-NEO-T48-B00084    2  1/1 OK 
2017-04-03 00:15:07 dow172 //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9  1 isilon-NEO-T48-B00085    3  1/1 OK 
2017-04-04 00:15:07 dow172 //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9  1 isilon-NEO-T48-B00086    4  1/1 OK 
2017-04-05 00:15:07 dow172 //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9  1 isilon-NEO-T48-B00087    4  1/1 OK 
2017-04-06 00:15:08 dow172 //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9  0 isilon-NEO-T48-B00088    4  1/6 OK 
2017-04-06 00:15:08 dow172 //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9  0 isilon-NEO-T48-B00088    5  2/6 OK 
2017-04-06 00:15:08 dow172 //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9  0 isilon-NEO-T48-B00088    6  3/6 OK 
2017-04-06 00:15:08 dow172 //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9  0 isilon-NEO-T48-B00088    7  4/6 OK 
2017-04-06 00:15:08 dow172 //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9  0 isilon-NEO-T48-B00088    8  5/6 OK 
2017-04-06 00:15:08 dow172 //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9  0 isilon-NEO-T48-B00088    9  6/6 OK 
2017-04-07 00:15:08 dow172 //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9  1 isilon-NEO-T48-B00089    2  1/1 OK 
2017-04-08 00:15:07 dow172 //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9  1 isilon-NEO-T48-B00090    2  1/1 OK 
2017-04-09 00:15:08 dow172 //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9  1 isilon-NEO-T48-B00091    3  1/1 OK 
2017-04-10 00:15:09 dow172 //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9  1 isilon-NEO-T48-B00092    4  1/1 OK 
2017-04-11 00:15:09 dow172 //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9  1 isilon-NEO-T48-B00093    3  1/1 OK 
2017-04-12 00:15:07 dow172 //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9  1 isilon-NEO-T48-B00094    3  1/1 OK 
  • Here we go. Start the Amanda recover process amrecover -C isilon as root on the Amanda server.
  • You must specify the configuration name on the command line, -C isilon.
  • Essentially, the process is the following:
    • Select the host: sethost dow172
    • Select the DLE: setdisk //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9
    • View history and select a date:
      • history
      • setdate 2017–04–12. (The date input syntax is YYYY-MM-DD-HH-MM[-SS] | YYYY-MM-DD, default: now)
  • Select the target dir: setproperty directory //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/zmanda THIS IS VERY IMPORTANT!
  • Select the files to extract: add somefiles_or_dirs. (This is a shell glob NOT a regex)
  • Start the extract: extract.
  • If the tapes/volumes are in the changer or on the holddisk, they will be made available automatically.
  • If not, load the needed volumes and in another shell, update the changer inventory:
    • sudo -u amandabackup amtape isilon update slotX-slotY, specify the slot range to update.
/usr/sbin/amrecover -C isilon
AMRECOVER Version 3.3.9. Contacting server on localhost ...
220 dow AMANDA index server (3.3.9) ready.
Setting restore date to today (2017-03-14)
200 Working date set to 2017-03-14.
200 Config set to isilon.
501 Host dow is not in your disklist.
Trying host dow.bic.mni.mcgill.ca ...
501 Host dow.bic.mni.mcgill.ca is not in your disklist.
Trying host dow ...
501 Host dow is not in your disklist.
Trying host dow.bic.mni.mcgill.ca ...
501 Host dow.bic.mni.mcgill.ca is not in your disklist.
Use the sethost command to choose a host to recover
amrecover> listhost
200- List hosts for config isilon
201- dow172
201- 127.0.0.1
200  List hosts for config isilon
amrecover> sethost dow172
200 Dump host set to dow172.
amrecover> listdisk 
200- List of disk for host dow172
201- //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/mica1
201- //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/mril/mril16
201- //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9
201- //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel10
201- //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/dagher/dagher7
200 List of disk for host dow172
amrecover> setdisk //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9
200 Disk set to //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9.
amrecover> history
200- Dump history for config "isilon" host "dow172" disk //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9
201- 2017-04-12-00-15-07 1 isilon-NEO-T48-B00094:3
201- 2017-04-11-00-15-09 1 isilon-NEO-T48-B00093:3
201- 2017-04-10-00-15-09 1 isilon-NEO-T48-B00092:4
201- 2017-04-09-00-15-08 1 isilon-NEO-T48-B00091:3
201- 2017-04-08-00-15-07 1 isilon-NEO-T48-B00090:2
201- 2017-04-07-00-15-08 1 isilon-NEO-T48-B00089:2
201- 2017-04-06-00-15-08 0 isilon-NEO-T48-B00088:4,5,6,7,8,9
201- 2017-04-05-00-15-07 1 isilon-NEO-T48-B00087:4
201- 2017-04-04-00-15-07 1 isilon-NEO-T48-B00086:4
201- 2017-04-03-00-15-07 1 isilon-NEO-T48-B00085:3
201- 2017-04-02-00-15-07 1 isilon-NEO-T48-B00084:2
201- 2017-04-01-00-15-06 1 isilon-NEO-T48-B00083:2
201- 2017-03-31-09-41-33 1 isilon-NEO-T48-B00082:2
201- 2017-03-29-12-33-07 0 isilon-NEO-T48-B00081:6,7,8,9,10,11
200 Dump history for config "isilon" host "dow172" disk //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9
amrecover> setdate 2017-04-12
200 Working date set to 2017-04-12.
amrecover> setproperty directory //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/zmanda
amrecover> pwd
//nfs.isi-node.bic.mni.mcgill.ca/ifs/data/noel/noel9
amrecover> ls
2017-04-06-00-15-08 TLE_prepost_project/
2017-04-06-00-15-08 TLE_3T_Trio/
2017-04-06-00-15-08 TEST-virtual-machine/
2017-04-06-00-15-08 SoftWares/
2017-04-06-00-15-08 Controls_3T_Trio/
2017-04-06-00-15-08 ._.DS_Store
2017-04-06-00-15-08 .Trash-2551/
2017-04-06-00-15-08 .DS_Store
2017-04-06-00-15-08 .
amrecover> add .
Added dir /. at date 2017-04-06-00-15-08
amrecover> extract

Extracting files using tape drive changer on host localhost.
The following tapes are needed: isilon-NEO-T48-B00088

Extracting files using tape drive changer on host localhost.
Load tape isilon-NEO-T48-B00088 now

Continue [?/Y/n/s/d]? y
Restoring files into target host //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/zmanda
All existing files in //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/zmanda can be deleted
Continue [?/Y/n]? y

DLMn "\n\tIsilon NDMP 2.3.0\n\tOneFS: B_MR_8_0_0_1_131\n\tSession ID: 4.51773"
CLMd "mover going active"
DLMn "Filetransfer: Transferred 130400317440 bytes in 655.594 seconds throughput of 194242.344 KB/s"
DLMn "\n\tObjects (scanned/recovered):\n\t----------------------------\n\tRegular Files:\t\t(129062/129062)\n\tSparse Files:\t\t(0/0)\n\tStub Files:\t\t(0/0)\n\tDirectories:\t\t(686/686)\n\tADS Entries:\t\t(0/0)\n\tADS Containers:\t\t(0/0)\n\tSoft Links:\t\t(0/0)\n\tHard Links:\t\t(60/60)\n\tBlock Device:\t\t(0/0)\n\tChar Device:\t\t(0/0)\n\tFIFO:\t\t\t(0/0)\n\tSocket:\t\t\t(0/0)\n\tWhiteout:\t\t(0/0)\n\tUnknown:\t\t(0/0)\n"
DLMn "\n\tFile Size (count)\n\t----------------------------\n\t== 0\t\t\t89\n\t<= 8k\t\t\t3734\n\t<= 64k\t\t\t711\n\t<= 1M\t\t\t119550\n\t<= 20M\t\t\t4535\n\t<= 100M\t\t\t447\n\t<= 1G\t\t\t55\n\t > 1G\t\t\t1\n\t-------------------------\n\tTotal Files:\t\t129122\n\tTotal Bytes:\t\t130104474516\n\tMax Size:\t\t1657866240\n\tMean Size:\t\t1007608\n"
SESS "Operation ended OKAY"
SESS "LOG_FILE messages: 1 OK, 0 ERROR, total 1 of 1"
amrecover> quit

Away from the NDMP Client on the Amanda (Linux) Server Itself

  • This is possible because the NDMP backups are done on the client using bsdtar and gnutar can understand and extract bsdtar archives.
  • Some meta-attributes are tagged in when that backup is created on the NDMP client and must be removed to make Gnutar happy.
  • This entails some loss of info, like the Cluster ID and file ‘birthtime’ and probably some other extra tokens put by the OneFS filesystem related to Samba, etc.
  • However, the data itself, filenames, directories, etc, along with their ownerships and atime,ctime,mtime are all extracted correctly and this is all and only what we want.
  • Below, I have extracted the dump file ./dow172.__nfs.isi-node.bic.mni.mcgill.ca_ifs_data_noel_noel9.20170310113914.0 for a DLE using amfetchdump -p as explained above.
  • Create a temporary directory, say /holddisk/restore/noel9 and use the command:
tar --pax-option="delete=ISI.enc_path"       \
    --pax-option="delete=ISI.archive_ver"    \
    --pax-option="delete=ISI.clusterID"      \
    --pax-option="delete=ISI.symlink_enc"    \
    --pax-option="delete=ISI.sparse.mapsize" \
    --pax-option="delete=birthtime"          \
    --pax-option="delete=linkoffset"         \
    --pax-option="delete=SCHILY.nlink"       \
    --pax-option="delete=SCHILY.ino"         \
    --pax-option="delete=SCHILY.fflags"      \
    --pax-option="delete=SCHILY.dev"         \
    -C /holddisk/restore/noel9 -xf ./dow172.__nfs.isi-node.bic.mni.mcgill.ca_ifs_data_noel_noel9.20170310113914.0

Using ZMC, the Zmanda Management Console, aka the Web Interface

  • OK, so I’ll have to put pretty snapshots of the ZMC…
  • Start a browser and point to the Amanda server URI, dow.bic.mni.mcgill.ca
  • Login using the Amanda ZMC user amanda. You will need the proper credentials.
  • You can skip the Resume Session, Check Server Installation or Sync Backup Sets stuff if you want.
  • Select the Backup Set isilon;, ie, the Amanda configuration name you want to restore a DLE from.
  • isilon is the default one for the moment and the only you can choose from as it is unique for the time being.
  • Click on the Restore tab.
  • At this point you are ready to select:
    • the time of the restore
    • the restore device (only one choice, as there is only one changer to choose from: neo_t48)
    • the alias/directory path
    • the files/dirs selection from the DLE (Restore All, Explore and Select, Search Specific Files)
  • Clicking in the Alias/Directory Path will bring a popup at the right.
    • Select which DLE you want to restore from. (Here I selected //nfs.isi-node.bic.mni.mcgill.ca/ifs/data/dagher/dagher7).
  • I choose Today as time of the restore and Restore All.
  • Click Next to select where the restore will end up.
DO NOT SELECT THE ORIGINAL DLE PATH FOR THE DESTINATION OF THE RESTORE: YOU WILL CLOBBER THE DLE IF YOU DO SO!!!
  • Here I selected Volume Name /ifs and Directory /data/zmanda:
  • Make sure /ifs/data/zmanda exists on the Isilon Cluster: the restore will fail if doesn’t.
  • Use the NDMP username ndmp (you will need its credentials) and select MD5 as Auth type.
  • Clicking Next gets you to this:
  • A few notes about the above:
    • Verify the sub-panel Restore from Backup Image of really contains what you previously selected.
    • The sub-panel Restore to Destination will contain localhost as the Destination Host. That’s fine.
    • The sub-panel Media Needed will tell you which tape/volumes are necessary to perform the restore.
    • Make sure they are all loaded in the changer slots allocated to the Amanda configuration.
  • Click on the big green arrow to start the restore:
  • When the restore ends:
  • You can check the state of NDMP session on the Isilon Cluster when the restore is under way by login to the management CLI on the cluster and running the command:
BIC-Isilon-Cluster-4# isi ndmp sessions ls   
Session  Data   Mover  OP   Elapsed Time  Bytes Moved  Throughput 
------------------------------------------------------------------
5.19383  ACTIVE IDLE   R(F) 1m 0s         6.965GB      136.81MB/s 
------------------------------------------------------------------
Total: 1
  • Congratulations. You now know how to restore stuff from ZMC.