Linux RAID subsystem development
 help / color / mirror / Atom feed
From: Moritz Rosin <moritz@itrosinen.de>
To: Phil Turmel <philip@turmel.org>, Wol <antlists@youngman.org.uk>,
	linux-raid@vger.kernel.org, John Stoffel <john@stoffel.org>,
	NeilBrown <neilb@suse.com>
Subject: Re: Recover data from accidentally created raid5 over raid1
Date: Thu, 13 Apr 2023 08:10:11 +0200	[thread overview]
Message-ID: <9eecbba85eda547083fe907b398d52ed@itrosinen.de> (raw)
In-Reply-To: <7ae36a36-05ce-0ae8-25c0-7757b9f0f62e@itrosinen.de>

Good Morning everyone.

Thank god I have very good news, since I managed to get access to 
(hopefully most of) the data.
I want to share the path I took with you for further reference.

First thing I tried was to use "foremost" directly on the raid array 
(/dev/md0) that had no partition table.
That was just partially successful since it ran *verry* slowly and 
produced mixed results. Many broken files, no dir structure, no 
filenames.
But there were files that came out correctly (content wise) - so I had 
hope.

Following your advice I then start off on this page: 
https://raid.wiki.kernel.org/index.php/Recovering_a_failed_software_RAID 
(chapter "Making the harddisks read-only using an overlay file").
With what you assumed, that the data should be there on the raw disks, I 
created overlays as explained.
One note here: In step 3 the page used "blockdev --getsize ...." but in 
my version (2.36.1) that parameter is marked as "deprecated" an didn't 
work. I had to use "blockdev --getsz" instead.

Having the overlays I fiddled around and ended up using "testdisk", let 
it analyze the overlay device "/dev/mapper/sdX1". After selecting "EFI 
GPT" partition type, it found a partition table I was able to use.
 From here on the process was pretty straight forward. testdisk showed 
the disk's old file structure and I was able to copy the "lost" files to 
a backup hdd.
The process is still running but spot tests were pretty promising that 
most of the data can be recovered.

When backup has finished. I will completely re-create the array and 
start with a clean setup :-)

Thanks again for your support, input and thoughts.

Best
Moritz

Am 2023-04-12 12:15, schrieb Moritz Rosin:
> Hi Phil, et.al.,
> 
> first of all, thank y'all so much for your thoughts and answers.
> I am going to add as much information as possible.
> 
> Am 12.04.2023 um 02:26 schrieb Phil Turmel:
>> Hi Moritz, et al,
>> 
>> On 4/11/23 20:18, Wol wrote:
>>> On 11/04/2023 20:47, John Stoffel wrote:
>>>>>>>>> "Moritz" == Moritz Rosin <moritz.rosin@itrosinen.de> writes:
>>>> 
>>>>> Hey there,
>>>>> unfortunately I have to admit, that I learned my lesson the hard 
>>>>> way
>>>>> dealing with software raids.
>>>> 
>>>>> I had a raid1 running reliable over month using two 4TB HDDs.
>>>>> Since I ran short on free space I tried to convert the raid1 to a 
>>>>> raid5
>>>>> in-place (with the plan to add the 3rd HDD after converting).
>>>>> That's where my incredibly stupid mistake kicked in.
>>>> 
>>>>> I followed an internet tutorial that told me to do:
>>>>> mdadm --create /dev/md0 --level=5 --raid-devices=2 /dev/sdX1 
>>>>> /dev/sdY1
>> 
>> Ewww.
>> 
>>>> Please share the link to the tutorial so we can maybe shame that
>>>> person into fixing it.  Or removing it.
> I followed this tutorial, but found similar suggesting to use "mdadm -- 
> create" -> 
> https://dev.to/csgeek/converting-raid-1-to-raid-5-on-linux-file-systems-k73
>>>> 
>>> 
>>> See below. There's no reason why it shouldn't work, PROVIDED nothing 
>>> has happened to the mirror since you created it.
>>>> 
>>>>> I learned that I re-created a raid5 array instead of converting the
>>>>> raid1 :-(
>> 
>> Indeed.  It would have sync'd every other chunk in opposite directions 
>> to place "parity" in the right rotation, but otherwise equivalent to a 
>> mirror.
>> 
>>>> Yeah, I think you're out of luck here. What kind of filesystem did
>>>> you have on your setup?  Were you using MD -> LVM -> filesystem 
>>>> stack?
>>>> Or just a raw filesystem on top of the /dev/md?  device?
>>> 
>>> I dunno. A two-disk raid-5 is the same as a 2-disk mirror. That 
>>> raid-5 MAY just start and run and you'll be okay. You can try 
>>> mounting it read-only and see what happens ...
>> 
>> The odds of matching offsets depends entirely on how old the original 
>> raid1 was.
> The original raid1 was about 2 years old.
> I was using ext4 directly ontop of the array.
>> 
>> 
>>>>> Is there any chance to un-do the conversion or restore the data?
>>>>> Has the process of creation really overwritten data or is there
>>>>> anythins left on the disk itself that can be rescued?
>>>> 
>>> If the conversion has overwritten the data, it will merely have 
>>> overwritten one copy of the data with the other.
>> 
>> Concur.
>> 
>>>> If you have any information on your setup before you did this, then
>>>> you might be ok, but honestly, I think you're toast.
>>>> 
>>> It might be a bit of a forensic job, but no I don't think so. Do you 
>>> have that third 4TB HDD? If so, MAKE A BACKUP of one of the drives. 
>>> That way, you'll have three copies to play with to try and recover 
>>> the data.
>> 
>> This.
>> 
>>> As John says, please give us all the information you can. If you've 
>>> just put a file system on top of the array, you should now have three 
>>> copies of the filesystem to try and recover. I can't help any further 
>>> here. but all you have to do is track down the start of said 
>>> filesystem, work out where you tell linux to start a partition so it 
>>> correctly contains the filesystem, and then mount said partition. 
>>> Your data should all be there.
>> 
>> The trick will be to determine the offset.  Please share as much 
>> information as possible as to the layering of the original setup, 
>> preferable with the fstab contents if available.
> Unfortunately I have no output (e.g. of fdisk -l) _bevore_ converting 
> the array. What I found in the syslogs is pasted here: 
> https://pastebin.com/iktUtYyt
> Output of lsblk: https://pastebin.com/LNyUizGq
> Output of fdisk -l (after conversion): https://pastebin.com/LH6ngUjc -- 
> as you can see there is no partition table exitent for "md0"
> Output of "mdadm --detail": https://pastebin.com/vYhjphKY
>> 
>>> Actually, you might be better off not copying onto drive 3. If you 
>>> can work out where your filesystem partition should start, create a 
>>> partition on drive 3 and copy the filesystem contents into said 
>>> partition.
>> 
>> Or overlays with dmsetup.
>> 
>>> I've cc'd a couple of people I hope can help, but basically, you need 
>>> to find out where in the raid array your data has been put, and then 
>>> work out how to access it. Your data SHOULD be recoverable, but 
>>> you've got some detective work ahead of you.
>> 
>> Your odds are decent.  Again, share all the info you can.
> Is there anything else I can provide?
> What is a good point to start the detective work?
>> 
>> 
>>> 
>>> Cheers,
>>> Wol
>> 
>> Phil
> Thanks
> Moritz

  reply	other threads:[~2023-04-13  6:10 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-11 18:11 Recover data from accidentally created raid5 over raid1 Moritz Rosin
2023-04-11 19:47 ` John Stoffel
2023-04-12  0:18   ` Wol
2023-04-12  0:26     ` Phil Turmel
2023-04-12 10:15       ` Moritz Rosin
2023-04-13  6:10         ` Moritz Rosin [this message]
2023-04-13 12:10           ` Phil Turmel
2023-04-12 10:22     ` Reindl Harald
2023-04-12 12:21       ` Phil Turmel
2023-04-12 20:22         ` Mark Wagner
2023-04-13  8:05           ` Wols Lists
2023-04-13 12:12             ` Phil Turmel
2023-04-13 14:58               ` Wols Lists
  -- strict thread matches above, loose matches on Subject: below --
2023-04-11 18:12 Moritz Rosin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9eecbba85eda547083fe907b398d52ed@itrosinen.de \
    --to=moritz@itrosinen.de \
    --cc=antlists@youngman.org.uk \
    --cc=john@stoffel.org \
    --cc=linux-raid@vger.kernel.org \
    --cc=neilb@suse.com \
    --cc=philip@turmel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox