In case the-wabbit's answer doesn't work out...
You can do a dangerous recovery procedure to recover from this type of failure. This is dangerous mostly if you make errors, or if your firmware is not flexible enough (eg. like on a Dell MegaRAID once, I told it to skip initializing, but it initialized anyway, destroying the data). It is a general procedure that works with any hw or soft raid. And if this data is important, be sure to have backups first.
It goes basically like this:
- put the disks in the machine in the exact same order as before; if you replaced a disk, eg. imaged it onto another disk, or added a blank disk, treat it like the old disk.
- be sure the raid controller sees all the other disks. See the-wabbit's answer for dealing with foreign state.
- make absolutely sure you remember the old setup: stripe size, offset, raid level, etc. (sometimes this is not possible... the raid utilities are extremely dumbed down and limited in hwraid)
- delete the array (DANGEROUS!)
- create a "new" array, with the exact same setup as before (DANGEROUS!). It is absolutely critical that you prevent it from "resyncing" or "initializing" the array... this means zeroing out all the data, destroying it permanently.
- if you added a blank disk above, now remove that disk, so your array is degraded. And don't ever add it again, or it might try to rejoin it and merge its blank data into the array instead of treating it like a new blank disk. And don't do any writes with the array active before removing it.
Special notes:
For softraid, you might be able to skip the silly blank disk steps (eg. with mdadm, write "missing" instead of "/dev/sdx" for one disk). And it's easier to use a read only + rw overlay image file to make it possible to retry and fail repeatedly without damaging things. If someone can think of an equivalent that applies to hwraid, that would be very valuable.
At that point it should be working like before... assuming you got lucky and your old hw and firmware is equivalent, old setup was understood and recreated properly, etc.. If it's wrong, it might be damaged now and harder to recover than before (like if metadata/superblock was written in a different place than before, this time over data), but in theory you can just retry again.
And also as a hwraid hater, I can't resist saying that hwraid can be very annoying, and having it just decide that some disks are "foreign" is totally normal behavior in some badly handled failure cases. eg. if you have it running, and then a bad cable causes a disk to disconnect, and then reconnect again, it might decide it's now a foreign disk. And on MegaRAID machines, I found it will always do this if you swap some disks, then boot, then swap them back. Unlike softraid, it seems to care about the order even for an existing array.