Amanda-Users

Re: 'strange amanda header' errors

2004-08-20 03:08:32
Subject: Re: 'strange amanda header' errors
From: Eric Siegerman <erics AT telepres DOT com>
To: amanda-users AT amanda DOT org
Date: Fri, 20 Aug 2004 02:58:26 -0400
On Fri, Aug 20, 2004 at 07:08:47AM +0800, Scott Frisbie wrote:
> Ran the revised shell and am attaching it to the mail along with the other 
> files.

Thanks.  Unfortunately, all it does is convince me that some
*really weird* stuff is going on :-(

Running the headers through "od -c" was to prove to us that what
you'd shown in your email is what was really there, as opposed to
having been further corrupted by cut-and-paste, CTRL-M's causing
parts of lines to be overwritten on the screen, etc.

I am now convinced that what you showed was for real.  Too bad; I
was really hoping that there were control characters in either
amanda.conf or disklist that were causing this.  There aren't.

Here are those headers, turned back into plain text, but with
non-printable characters turned into escape sequences:

    AMANDA: TAPESTART DATE 20040810 TAPE BootCamp207\n\f\n
    AMANDA: FILE 20040810 192.168.3.224 /home/shared/perllib lev 1 comp"N 
program /bin/gtar\nTo restore,"position tape at start of file and run:\n\tdd 
if=<tape>"bs=32k skip\xBD1"| /bin/gtar -f... -\n\f\n
    AMANDA: FILE 20040810 nis /var/lib/dhcp lev 0 comp N program /bin/gtar\nTo 
restore, position tape at start\xA0of file and run:\n\tdd if=<tape> bs=32k 
skip=1 | /bin/gtar -f... -\n\f\n
    AMANDA: FILE 20040810 intrepid /usr/shares/marketing lev 1 comp"N program 
/bin/gtar\nTo restore,"position tape at start of file and run:\n\tdd 
if=<tape>"bs=32k skip\xBD1"| /bin/gtar -f... -\n\f\n
    AMANDA: FILE 20040810 cvs /etc lev 0 comp"N program /bin/gtar\nTo 
restore,"position tape at start of file and run:\n\tdd if=<tape>"bs=32k 
skip\xBD1"| /bin/gtar -f... -\n\f\n
    AMANDA: FILE 20040810 intrepid /home/mailhub/scottf/recover_test lev 0 
comp"N program /bin/gtar\nTo restore, position tape at start of file and 
run:\n\tdd if=<tape>"bs=32k skip\xBD1"| /bin/gtar -f... -\n\f\n
    AMANDA: FILE 20040810 192.168.3.224 /home/odin/reports/scripts lev 1 comp"N 
program /bin/gtar\nTo restore,"position tape at start of file and run:\n\tdd 
if=<tape>"bs=32k skip\xBD1"| /bin/gtar -f... -\n\f\n
    AMANDA: FILE 20040810 nis /var/yp lev"0 comp N program /bin/gtar\nTo 
restore, position\xA0tape at start\xA0of file and run:\n\tdd if=<tape> bs=32k 
skip=1"| /bin/gtar -f... -\n\f\n
    AMANDA: FILE 20040810 192.168.3.224 /home/odin/stats lev 1 comp"N program 
/bin/gtar\nTo restore,"position tape at start of file and run:\n\tdd 
if=<tape>"bs=32k skip\xBD1"| /bin/gtar -f... -\n\f\n
    AMANDA: FILE 20040810 nis /var/named lev 0 comp"N program /bin/gtar\nTo 
restore,"position tape at start of file and run:\n\tdd if=<tape>"bs=32k 
skip\xBD1"| /bin/gtar -f... -\n\f\n
    AMANDA: FILE 20040810 intrepid /usr/shares/support lev 1 comp"N program 
/bin/gtar\nTo restore, position tape at start of file and run:\n\tdd if=<tape> 
bs=32k skip\xBD1"| /bin/gtar -f... -\n\f\n
    AMANDA: FILE 20040810 192.168.3.224 /etc lev 0 comp"N program /bin/gtar\nTo 
restore, position tape at start of file and run:\n\tdd if=<tape> bs=32k 
skip\xBD1"| /bin/gtar -f... -\n\f\n
    AMANDA: FILE 20040810 nis /etc lev 0 comp"N program /bin/gtar\nTo restore, 
position tape at start of file and run:\n\tdd if=<tape>"bs=32k skip\xBD1"| 
/bin/gtar -f... -\n\f\n
    AMANDA: FILE 20040810 intrepid /usr/shares/IT_Dept lev 0 comp"N program 
/bin/gtar\nTo restore, position tape at start of file and run:\n\tdd if=<tape> 
bs=32k skip\xBD1"| /bin/gtar -f... -\n\f\n
    AMANDA: FILE 20040810 intrepid /home/amanda lev 1 comp N program 
/bin/gtar\nTo restore, position\xA0tape at start\xA0of file and run:\n\tdd 
if=<tape> bs=32k skip=1"| /bin/gtar -f... -\n\f\n
    AMANDA: FILE 20040810 intrepid /home/archive lev 0 comp"N program 
/bin/gtar\nTo restore, position tape at start of file and run:\n\tdd if=<tape> 
bs=32k skip\xBD1"| /bin/gtar -f... -\n\f\n
    AMANDA: FILE 20040810 intrepid /home/snips lev 0 comp"N program 
/bin/gtar\nTo restore, position tape at start of file and run:\n\tdd if=<tape> 
bs=32k skip\xBD1"| /bin/gtar -f... -\n\f\n
    AMANDA: FILE 20040810 intrepid /home/os-iso lev"1 comp N program 
/bin/gtar\nTo restore, position\xA0tape at start\xA0of file and run:\n\tdd 
if=<tape> bs=32k skip=1"| /bin/gtar -f... -\n\f\n
    AMANDA: FILE 20040810 intrepid /home/sus lev 0 comp"N program /bin/gtar\nTo 
restore,"position tape at start of file and run:\n\tdd if=<tape>"bs=32k 
skip\xBD1"| /bin/gtar -f... -\n\f\n
    AMANDA: FILE 20040810 intrepid /etc lev"0 comp N program /bin/gtar\nTo 
restore, position\xA0tape at start of file and run:\n\tdd if=<tape> bs=32k 
skip=1"| /bin/gtar -f... -\n\f\n
    AMANDA: FILE 20040810 intrepid /usr/shares/integration lev 2 comp"N program 
/bin/gtar\nTo restore, position tape at start of file and run:\n\tdd if=<tape> 
bs=32k skip\xBD1"| /bin/gtar -f... -\n\f\n
    AMANDA: FILE 20040810 192.168.3.224 /var/lib/mysql lev 1 comp"N program 
/bin/gtar\nTo restore,"position tape at start of file and run:\n\tdd 
if=<tape>"bs=32k skip\xBD1"| /bin/gtar -f... -\n\f\n
    AMANDA: FILE 20040810 cvs /usr/CVS lev 0 comp N program /bin/gtar\nTo 
restore, position tape at start of file and run:\n\tdd if=<tape> bs=32k 
skip\xBD1"| /bin/gtar -f... -\n\f\n
    AMANDA: FILE 20040810 192.168.3.224 /usr/archive lev 0 comp N program 
/bin/gtar\nTo restore, position tape at start of file and run:\n\tdd if=<tape> 
bs=32k skip\xBD1"| /bin/gtar -f... -\n\f\n
    AMANDA: TAPEEND\xA0DATE 20040810\n\f\n

Here's the same thing, with the *expected* variations (host,
path, dumplevel) ironed out, and the results run through
"sort | uniq -c":

   2    AMANDA: FILE 20040810 HOST PATH lev # comp N program /bin/gtar\nTo 
restore, position tape at start of file and run:\n\tdd if=<tape> bs=32k 
skip\xBD1"| /bin/gtar -f... -\n\f\n
   1    AMANDA: FILE 20040810 HOST PATH lev # comp N program /bin/gtar\nTo 
restore, position tape at start\xA0of file and run:\n\tdd if=<tape> bs=32k 
skip=1 | /bin/gtar -f... -\n\f\n
   1    AMANDA: FILE 20040810 HOST PATH lev # comp N program /bin/gtar\nTo 
restore, position\xA0tape at start\xA0of file and run:\n\tdd if=<tape> bs=32k 
skip=1"| /bin/gtar -f... -\n\f\n
   6    AMANDA: FILE 20040810 HOST PATH lev # comp"N program /bin/gtar\nTo 
restore, position tape at start of file and run:\n\tdd if=<tape> bs=32k 
skip\xBD1"| /bin/gtar -f... -\n\f\n
   2    AMANDA: FILE 20040810 HOST PATH lev # comp"N program /bin/gtar\nTo 
restore, position tape at start of file and run:\n\tdd if=<tape>"bs=32k 
skip\xBD1"| /bin/gtar -f... -\n\f\n
   8    AMANDA: FILE 20040810 HOST PATH lev # comp"N program /bin/gtar\nTo 
restore,"position tape at start of file and run:\n\tdd if=<tape>"bs=32k 
skip\xBD1"| /bin/gtar -f... -\n\f\n
   1    AMANDA: FILE 20040810 HOST PATH lev"# comp N program /bin/gtar\nTo 
restore, position\xA0tape at start of file and run:\n\tdd if=<tape> bs=32k 
skip=1"| /bin/gtar -f... -\n\f\n
   2    AMANDA: FILE 20040810 HOST PATH lev"# comp N program /bin/gtar\nTo 
restore, position\xA0tape at start\xA0of file and run:\n\tdd if=<tape> bs=32k 
skip=1"| /bin/gtar -f... -\n\f\n
   1    AMANDA: TAPEEND\xA0DATE 20040810\n\f\n
   1    AMANDA: TAPESTART DATE 20040810 TAPE BootCamp207\n\f\n

Things to notice:
 1. Some of the spaces have been turned into \xA0
    (which is ' ' | 0x80)

 2. Some of the "="s have been turned into \xBD
    (which is '=' | 0x80; hmmm...)

 3. Some of the spaces have been turned into '"'
    (which is *not* ' ' | 0x80)

 4. (3) can happen anywhere from 0-4 times in a given header, but
    at fairly predictable places

 5. No characters other than ' ' and '=' have been corrupted
    
I don't have a clue what all this means, I'm afraid.  It still
doesn't smell like hardware data corruption -- it's not
completely regular, but it is semi-regular.  Still, to rule that
out, it'd be interesting (to put it mildly) to see whether
similar corruption is occurring in the actual backup data as well
as in the headers.  Try this:
 1. Run a test backup *without* a tape in the drive; it'll run in
    degraded mode, leaving the backups in the holding disk

 2. Copy the backups out of the holding disk to a temporary
    location

 3. Run amflush

 4. DD the backups off of the tape -- do *not* try to use
    amrestore or amrecover; we want the bits exactly as they're
    on tape, except that we use "bs=32k skip=1" to discard the
    same headers we were examining above:
        dd bs=32k skip=1 <$TAPEDEV >file

 5. Similarly, peel the headers off of the holding-disk-file
    copies.  That looks similar to step 4:
        dd bs=32k skip=1 <file1 >file2

 6. Compare the corresponding files from steps 4 and 5. (Most
    diff's other than GNU diff can't handle binary files, so use
    cmp instead).  (Note that for huge backups -- by default,
    ones greater than 2 GB -- the holding-disk data will be split
    into several files, which you'll have to reassemble before
    doing the comparison.)
    
Of course we expect the files from steps 4 and 5 to be identical;
if they're not, you've almost certainly got hardware problems.

If the files *are* identical -- especially on sizeable backups --
but the headers show the same sort of weirdness as before, I
won't know what to make of that :-(

--

|  | /\
|-_|/  >   Eric Siegerman, Toronto, Ont.        erics AT telepres DOT com
|  |  /
It must be said that they would have sounded better if the singer
wouldn't throw his fellow band members to the ground and toss the
drum kit around during songs.
        - Patrick Lenneau

<Prev in Thread] Current Thread [Next in Thread>