Опит за възстановяване на софтуерен RAID-6 под Linux 16TB масив
дялове: md0 - / root 8x1 GB, RAID 6 md1 - / данни: 16x999 GB, RAID 6
Първоначално всички експерименти за сглобяване бяха извършени на md0, т.е. на основния дял, който сам по себе си няма голяма стойност, с изключение на факта, че това е персонализирана система.
Така че стартирах от първия диск на Debian в "Resque mode"
Опит за автоматично сглобяване на масив чрез
доведе до грешка „няма достатъчно дискове за изграждане на масива“.
Да продължим с науката:
1. Необходимо е да се съхранява описателна информация за масиви, които съдържат информация за това кой конкретен диск кой номер е в масива. В случай, че трябва да събирате "опасни методи":
Тези файлове съдържат нещо подобно на по-долу за всички твърди дискове, които имат суперблок на sdX1 дял (в моя случай само 8 от 16 за md0 имат суперблок на sdX1)
По-долу е даден пример за изхода на един от разделите:
Кратко резюме на това какво означава:
sdf2 - текущ анализиран дял Версия 0.90.00 - Superblock версия Ще видите и много полезна информация - размер на масива, UUID, ниво, размер на масива, брой устройства и т.н.
Но най-важното за нас сега е таблицата в долната част на списъка, първият ред в нея показва кой HDD в масива е нашият изпитван:
Също така обърнете голямо внимание на версията на суперблок! В моя случай е 0.90.00.
Тук виждаме неговия номер в масива, т.е. 4 - ще намерите същите числа в изхода за всички останали устройства от списъка. Моля, обърнете внимание, че буквата на устройството в реда за състояние е различна - sdl1 - това означава, че устройството е инициализирано на различен SATA порт, след което е преместено. Това не е критична информация, номоже да бъде полезно.
Името на устройството и неговият номер в масива са критични (ще се променят, когато устройствата се прехвърлят от порт на порт).
Запазваме създадения файл raid_layout (например на флаш устройство), за да не се загуби, и преминете към следващата стъпка:
2. Опитваме се да съберем масив
Има 2 начина за събиране на масив: автоматичен и ръчен.
и масивът е създаден на 4 от 8-те диска. Разбира се, няма да работи, тъй като Raid6 позволява да липсват само 2 диска.
Проверка на състоянието на масив
Тук има една тънкост - ако в списъка бъде намерен неинициализиран или маркиран като неуспешен твърд диск, асемблирането спира незабавно, така че флагът "-v" е полезен - за да видите на кой от твърдите дискове асемблирането работи.
Същото, но сме посочили кои твърди дискове да се използват за сглобяване.
Най-вероятно масивът няма да бъде сглобен по същия начин, както в случай на автоматично сглобяване. Но като събирате на ръка, започвате да разбирате по-добре самата същност на случващото се.
Масивът също няма да бъде сглобен, ако дискът е маркиран като "дефектен" в метаданните на дяла.
Тук преминавам към начина, по който започнах масива с данни, тъй като загубих /root масива, защо и как е описано по-долу. Създайте масива, като пренебрегнете състоянието "неправилен" - можете да добавите флага "-f" (force) - в моя случай това реши проблема с асемблирането на основния дял с данни, т.е. дялът беше успешно възстановен със следната команда:
със сигурност един лесен начин за сглобяване би бил следният:
Но тъй като стигнах до флага "-f" чрез трудности, сега е ясно. Т. д. Дялове, маркирани като лоши или остарели, са добавени към масива, а не игнорирани. С голяма вероятност неуспешен или остарял дял може да бъде маркиран с лошо или неплътно поставен SATAкабел, което не е необичайно.
Въпреки това се оказах с масив в деградирал режим за 14 диска от 16.
Сега, за да възстановите нормалната работа на масива и да не се страхувате за него, трябва да добавите 2 липсващи диска към него:
където X е буквата на дяла на новия твърд диск
По-долу ще дам трудностите, с които се сблъсках, за да предпазя другите да не настъпят моя рейк:
Използвах препоръките на Linux RAID Recovery WIKI - Linux RAID Recovery (raid.wiki.kernel.org/index.php/RAID_Recovery) за работа с Linux RAID WIKI масива - съветвам ви да внимавате с тях, тъй като страницата много накратко описва процеса и благодарение на тези препоръки унищожих /root (md0) на моя масив.
До този ред в най-долната част на статията в WIKI всичко е много полезно:
Този ред демонстрира как да пресъздадете масив, като знаете кои устройства са в какъв ред. Тук е много важно да вземете предвид версията на вашия суперблок, тъй като новият mdadm създава суперблок 1.2 и той се намира в началото на дяла, 0.90 се намира в края. Следователно трябва да добавите флага "--metadata=0.90". След като изградих масива с помощта на "--create", файловата система беше унищожена и не бяха открити нито основният суперблок ext4, нито резервните копия. Първо открих, че новият суперблок не е 0.90, а 1.2, което може да е причината за унищожаването на дяла, но изглежда не е така, тъй като промяната на RAID версията на суперблока на 0.90 и търсенето на резервно копие на суперблока ext4 беше неуспешно. Тъй като /root дялът не е най-важната част, тук реших да експериментирам - масивът беше преформатиран и след това спрян: mdadm --stop /dev/md2 и веднага създаден отново с "--create": резултатът е, че файловата система е унищожена отново, въпреки че това не трябваше да се случва, сигурен съмче не е объркал реда на уредите за първи път и още повече 2-ри. Може би някой успешно е възстановил дяловете с помощта на „--create“, ще се радвам да добавя към тази статия какво точно направих грешно и защо FS беше унищожен. Може да е изграден и с други опции за размер на парчета.
Очевидно е, че трябва да използвате всички препоръки от тази статия на свой собствен риск, никой не гарантира, че във вашия случай всичко ще работи точно както в моя.
Hardcore conf в C++. Каним само професионалисти.