How to recover a RAID 0 disk array after losing the array’s metadata

(unfortunately this will not help if you lose an entire disk*)

Disclaimer

The vast majority of the information presented here I inferred from my own recovery experience – it may be inaccurate or utterly wrong, so use it at your own risk. I do not take any responsibility whatsoever for your data after you apply any of the knowledge described in this document.

Abstract

RAID 0 (AKA ‘striping’) creates one logical disk out of multiple, identical physical disks. The total capacity is the sum of the individual disks. It offers higher data throughput, but does not actually provide any data redundancy whatsoever. Each disk is proportioned into many identically-sized ‘stripes’, which form a continuous chain when seen from the point of view of the whole logical disk. The stripes are shared in such a way that the first physical disk contains the first stripe, the second physical disk the second, and so on, until we return to the first physical disk where the count continues. The RAID controller stores metadata in track 0 of the physical disk(s) that dictates the configuration of the RAID array. If this metadata is corrupted or lost, the logical RAID 0 disk will be lost, the controller will treat the physical drives as individual, separate logical drives and the data will be inaccessible because it is split over multiple discs. This guide attempts to show how one can recover the logical RAID 0 disk when little information is know about physical & logical disk parameters, and partition & file system information a priori.

* If one of your physical disks has failed, then unfortunately the prospect of recovering your data is rather dim. The following guide should still be useful however: after you have determined the stripe size, you should still be able to recover files that start in a stripe and are small enough to fit within the same stripe on a remaining physical disk. Unless you have sophisticated recovery software, it might be more difficult to find and extract the associated file system metadata. It may sounds like a moot point now, but do keep backups of important data!

Introduction

The reader should be familiar with such terms as:

·     Sector (smallest addressable block of data on a disk, usually 512 bytes)
·     Master Boot Record (a table in sector 0 containing four entries that describes how areas of data is laid out on the disk)
·     Track 0 (consists of all the sectors in cylinder 0, head 0 of the disk, which contains the MBR and metadata, usually sectors 0-63)
·     File system Cluster (a cluster contains a fixed number of sectors, eg: 8, which yields 4KB clusters)
·     Partition information block (commonly a single sector that contains information about the file system in a partition, eg: the cluster size, cluster count, position of metadata, etc)

Symptoms of system with corrupt RAID 0 disk arrays are:

·         Each individual physical disk appears as an unformatted/uninitialised disk.
·         If the array was bootable, receiving one of the following messages following POST when the BIOS is attempting to find media with an operating system:

o   “MBR Error”

o   “Invalid partition table”

o   “Press any key to boot from floppy”

o   “A disk error occurred”

o   “Invalid operating system”

Recommended Reading Material

Overview

To recover a RAID 0 array (and therefore the lost data), the following steps must be taken:

1)      Determine the order of the physical disks in the array
2)      Determine the stripe size
3)      Back up relevant data in track 0 from all drives (such as the MBR, partition information, etc)
4)      Re-create the RAID 0 array with the correct settings
5)      Restore the MBR and partition information, therefore restoring the file system

Comments

Screenshot info

Thanks for this writeup -- after Googling around for a while, this was the clearest explanation I found on how to transplant (or restore) a RAID 0 array.

It'd be great if you annoted the screen shots with the tools you were using to view that info. E.g. in the first shot showing total sector info to determine drive order in the array, what package are you using?

Re WabiWasabi's comment

Wabi,

Perhaps you missed it the first time. In the pdf the author provided there are links and programs suggested.

~?