Data recovery and disk repair questions and discussions related to old-fashioned SATA, SAS, SCSI, IDE, MFM hard drives - any type of storage device that has moving parts
Post a reply

Rebuild Lacie Big Extrem 1T disk

December 1st, 2012, 5:07

Hi guys,
Here is what I did to get all the data back from a 'clicking' Lacie Big Extrem.
Pre-requisite:
- An Ubuntu system
- Void the Lacie Big Extreme 1T (2x500G in RAID0) warranty by opening it up
- The first disk (the one near the connectors) will be dd1
- The other one is dd2
- Then I took:
- 1 external DD of 1To (EHDD1) in an USB enclosure: partition it using ext4
- 1 external DD of 2To (EHDD2) in an USB enclosure: create 2 partitions, 1 of 1.15To (P1-EHDD2) and the other one of 650Mo (P2-EHDD2)
- 1 external HDD USB enclosure (where you can switch HDDs) - EHDD3
-
What you need to do:
- Remove dd1 form the Lacie enclosure
- Put dd1 in EHDD3
- Connect it to your linux system ... let's say it will mount under /dev/sdb
- Connect EHDD1 and mount it under /new
- Take the full disk image of dd1:
dd if=/dev/sdb of=/new/dd1.img
... it takes almost 10 hours
- Disconnect EHDD3
- Remove dd2 form the Lacie enclosure
- Put dd2 in EHDD3
- Connect it to your linux system ... let's say it will mount under /dev/sdb
- Connect EHDD2 and mount P2-EHDD2 under /new
- Take the full disk image of dd1:
dd if=/dev/sdb of=/new/dd2.img
... it takes almost 10 hours
- Disconnect EHDD3

So, now you have the full image disk of dd1 and dd2.
Let's rebuild the RAID0 now.
- Connect EHDD1 (/dev/sdb) and EHDD2 (/dev/sdc)
- mount EHDD1 and EHDD2
mkdir /dd1
mount -o loop /dev/sdb /dd1
mkdir /dd2
mount -o loop /dev/sdc1 /dd2
- Rebuild the array:
mkdir /ddall
mount -o loop /dev/sdc2 /ddall
python rebuild.py

The rebuild.py script contains:
The strip size of the RAID0 array: 256kb
dd commands to rebuild an image

Script rebuild.py
-------------------
Code:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# deinterlace.py
#
# INTENT = This is a script for deinterlacing two raw dd images
#     taken from a failed RAID 0 array into one "valid" image file
#     that we hope to be able to recover data from.
#
#          This is strictly experimental.
#
#                               Thursday, May 1, 2008 -Simón A. Ruiz
#

inputFiles = [open("/dd1/dd1.img","rb"),open("/dd2/dd2.img","rb")]
outputFile = open("/ddall/ddall.img","wb")
# 256kb strippes
chunkSize = 262144

# And, so as not to have to figure this out every time through the loop...
numFiles = len(inputFiles)

i = 0
while True:
   nextChunk = inputFiles[i%numFiles].read(chunkSize)
   if not nextChunk:
       print 'Done! No more data.'
       break
   outputFile.write(nextChunk)
   i += 1

outputFile.close()
for file in inputFiles:
   file.close()


- The command python rebuild.py will take 20hours
- Once it finishes, you just have to mount the produced image file
kpartx -d /ddall/ddall.img

You are done ... it worked for me, so why not for all of you!
Post a reply