Jak zamontować / odzyskać dane na dysku, który był częścią RAID 1 na innym komputerze?


18

Trochę tła

  • Sam dysk „pracował” nad przyjacielem i mówi się, że jest nadal nienaruszony, nieuszkodzony i nadal można go montować / odzyskiwać
  • Dysk był częścią rajdu programowego 1 na Ubuntu 12.04
  • Drugi dysk w pierwotnym rajdzie 1 został sformatowany i wykorzystany do innego celu, pozostawiając bieżący dysk (ten, o którym mowa) nadal technicznie stanowi część nalotu, który już nie istnieje

Co już próbowałem

  • Podstawowy montaż

    • Dodałem wpis do fstab, oznaczyłem dysk jako ext3 / ext4 i próbowałem zamontować.
    • Po zamontowaniu pojawia się następujący błąd

      wrong fs type, bad option, bad superblock on

    • I w dmesg

      EXT4-fs (sdc1): VFS: Can't find ext4 filesystem

  • Próbowałem znaleźć typ systemu plików dysku i wymyśliłem

    $sudo file -s /dev/sdc
    /dev/sdc: x86 boot sector; partition 1: ID=0x83, starthead 254, startsector 63, 1953520002 sectors, code offset 0xb8

Gdzie potrzebuję pomocy / Moje pytania

  • Czy istnieje sposób na konwersję dysku na ext4 bez uszkodzenia danych?
  • Czy istnieje prosty sposób na zamontowanie dysku typu Linux 83 i odzyskanie danych?
  • Mam inny dysk, który jest obecnie wolny, na wypadek, gdyby można było jakoś odbudować nalot
  • Moim głównym celem jest odzyskanie danych z dysku. Jestem otwarty na wszystkie opcje.

Aktualizacja

Dane wyjściowe niektórych poleceń

  • fdisk -l / dev / sdc

    $fdisk -l /dev/sdc

    Disk /dev/sdc: 1000.2 GB, 1000204886016 bytes
    255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x0005ed9c

    Device Boot Start End Blocks Id System
    /dev/sdc1 63 1953520064 976760001 83 Linux

  • plik -s / dev / sdc1

    $file -s /dev/sdc1
    /dev/sdc1: data

  • hexdump -C -n 32256 / dev / sdc (Nie jestem pewien, czy to może pomóc, czy nie)

    $hexdump -C -n 32256 /dev/sdc`
    00000000  fa b8 00 10 8e d0 bc 00  b0 b8 00 00 8e d8 8e c0  |................|
    00000010  fb be 00 7c bf 00 06 b9  00 02 f3 a4 ea 21 06 00  |...|.........!..|
    00000020  00 be be 07 38 04 75 0b  83 c6 10 81 fe fe 07 75  |....8.u........u|
    00000030  f3 eb 16 b4 02 b0 01 bb  00 7c b2 80 8a 74 01 8b  |.........|...t..|
    00000040  4c 02 cd 13 ea 00 7c 00  00 eb fe 00 00 00 00 00  |L.....|.........|
    00000050  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    000001b0  00 00 00 00 00 00 00 00  9c ed 05 00 00 00 00 fe  |................|
    000001c0  ff ff 83 fe ff ff 3f 00  00 00 82 59 70 74 00 00  |......?....Ypt..|
    000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
    00000200  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    00007e00
    

Problem polega na tym, że partycja uważa, że ​​ma na sobie wolumin RAID, a nie ext4fs. Jądro ma rację. Ponieważ jednak był to rajd 1, zdarza się, że jest to ext4fs. mount -f ext4 /dev/sdc1 /mountpointpowinno załatwić sprawę. Aby zmusić mount do założenia ext4 zamiast szukać systemu plików, należy to zrobić -f
— Bananguin

1
Mocowanie nie powoduje błędów, ale punkt mocowania jest pusty. Dane zniknęły lub podłączenie nie działało zgodnie z oczekiwaniami. Wykonanie a dfpokazuje mi, że nowo zamontowany dysk jest w użyciu 2%, co jest znacznie niższe niż oczekiwano.
— Adam

@ user1129682, jeśli mount mówi, że to nie jest ext4, to nie jest ... próba wymuszenia, że ​​nie pomoże.
— psusi

@psusi: pracował dla mnie. Odpowiedź Gilles wyjaśnia, dlaczego działa w pewnych okolicznościach
— Bananguin

@Banguanguin Nie masz na myśli mount -t ext4? Flaga -f służy do „fałszywego” montażu (ubuntu 14.04).
— Quantum7

Odpowiedzi:


12

Działa to doskonale w Ubuntu 14.04:

sudo -i
mdadm --assemble --scan

Dostaniesz:

mdadm: /dev/md/1 has been started with 1 drive (out of 2)

Następnie zamontuj i zobacz swoje pliki:

cd /mnt && mkdir to-restore-md1 && mount /dev/md1 to-restore-md1
ls -la to-restore-md1

Pojawiał się komunikat „istnieje, ale nie jest tablicą MD” na uszkodzonym dysku twardym, który był częścią tablicy… i działało to lepiej niż wszystkie inne sugestie. Pomyślnie zamontowano, zajęte kopiowanie danych w tej chwili.
— Zayne S Halsall,

ta opcja działała dla mnie dobrze. 2 dyski SSD firmy Intel w macierzy RAID1. Wyciągnąłem jeden i podporządkowałem port SATA komputerowi z systemem Suse Linux. Początkowo pojawia się jako tylko /dev/sdci jako /dev/md127. Wtedy nie mdadm --assemble --scanco spowodowało /dev/md/Volume0_0p1a /dev/md/Volume0_0p2i tak dalej odpowiadający 4 partycji, które były na dysku. P2 był tym, czego potrzebowałem: mkdir /p2 następnie mount /dev/md/Volume0_0p2 /p2zamontowałem go, który był EXT3 i mogę łatwo uzyskać dostęp i skopiować dane. Zamontował go również jako do odczytu i zapisu.
— ron

uczyniłeś mój dzień! Dzięki!
— Gooshan

czasami --scantryb nie uruchamia tablic z brakującymi dyskami, w moim przypadku musiałem zatrzymać automatycznie mdadm --assemble --force /dev/md/1 /dev/sdc1
— składaną

7

Linux mdraid ma kilka formatów metadanych . Formaty 0.9 i 1.0 umieszczają metadane na końcu urządzenia zawierającego, a ładunek (system plików) rozpoczyna się na początku urządzenia i można uzyskać do niego bezpośredni dostęp bez przechodzenia przez warstwę rajdową. Formaty 1.1 i 1.2 umieszczają metadane odpowiednio na środku i na początku zawierającego urządzenia, więc ładunek jest przesunięty.

Instalator Ubuntu tworzy woluminy w formacie metadanych 1.2, więc dane zaczynają się po metadanych zamiast na początku urządzenia.

Najprostszym sposobem na uzyskanie dostępu do tych danych jest złożenie urządzenia rajdowego. W woluminie RAID-1 wystarczy jedno urządzenie.

madadm -A /dev/sdc1

(Zatrzymaj się tutaj, chyba że lubisz ból.)

Możesz również uzyskać dostęp do danych z przesunięciem. Jedyną rzeczą, jaką mogę to zrobić, jest to, że musisz pracować w bardzo starym jądrze, które nie obsługuje formatów mdraid 1.x. Najpierw określ przesunięcie mdadm -E /dev/sdc1: poszukaj linii Data Offset : SSS sectors. Sektor mdadm ma 512 bajtów.

sectors=$(mdadm -E /dev/sdc1 | awk -F: '$1 ~ /Data offset/ {print $2}')
bytes=$(($sectors * 512))
losetup -f -o $bytes /dev/sdc1

W desperacji, w formatach 1.x, przesunięcie danych jest przechowywane w bajtach 128–135 metadanych, little-endian¹. 1.2 metadane to 4096 bajtów po uruchomieniu urządzenia.

Możesz także zmienić tablicę partycji, aby zaczęła się dalej. Bądź bardzo ostrożny z arytmetyką. Zrób to tylko, jeśli chcesz nadal używać dysku przez długi czas w starym systemie, który nie ma dostępu do urządzenia rajdowego.

¹ Czy z endianizmem platformy? Nie jestem pewny.


dane mogą zaczynać się w różnych odsunięciach (sprawdź mdadm -E /dev/sdc1gdzie dokładnie), ale na pewno nie w 4k dla 1.2 metadanych, ponieważ 4k jest dokładnie tam, gdzie są przechowywane metadane. Zobacz także unix.stackexchange.com/q/57477/22565
— Stéphane Chazelas

@StephaneChazelas Ups, tak, pierdnięcie mózgu. Dzięki.
— Gilles „SO- przestań być zły”

3
mdadm -A /dev/sdc1wyjścia mdadm: device /dev/sdc1 exists but is not an md array.Poszedłem trochę dalej, aby użyć mdadm i sprawdzić, czy są jakieś dodatkowe informacje ... mdadm --misc --examine /dev/sdc1wyjścia mdadm: No md superblock detected on /dev/sdc1.. Czy istnieje sposób, aby ponownie napisać superbloki na tym dysku, aby oznaczyć go jako dysk dostępny dla zestawu RAID?
— Adam

@Gilles A mdadm -E /dev/sdczwraca mi następujące /dev/sdc: MBR Magic : aa55 Partition[0] : 1953520002 sectors at 63 (type 83) informacje : ale brak informacji dla / dev / sdc1
— Adam

1
@Adam Jeśli mdadm nie może znaleźć swoich metadanych, nie możesz nic zrobić: nie możesz zmusić go do zrobienia czegoś, ponieważ nie wie, co robić. Musisz poszukać systemu plików, a jeśli rada psusi nigdzie nie prowadzi, perspektywy są ponure. Być może zrzut kilku pierwszych kilobajtów dysku może kogoś zainspirować (strzeż się, że może ujawnić poufne dane).
— Gilles „SO- przestań być zły”

5

Ku mojemu zdziwieniu udało mi się odzyskać dane, wykorzystując przede wszystkim .

Otrzymana pomoc była nieoceniona. Po wypróbowaniu różnych sugerowanych kombinacji, a także własnych wtyczek, idealna metoda (do zamontowania i używania dysku w normalny sposób) nie wydawała się już opcją. W tym przypadku moim rozwiązaniem jest uciekanie się do odzyskiwania danych.


Zdaję sobie sprawę, że to było dawno temu! Ale czy pamiętasz, czy byłeś w stanie korzystać przede wszystkim bez montowania partycji?
— PhillipOReilly

Przepraszam, nie pamiętam już szczegółów tego. : /
— Adam

3

Wygląda na to, że już zablokowałeś superblok mdadm. Jeśli kiedyś tam był i miał format 1.1 lub 1.2, najprawdopodobniej system plików ma przesunięte 2048 sektorów. Możesz uruchomić, e2fsck /dev/sdc1?offset=2048aby wymusić wyszukiwanie systemu plików od tego przesunięcia. Jeśli go znajdzie, możesz zmodyfikować tablicę partycji, aby wskazywała miejsce, w którym system plików faktycznie się uruchamia. Możesz użyć parted /dev/sdci unit spolecenia, aby użyć jednostek sektorów. printw tabeli, zanotuj sektor początkowy i końcowy, następnie rmpartycję, a następnie utwórz ją ponownie mkparti użyj tego samego sektora końcowego, ale dodaj przesunięcie do sektora początkowego.

Jeśli 2048 nie działa, możesz także spróbować 1985.


Uruchamianie e2fsck /dev/sdc1?offset=2048(uruchomiłem również offset = 1985), Bad magic number..Superblock invalid...a także sugerowanie, że superblok jest uszkodzony i próba uruchomienia e2fsck z alternatywnym superblokiem. Wygląda na to, że powinienem zapewnić alternatywny superblok, aby iść naprzód.
— Adam

@Adam, nie, wystarczy uzyskać prawidłowe przesunięcie. testdiskpowinien być w stanie wykonać szczegółowe skanowanie i naprawić tabelę partycji.
— psusi

testdiskto dla mnie zupełnie nowe terytorium. Pokaz podstawowego uruchomienia (Analiza) No ext2, JFS, Reiser.. marker. Bad relative sector. No partition is bootable.Zapewnia również następujące informacje: 1 P Linux 0 1 1 121600 254 63 1953520002Jak to zrozumieć, aby pomóc w sytuacji?
— Adam

@Adam, sam nigdy z niego nie korzystałem, po prostu wiem, że powinien móc skanować i znaleźć superblok. Uruchomiłeś go na całym dysku, a nie na partycji, prawda?
— psusi

Po uruchomieniu analizy na pełnym dysku nie znaleziono żadnych partycji. Aktualnie przeprowadzam głębokie skanowanie. Jeśli to się nie pojawi, nie jestem pewien, dokąd się udać.
— Adam
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.