Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

Ok, so my Ubuntu 12.10 install seems to have gone slightly sideways. It currently boots from a Compactflash card that I was planning on replacing soon, but as luck would have it it's gone down now. The boot process gets to a certain point and then just sits there, and if I boot up a distro off a flash drive and then mount up the LVM partition, the live distro freezes after a couple of minutes. Now I'm not averse to installing and starting again, but I would love to pull off all my config files etc (all user data is stored on a separate ZFS pool).

Is it worth me trying to fsck the drive first, or am I better off avoiding doing anything more to it?

If so, how about importing the ZFS pool and then DDing the filesystem to an image on the pool? That way I'll be able to gain access to it.

Any ideas?

share|improve this question
add comment

1 Answer

up vote 1 down vote accepted

I'd NOT fsck the drive as is - this risks damaging data further. I've actually done this recovery process in other situations, and I think it should work here.

Firstly, you want a copy of the drive, well, as far as possible. While DD is the tool everyone thinks of using, gnu ddrescue (aka ddrescue in the repositories - NOT dd_rescue, which is an unrelated bit of software) is probably what you want to do - this copies the contents of the drive, skipping anything thats messed up. I'd suggest imaging the root device (/dev/sdx) rather than a partition. As a bonus, ddrescue has a much simpler syntax than vanilla dd.

Then loopmount the images in your system - a standard loopmount will do with a single partition, but I favour kpartx for this - kpartx -a imagename.img mounts all the partitions inside imagename.img. You can then treat the image as any partition and run your preferred recovery software.

share|improve this answer
    
More specifically, dd halts when it encounters a read error. ddrescue attempts to continue on to the next block. –  Scott Pack Jun 17 '13 at 14:56
    
If ddrescue isn't available, dd conf=noerror,sync is usually close enough. Granted ddrescue provides a lot more and useful information, but in a squeeze dd gets the recoverable data off the medium. –  Chris S Jun 17 '13 at 14:59
    
@ScottPack dd has a noerror option. See man dd –  Chris S Jun 17 '13 at 14:59
1  
Yup, and retries, AND lets you know how much data is actually corrupted. superuser.com/questions/355310/dd-rescue-vs-dcfldd-vs-dd/… - covers the difference beween 3 major DD varients (and more importantly, different uses of DD varients) –  Journeyman Geek Jun 17 '13 at 14:59
    
@ChrisS: thats not all it does tho. gnu.org/software/ddrescue/manual/ddrescue_manual.html - it also does file copying in a manner that lets it maximise recovery –  Journeyman Geek Jun 17 '13 at 15:02
show 2 more comments

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.