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
    
Adam
źródło
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
vchepurnov
źródło
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.

Gilles „SO- przestań być zły”
źródło
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.

Adam
źródło
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.

psusi
źródło
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