Як встановити / відновити дані на диску, який був частиною рейду mdadm 1 на іншій машині?


18

Якесь тло

  • Сам диск був "опрацьований" другом, і, як кажуть, він залишається неушкодженим, непошкодженим та все ще змонтованим / відновлюваним
  • Диск був частиною програмного рейду 1 на Ubuntu 12.04
  • Інший диск в оригінальному рейді 1 був відформатований і використаний для іншої мети, залишаючи поточний диск (той, про який йдеться), все ще технічно є частиною рейду, якого більше не існує

Що я вже спробував

  • Основний монтаж

    • Я додав запис до fstab, позначив диск як ext3 / ext4 і спробував встановити.
    • Після монтажу з'являється наступна помилка

      wrong fs type, bad option, bad superblock on

    • І в dmesg

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

  • Я спробував знайти тип файлової системи диска і придумав

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

Де мені потрібна допомога / Мої запитання

  • Чи є спосіб перетворити диск в ext4 без пошкодження даних?
  • Чи є простий спосіб монтажу диска типу файлів Linux 83 та відновлення даних?
  • На даний момент у мене ще один диск безкоштовний, якщо є можливість якось відновити рейд
  • Моя головна мета - відновити дані з диска. Я відкритий для всіх варіантів.

Оновлення

Виведення деяких команд

  • 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

  • файл -s / dev / sdc1

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

  • hexdump -C -n 32256 / dev / sdc (Не впевнений, може це допомогти чи ні)

    $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
    

Проблема полягає в тому, що розділ вважає, що на ньому є якийсь об'єм рейду, а не ext4fs. І ядро ​​правильно. Однак, як це був рейд 1, він буває ext4fs. a mount -f ext4 /dev/sdc1 /mountpointповинен зробити трюк.
Змусити

1
Силове кріплення не дає жодних помилок, але точка монтажу порожня. Або дані не зникли, або кріплення не спрацювало, як очікувалося. Як dfпоказує мені, що нещодавно змонтований диск на 2% у використанні, що значно нижче очікуваного.
Адам

@ user1129682, якщо mount каже, що це не ext4, то це не ... намагаючись змусити це не допоможе.
psusi

@psusi: працював на мене. Відповідь Жиля пояснює, чому це працює за певних обставин
Bananguin

@Bananguin Ви не маєте на увазі mount -t ext4? Прапор -f призначений для "підробленого" встановлення (ubuntu 14.04).
Quantum7

Відповіді:


12

Це прекрасно працює в Ubuntu 14.04:

sudo -i
mdadm --assemble --scan

Ти отримаєш:

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

Потім змонтуйте і перегляньте свої файли:

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

Отримати "існує, але це не md масив" на невдалому жорсткому диску, який був частиною масиву ... і це працювало краще, ніж усі інші пропозиції. Встановлено успішно, зараз копіювання даних зайнято.
Zayne S Halsall

цей варіант добре працював для мене. 2 Intel SSD в RAID1. Витягнув один і підняв з порту SATA на ПК, що працює під управлінням suse linux. Спочатку показується як тільки /dev/sdcі як /dev/md127. Потім зробили, mdadm --assemble --scanщо призвело до /dev/md/Volume0_0p1і /dev/md/Volume0_0p2так далі, відповідно до 4-х розділів, які були на диску. P2 був мені такий потрібний: mkdir /p2 слідом за цим mount /dev/md/Volume0_0p2 /p2монтували його, який був EXT3, і я можу легко отримати доступ та скопіювати дані. Він також встановив його як читання-запис.
ron

ти мене вразив! Спасибі!
Гушань

інколи --scanрежим не запускає масиви з відсутніми дисками, в моєму випадку тут мені довелося зупинити автоматично зібраний масив і запустити його зновуmdadm --assemble --force /dev/md/1 /dev/sdc1
BrunoJCM

7

Linux mdraid має кілька форматів метаданих . Формати 0,9 та 1,0 ставлять метадані в кінець пристрою, що містить, і корисне навантаження (файлова система) починається на початку пристрою і може бути доступно безпосередньо, не проходячи через рейдовий шар. Формати 1.1 і 1.2 ставлять метадані відповідно до середини та початку пристрою, що містить, відповідно, корисне навантаження при зміщенні.

Установник Ubuntu створює томи у форматі 1,2 метаданих, тому ваші дані починаються після метаданих, а не на початку пристрою.

Найпростіший спосіб отримати доступ до цих даних - зібрати рейдовий пристрій. У томі RAID-1 достатньо одного пристрою.

madadm -A /dev/sdc1

(Зупиніться тут, якщо вам не подобається біль.)

Ви також можете отримати доступ до даних з компенсацією. Єдине, що я бачу зробити це - це якщо вам доведеться працювати в дуже старому ядрі, яке не підтримує формати mxid 1.x. Спочатку визначте зміщення mdadm -E /dev/sdc1: шукайте лінію Data Offset : SSS sectors. Сектор mdadm - 512 байт.

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

У відчаї, у форматах 1.x, зміщення даних зберігається в байтах 128–135 метаданих, малопомітні¹. 1,2 метаданих становить 4096 байт після початку роботи пристрою.

Ви також можете змінити таблицю розділів, щоб вона почала далі. Будьте дуже обережні зі своєю арифметикою. Зробіть це, якщо ви хочете тривалий час використовувати диск у старій системі, яка не має доступу до рейдового пристрою.

¹ Або з витримкою платформи? Я не впевнений.


дані можуть починатися з різних зрушень (дивіться, mdadm -E /dev/sdc1де саме), але, безумовно, не на 4k для 1,2 метаданих, оскільки 4k саме там, де зберігаються метадані. Дивіться також unix.stackexchange.com/q/57477/22565
Stéphane Chazelas

@StephaneChazelas На жаль, мозок пердеть. Спасибі.
Жил "ТАК - перестань бути злим"

3
mdadm -A /dev/sdc1Вихідні дані mdadm: device /dev/sdc1 exists but is not an md array.Я пішов трохи далі, щоб використовувати mdadm і подивитися, чи є додаткова інформація ... mdadm --misc --examine /dev/sdc1виходи mdadm: No md superblock detected on /dev/sdc1.. Чи є спосіб переписати надблоки на цей диск, щоб позначити його як доступний диск для складання RAID?
Адам

@Gilles A mdadm -E /dev/sdcповертає для мене наступне: /dev/sdc: MBR Magic : aa55 Partition[0] : 1953520002 sectors at 63 (type 83) але немає інформації для / dev / sdc1, хоча
Адам

1
@Adam Якщо mdadm не може знайти своїх метаданих, там нічого не можна зробити: ви не можете змусити її щось робити, оскільки він не знає, що робити. Потрібно шукати файлову систему, і якщо поради psusi нікуди не ведуть, прогноз неприємний. Можливо, шістнадцятковий накопичувач перших кілобайт диска може когось надихнути (будьте уважні, що він може викрити деякі конфіденційні дані).
Жил "ТАК - перестань бути злим"

5

На моє здивування, я / міг відновити дані, просто використовуючи головне .

Допомога, отримана тут, була неоціненною. Після спробу різноманітних запропонованих комбінацій, а також моїх власних сумішей ідеальний метод (як змонтувати та використовувати диск як звичайний) вже не здавався варіантом. Звернення до відновлення даних - це моє рішення в цьому випадку.


Я розумію, це було деякий час тому! Але ви пам’ятаєте, чи вдалося вам скористатися головним чином, не монтуючи перегородку?
PhillipOReilly

Вибачте, я вже не пам'ятаю деталей цього. : /
Адам

3

Здається, ви вже зачепили суперблок mdadm. Якщо він раніше там був і був формат 1.1 або 1.2, то, швидше за все, файлова система зміщена в 2048 секторах. Ви можете бігти, e2fsck /dev/sdc1?offset=2048щоб змусити його шукати файлову систему, починаючи з цього зміщення. Якщо він знайде це, ви можете змінити таблицю розділів, щоб вказати, де файлова система насправді запускається. Ви можете використовувати parted /dev/sdcта unit sкоманду для використання одиниць секторів. printтаблиці, відзначте початок і кінець сектору, потім rmрозділ, потім відтворіть його mkpartта використовуйте той самий кінцевий сектор, але додайте зміщення до стартового сектору.

Якщо 2048 не працює, ви також можете спробувати 1985 рік.


Запуск e2fsck /dev/sdc1?offset=2048(я також запускав офсет = 1985) виходів Bad magic number..Superblock invalid..., а також припускає, що суперблок пошкоджений і намагається запустити e2fsck з альтернативним суперблоком. Здається, я повинен запропонувати йому альтернативний суперблок для просування вперед.
Адам

@ Адам, ні, потрібно просто отримати правильне зміщення. testdiskмає бути в змозі зробити детальне сканування та виправити таблицю розділів для вас.
psusi

testdiskце абсолютно нова територія для мене. Основне шоу (Аналіз) No ext2, JFS, Reiser.. marker. Bad relative sector. No partition is bootable.Програма також передбачає таке: 1 P Linux 0 1 1 121600 254 63 1953520002Як я можу зрозуміти це, щоб допомогти ситуації?
Адам

@ Адам, я ніколи його не використовував, я просто знаю, що він повинен мати можливість сканувати та знайти суперблок. Ви запускали його на всьому диску, а не на розділі?
psusi

Після запуску аналізу на повноцінному диску не виявилося жодних розділів. Зараз виконується глибоке сканування. Якщо з цим нічого не з’явиться, я не знаю, куди йти звідси.
Адам
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.