geli mirror with -a won't format

Christian Baer christian.baer at uni-dortmund.de
Tue Feb 27 13:51:18 UTC 2007


Hello there, peeps!

I have been trying to create a filesystem for paranoid people like
myself. :-) What I want to make is this:

- mirror (two partitions with gmirror)
- geli with -a on that

I am not expecting anyone to manipulate my system. My data is far too
unimportant (to other people) for that. But the file systems will
contain stuff that is *very* important to me and I am hoping that -a
will give me an early warning if the data becomes corrupt due to
hardware failure. If I got the whole thing with -a wrong, then *my*
problem is solved, as I won't be using -a. :-) But it could very well be
an issue for other people.

The commands I used are these (with the replies from the system):

  sunny# geli init -v -s 4096 -K - -a HMAC/SHA256 -e blowfish -l 448 -P /dev/mirror/home
  Metadata value stored on /dev/mirror/home.
  Done.
  sunny# geli attach -v -p -k - /dev/mirror/home
  Attched to /dev/mirror/home.
  Done.

Note: The keyfile in both cases is created by a script and piped to geli.

Now strangely, this looks ok so far. But it isn't. :-/ If I use the init
without the -a I get this in /var/log/messages:

 kernel: GEOM_ELI: Device mirror/home.eli created.
 kernel: GEOM_ELI: Encryption: Blowfish-CBC 448
 kernel: GEOM_ELI:     Crypto: software

I can do a newfs, mount the provider and work with it. That all stops
when I activate authentication when initialising the provider (as shown
in the comman above). /var/log/messages gets really messy then:

 kernel: GEOM_ELI: Device mirror/home.eli created.
 kernel: GEOM_ELI: Encryption: Blowfish-CBC 448
 kernel: GEOM_ELI:  Integrity: HMAC/SHA256
 kernel: GEOM_ELI:     Crypto: software
 kernel: GEOM_ELI: mirror/home.eli:
 kernel: 4096 bytes corrupte
 kernel: d at offset
 kernel:
 kernel: 11456892928
 kernel: .
 kernel: GEOM_ELI: mirr
 kernel: or/home.eli
 kernel: : 4096 byte
 kernel: s corrupted
 kernel: at offset 0
 kernel: .
 kernel: GEOM_ELI: mir
 kernel: r
 kernel: or/home.eli
 kernel: : 4096 byte
 kernel: s corrupted
 kernel: at offset 4
 kernel: 096.
 kernel: GEOM_ELI: mirr
 kernel: or/home.eli
 kernel: : 4096 byte
 kernel: s corrupted
 kernel: at offset 0
 kernel: .
 kernel: GEOM_ELI: mirr
 kernel: or/home.eli
 kernel: : 4096 byte
 kernel: s corrupted
 kernel: at offset 0
 kernel: .
 kernel: GEOM_ELI: mi
 kernel: r
 kernel: ror/home.el
 kernel: i: 8192 byt
 kernel: es corrupte
 kernel: d
 kernel: at offset
 kernel: 0.

I have tried changing the options for -a (md5 and sha1) and -e (AES only,
3DES is so damn slow that I didn't even *want* to try it) with the same
result - basicly anyway. The output in /var/log/messages is a little
different, showing the used algorithms but otherwise the same thing.

As you can imagine, I can't even create a file system on that:

  sunny# newfs -U -O 2 /dev/mirror/home.eli
  /dev/mirror/home.eli: 10926.1MB (22376752 sectors) block size 16384,
  fragment size 4096
          using 33 cylinder groups of 336.88MB, 21560 blks, 21568 inodes.
          with soft updates
  newfs: can't read old UFS1 superblock: read error from block device: Invalid argument

I'm not sure if I messed up here or if the code might actually be
broken. uname -a says this:

FreeBSD sunny.rz1.convenimus.net 6.2-STABLE FreeBSD 6.2-STABLE #1: 
Tue Feb 27 11:08:32 CET 2007 root at sunny.rz1.convenimus.net:
/usr/obj/usr/src/sys/SUNNY  sparc64

As you can see, I am not running a standard Intel CPU, but a Sun U60
with 2 CPUs and 2GB of RAM.[1] The drives are two Seagate
Cheetah SX173404LC with 73GB each. geli worked before on this system,
but I didn't use -a back then.

Can anyone help me?

Regards
Chris

[1] Ok, you can't see all of that from the uname. :-)


More information about the freebsd-geom mailing list