Мигриране на софтуерен RAID към Ubuntu Linux - aleksandr - en

Станете root. Ако сте root, трябва да знаете какво да правите.

raid

След като сглобих софтуерен RAID, базиран на Silicon Image 3132 (щракнете и преминете към съответното заглавие), след известно време се наложи да стартирам същия RAID-1, но на вградения SATA контролер без поддръжка на RAID, т.е. прехвърлете масива в нови напълно меки условия.

Първоначално всичко изглеждаше просто: той бръкна трудно и на новата система каза, че те продължават да бъдат масив. Но в действителност всичко се оказа не толкова просто. Дисковете бяха взети от Device Mapper и се появиха като /dev/mapper/sil_***.dmraid разпозна, че принадлежат към някакъв масив, но не беше възможно да ги събере обратно в масив с помощта наmdadm и поотделно те не бяха достъпни за четене на информация -fdisk показа грешната таблица на дяловете.

След копаене в Google беше решено да се премахне информацията за принадлежността към RAID от тях и да се опита да събере всичко отново. За да направим това, започваме с почистване на мета. (Имам дискове за RAID като /dev/sda и /dev/sdb)

dmraid -r -E /dev/sda dmraid -r -E /dev/sdb

След рестартирането стана възможно да се монтират /dev/sda1 и /dev/sdb1, данните в тях се оказаха непокътнати и привидно идентични.

Сега трябва да направим масив от тези дискове, но в текущото състояниеmdadm обеща да презапише някои данни при създаването на масива и беше невъзможно да продължим.

Промяната на типа на дяла чрезfdisk помогна за разрешаването на тази ситуация. Да започна

и вижте типа на дяла

сега този дял трябва да бъде направен достъпен за нападения, като промените типа му наfd - Linux raid автоматично откриване. За да направим това, стартираме

натиснетеt и въведетеfd (можетенатиснетеm за помощ за бутон). Натиснетеw и промените се записват на диска. Правим същото с /dev/sdb. Подробности за тази деликатна операция можете да намерите в Mana и Google.

mdadm --create /dev/md0 --level=1 --ra >

минава без ужасни предупреждения за загуба на данни, напротив, вижда, че има ext2 на дисковете (въпреки че в действителност има ext4). Масивът е успешно създаден и започва дългият болезнен процес на синхронизиране на масива. За мен обещаваше да продължи повече от 120 минути. Можете да видите текущото състояние на синхронизация с командата

watch cat /proc/mdstat

Докато синхронизацията не приключи, масивът не е достъпен, въпреки че командата

mdadm --detail /dev/md0

казва, че всичко е наред,mount не може да монтира /dev/md0 поради неизвестна файлова система.

Грешката ми беше, че създадох масив през нощта, гледайки 2 сутринта и процесът все още продължава, страшно е да го изключите. не е ясно до какво може да доведе това. Пиша този пост, за да мине време. Най-досадното ще бъде, ако след синхронизацията ситуацията с наличността на масива не се промени, нещо подобно беше на Silicon Image 3132, тогава беше невъзможно да се работи с тях при присвояване на разделени дискове към масива, беше необходимо първо да се създаде нова файлова система. Тогава дисковете бяха без данни и създаването на нова файлова система на масива не беше проблем, сега ситуацията е съвсем различна.

Така че процесът на синхронизиране приключи, рестартирайте и. масивът сега е/dev/md127, но както и преди, не беше възможен достъп до данните. Ще трябва да отидем по друг начин и да се опитаме да сглобим RAID-1 от един диск, да копираме данни на него от втория и да добавим втория към масива и да синхронизираме отново. На тази тъжна бележка анализирайте масива

Отновоопитваме се да монтираме дисковете /dev/sda1 и /dev/sdb1 и отново не става, сега трябва да опитаме да изтеглим данните отново, ще работим с всеки диск на свой ред, тъй като има опасност от загуба на данни от факта, че няма точно решение как да го направим.

Не повтаряйте моите грешки и не правете следното. Първата грешна стъпка е да промените типа на дяла чрезfdisk отfd (Linux raid autodetect) на83 (Linux). След това данните останаха недостъпни,mount не можа да монтира дяла.

Втората грешна стъпка е да презапишете суперблока

mdadm --нулев суперблок /dev/sda1

След това участъкът не стана по-достъпен. И последната грешна стъпка е, че помощната програмаtestdisk в това състояние намира дяла, намира и презаписва таблицата на дяловете, но монтирането все още не иска да монтира. И накрая, по предложение наtestdisk, стартирането наfsck, което окончателно съсипа данните.

И сега, както трябва

Пускамеtestdisk и на недокоснатия втори диск намираме дялове и презаписваме файловата таблица, като резултат получаваме два дяла, като първият съдържа данни и е нормално монтиран. В моя случай mount не успя да монтира диска веднага след запис на таблицата, но след известно време (или рестартиране).

Можете да въздъхнете с облекчение, поне едно копие от данните е оцеляло и можете да работите с него. Сега ще съберем рейд масива по различен начин.

Изграждане на RAID-1 от едно устройство

Идеята е много проста, сглобяваме масив от един диск, като вторият липсва. За да направите това, използвайте прецакания/dev/sda, върху който събаряме всичко, което е останало, и създаваме нов дял за целия том с помощта наfdisk. Следващата стъпка е да съберете масива със следната команда

mdadm --create /dev/md0 --level=1 --ra >

ТакаТака се получава един първоначално развален, но доста работещ RAID масив. Създаваме файлова система върху него

Не са необходими допълнителни параметри за "подобряване на производителността"; в RAID-1 пак няма да играят роля. След това монтираме масива и копираме в него това, което успяхме да запазим от втория диск.

малко отклонение

Имайки повреден масив, след рестартиране по подразбиране системата няма да иска да стартира, а ще отиде на конзолата за възстановяване на RAID. Ако работите с компютър чрезssh и за да сте сигурни, че всичко работи след създаване на повреден RAID, тогава неприятна изненада ще бъде загубата на достъп до машината. За да предотвратите това да се случи, трябва да въведете параметъраbootdegraded в командата за зареждане на ядрото, след което компютърът ще се зареди дори и с повреден масив. Отидете на /etc/default/grub и променете GRUB_CMDLINE_LINUX_DEFAULT

Ако първоначално имаше други параметри, а не "", тогава те не трябва да се презаписват, а просто да се добавиbootdegraded в края. Сега актуализирайте конфигурацията на GRUB:

и можете да рестартирате, без да се страхувате, че ще загубите компютъра си поради повреден RAID.

Е, сега трябва да добавите втори диск (от който сте копирали) към масива и да синхронизирате отново за дълго време, така че данните да са идентични.

Добавяне на втори твърд диск към RAID1

Първоначална ситуация: Имам масив raid-1/dev/md127 (наименуван автоматично, защото няма конфигурация за mdadm), събран от един диск/dev/sda1 и диск за добавяне/dev/sdb1.

За всеки случай копираме маркировката от първия твърд диск на втория твърд диск, може би това не може да стане, но намерих за необходимо за всеки случай

sfdisk -d /dev/sda sfdisk -f /dev/sdb

и след това добавете диск

mdadm /dev/md127 --добавете /dev/sdb1

Дискът е добавен и вече можете да видите състоянието на масива:

mdadm --detail /dev/md127

което трябва да изведе нещо подобно (удебеленото е интересно)

/dev/md/homeserver:0: Версия: 1.2 Време на създаване: вторник, 9 юли 22:47:28 2013 г. Ниво на нападение: raid1 Размер на масива: 976630336 (931,39 GiB 1000,07 GB) Използван размер на Dev: 9766 30336 (93 1,39 GiB 1000,07 GB)Raid устройства: 2 Общо устройства: 2 Постоянство: Superblock е постоянен

Време за актуализиране: сряда, 10 юли, 21:09:59 2013 г. Състояние: чисто, влошено, възстановяващо сеАктивни устройства: 1 Работещи устройства: 2 Отказни устройства: 0Резервни устройства: 1

Статус на възстановяване: 0% завършен

Име: homeserver:0 (локално към хост homeserver) UUID: 05f76479:3db01146:f706784b:4a5fb8db Събития: 1660

Номер Основен Малък Състояние на RaidDevice 0 8 1 0активно синхронизиране /dev/sda1 2 8 17 1резервно повторно изграждане /dev/sdb1

Освен това с командата cat /proc/mdstat можете да видите какво се случва с масива сега и за да наблюдавате процеса на синхронизация, въведете

watch -n 10 cat /proc/mdstat

И виждаме прогрес. Резултатът ще бъде нещо подобно:

На всеки 10.0s: cat /proc/mdstat

Личности : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md127 : активен raid1 sdb1[2] sda1[0] 976630336 блокира супер 1.2 [2/1] [U_] [====>. ] възстановяване = 22,8% (223410880/976630336) финал = 114,8 минути скорост = 109312K/сек

Времето за изчакване ще бъде пропорционално на размера на диска. По принцип по време на процеса на синхронизация можете да използвате масива и дори да изключите компютъра, но аз не го направих, а изчаках да завърши за всеки случай.

Преместване /вкъщи към RAID

Разбира се, беше възможно да монтирате raid навсякъде и да го използвате, но за мен беше най-удобно да го използвам като /home. Процесът не е нищо сложно.

Първо премахваме данните, налични в рейда, в една папка, за да можем по-късно да ги плъзгаме, където е необходимо. След това копираме данните от текущия/home в raid (който е монтиран например като/media/raid ). Поради факта, че копирах home на нова система, беше почти празна и я копирах без излишни неща, както се предлага в много рецепти.

След това въвеждаме в /etc/fstab нова точка на монтиране за /home

UUID, взет от изхода на командата

да не се бърка с изхода отmdadm --detail --scan, който дава различен UUID.

След като променимfstab, рестартираме и гледаме резултата и ако има данни от рейда в /home (които бяха премахнати в една папка по-горе), значи всичко е наред :)