Skip to contentSkip to conversation

Mounting Promise RAID0 w/ Linux software RAID

DISCUSSION Aaron Longfield 2 participants 4 messages Jul 1, 2004 – Jul 2, 2004 MD RAID

lore
Share & tools
lore
#0 lore raw

Hi,

I am trying to recover data from a stripe set (RAID0) that was written using the sort-RAID functions of a Promise UDMA-133 Fasttrak controller.
The mainboard with that controller has died, and I don't have
another one around to try to run the discs on!

I've been able to start and mount the array, but I think I'm only getting the first stripe or something that's on the first disc.

I know the stripe size had been 64kb and there were two discs in the array. The first disc has a proper partition table, but it's for the full array, as would be on a Linux md device. I'm having trouble figuring how I would even try to specify this...

Does anyone happen to have any suggestions on this one? I don't want to have the scrap the data, or buy another piece of hardware with one of those controllers on it!

Here's the partition tables:

	Disk /dev/hdl: 122.9 GB, 122942324736 bytes
	255 heads, 63 sectors/track, 14946 cylinders
	Units = cylinders of 16065 * 512 = 8225280 bytes

	   Device Boot    Start       End    Blocks   Id  System
	/dev/hdl1   *         1     29893 240115491    7  HPFS/NTFS

	Disk /dev/hdj: 122.9 GB, 122942324736 bytes
	16 heads, 63 sectors/track, 238216 cylinders
	Units = cylinders of 1008 * 512 = 516096 bytes

	Disk /dev/hdj doesn't contain a valid partition table

And here's the raidtab:

raiddev /dev/md2

        raid-level              0
        nr-raid-disks           2
        persistent-superblock   0
        chunk-size              64
        device                  /dev/hdl1
        raid-disk               0
        device                  /dev/hdj
        raid-disk               1
#1 lore raw

Partitioning on RAID (Ref: Mounting Promise RAID0 w/ Linux software RAID)

I found that I can combine the discs raw into one large array that maps properly. Problem is that now I have an array that has a partition table and a partition that I can't seem to mount. Is there any way to coax the system into letting me do this? I couldn't find any documentation on it, but there seems to be support in the kernel code for the md driver.

-Aaron Longfield

Partition on the array:

Disk /dev/md0: 245.8 GB, 245884649472 bytes
255 heads, 63 sectors/track, 29893 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/md0p1 * 1 29893 240115491 7 HPFS/NTFS

raidtab entry:

raiddev /dev/md0

	raid-level		0
	nr-raid-disks		2
	persistent-superblock	0
	chunk-size		64

	device			/dev/hdc
	raid-disk		0
	device			/dev/hdd
	raid-disk		1
#2 lore raw

Re: Partitioning on RAID (Ref: Mounting Promise RAID0 w/ Linux software RAID)

Quoted 5 lines · Aaron Longfield

properly. Problem is that now I have an array that has a partition table and a partition that I can't seem to mount. Is there any way to coax the system into letting me do this? I couldn't find any documentation on it, but there seems to be support in the kernel code for the md driver.

It actually is documented... Documentation/md.txt. The "magic" is the raid device's major number:

	[root:pts/8]spork:~/[12:36 PM]:cat /proc/devices |grep 'md\|Block'
	Block devices:
  	9 md
	254 mdp

"mdp" is dynamically allocated, so booting to a partitioned soft-raid is tricky, but certainly do able.

Simply change your raid device from /dev/md0 (which is major #9) to something with a major number matching mdp. In my case:

	[root:pts/8]spork:~/[12:36 PM]:ls -l /dev/md0
	brw-rw----  1 root disk 9, 0 Feb 23 16:04 /dev/md0
	[root:pts/8]spork:~/[12:38 PM]:ls -l /dev/md
	total 0
	brw-r--r--  1 root root 254, 0 Jun  9 21:04 d0
	brw-r--r--  1 root root 254, 1 Jun  9 21:04 d0p1
	brw-r--r--  1 root root 254, 2 Jun  9 21:04 d0p2
	brw-rw----  1 root disk 254, 3 Jun 17 15:09 d0p3

	[root:pts/8]spork:~/[12:38 PM]:fdisk -l /dev/md/d0

	Disk /dev/md/d0: 640.1 GB, 640167510016 bytes
	255 heads, 63 sectors/track, 77829 cylinders
	Units = cylinders of 16065 * 512 = 8225280 bytes

	      Device Boot      Start         End      Blocks   Id  System
	/dev/md/d0p1               1       72606   583207663+   7  HPFS/NTFS
	/dev/md/d0p2   *       72607       77306    37752750   83  Linux
	/dev/md/d0p3           77307       77828     4192965   82  Linux swap

--Ricky

PS: The above naming scheme requires a small patch to grub to make it name the partitions correctly. By default, it'll look for /dev/md/d01, etc.

#3 lore raw

RESOLVED Re: Partitioning on RAID (Ref: Mounting Promise RAID0 w/ Linux software RAID)

Thanks a bunch, piecing together what you told me, a bit of a few messages that I found from the mailing list a long while ago, and Neil's old patches, I think I have it working!

The trick seemed to be using mdadm to bring the array up:

mdadm -B /dev/md/d0 /dev/hdc /dev/hdd --level=raid0 --raid-devices=2

The node for the d0p1 block device was not auto-created even though I have devfs, but after creating one for "254,1", I was able to mount the partition.

This is wonderful, and hopefully I can get small bit of info in the RAID FAQ or HOWTO about it. I didn't see anywhere a reference to being able to start a Promise Fasttrak array with just the Linux RAID code. :)

-Aaron Longfield

Quoted 45 lines · Ricky Beam
Quoted 5 lines · Aaron Longfield

properly. Problem is that now I have an array that has a partition table and a partition that I can't seem to mount. Is there any way to coax the system into letting me do this? I couldn't find any documentation on it, but there seems to be support in the kernel code for the md driver.

It actually is documented... Documentation/md.txt. The "magic" is the raid device's major number:

	[root:pts/8]spork:~/[12:36 PM]:cat /proc/devices |grep 'md\|Block'
	Block devices:
  	9 md
	254 mdp

"mdp" is dynamically allocated, so booting to a partitioned soft-raid is tricky, but certainly do able.

Simply change your raid device from /dev/md0 (which is major #9) to something with a major number matching mdp. In my case:

	[root:pts/8]spork:~/[12:36 PM]:ls -l /dev/md0
	brw-rw----  1 root disk 9, 0 Feb 23 16:04 /dev/md0
	[root:pts/8]spork:~/[12:38 PM]:ls -l /dev/md
	total 0
	brw-r--r--  1 root root 254, 0 Jun  9 21:04 d0
	brw-r--r--  1 root root 254, 1 Jun  9 21:04 d0p1
	brw-r--r--  1 root root 254, 2 Jun  9 21:04 d0p2
	brw-rw----  1 root disk 254, 3 Jun 17 15:09 d0p3

	[root:pts/8]spork:~/[12:38 PM]:fdisk -l /dev/md/d0

	Disk /dev/md/d0: 640.1 GB, 640167510016 bytes
	255 heads, 63 sectors/track, 77829 cylinders
	Units = cylinders of 16065 * 512 = 8225280 bytes

	      Device Boot      Start         End      Blocks   Id  System
	/dev/md/d0p1               1       72606   583207663+   7  HPFS/NTFS
	/dev/md/d0p2   *       72607       77306    37752750   83  Linux
	/dev/md/d0p3           77307       77828     4192965   82  Linux swap

--Ricky

PS: The above naming scheme requires a small patch to grub to make it name the partitions correctly. By default, it'll look for /dev/md/d01, etc.