[linux-lvm] A way to bypass LVM and extract the raw data off?

Andreas Dilger adilger at turbolabs.com
Wed Jan 9 16:26:02 UTC 2002


On Jan 09, 2002  13:43 -0800, IpSo wrote:
> Quoting Andreas Dilger <adilger at turbolabs.com>:
> > On Jan 08, 2002  19:02 -0800, IpSo wrote:
> > > Yup! I'm confident everything as far as the reiser filesystem is fine,
> > > just LVM is very confused. 
> > > 
> > >    Device Boot    Start       End    Blocks   Id  System
> > > /dev/hda1   *         1       507    255496+  82  Linux swap
> > > /dev/hda2           508     39813  19810224    5  Extended
> > > /dev/hda5           508      4633   2079472+  83  Linux
> > > /dev/hda6          4634     39813  17730688+  8e  Linux LVM
> > > 
> > > Does the LVM information take up the first 2mb or something that I
> > > could set the offset as, so it doesn't carry over to the loopback file?
> > 
> > No, it uses a variable amount of space.
> > 
> > What you could do is try
> > 
> > od -Ad -a /dev/hda6 | grep "R   e   I   s   E   r   2   F   s"
> > 
> > and start your dd 65584 bytes before the address at the line this is
> > found on (it should align to an even block boundary).
> 
> At the "line", I tried the command and I got about 1000+ lines that seem to
> match. I assume I just try from the first line minus 65584 (3276800) like you 
> said? 
> 
> [root at ipso big]# od -Ad -a /dev/hda6 | grep "R   e   I   s   E   r   2   F   s"
> 3342384  bs nul soh nul   R   e   I   s   E   r   2   F   s nul nul nul
> 3383344 eot nul stx nul   R   e   I   s   E   r   2   F   s nul nul nul
> 3424304 eot nul stx nul   R   e   I   s   E   r   2   F   s nul nul nul
> 3498032 stx nul stx nul   R   e   I   s   E   r   2   F   s nul nul nul
> 3547184 eot nul stx nul   R   e   I   s   E   r   2   F   s nul nul nul
> 3616816 ack nul stx nul   R   e   I   s   E   r   2   F   s nul nul nul
> 3706928  nl nul stx nul   R   e   I   s   E   r   2   F   s nul nul nul
> 3825712  nl nul stx nul   R   e   I   s   E   r   2   F   s nul nul nul
> 3842096 dc4 nul stx nul   R   e   I   s   E   r   2   F   s nul nul nul
> 3932208 dc4 nul soh nul   R   e   I   s   E   r   2   F   s nul nul nul
> 3944496 dc4 nul soh nul   R   e   I   s   E   r   2   F   s nul nul nul
> 3956784 dc4 nul stx nul   R   e   I   s   E   r   2   F   s nul nul nul
> 4001840 dc4 nul stx nul   R   e   I   s   E   r   2   F   s nul nul nul
> ...
> 
> dd if=/dev/hda6 bs=512 skip=3276800 of=/big/backup_hda6.bin
> 
> -rw-r--r--    1 root     root     16478502912 Jan  9 12:50 backup_hda6.bin

Well, since "od" outputs a _byte_ offset, and "dd" is skipping _sectors_,
you need to use:

dd if=/dev/hda6 bs=512 skip=6400 of=/big/backup_hda6.bin

Granted, all of these superblock copies might be in the journal, so it
is hard to tell (with ext2/ext3 there are backup superblocks, but they
have numbers assigned to them, so you can still find the proper start
of the filesystem.

> I also tried: (/dev/hda)
> dd if=/dev/hda bs=512 skip=3276800 of=/big/backup_hda6.bin

Well, this doesn't make sense, since the offset is relative to the start
of /dev/hda6.

Cheers, Andreas
--
Andreas Dilger
http://sourceforge.net/projects/ext2resize/
http://www-mddsp.enel.ucalgary.ca/People/adilger/





More information about the linux-lvm mailing list