Miklix

Замена на неуспешен диск во mdadm низа на Ubuntu

Објавено: 5 март 2025, во 19:53:41 UTC

Ако сте во страшна ситуација да имате дефект на дискот во mdadm RAID низа, овој напис објаснува како правилно да го замените на Ubuntu систем.


Оваа страница беше машински преведена од англиски за да биде достапна за што повеќе луѓе. За жал, машинското преведување сè уште не е усовршена технологија, така што може да се појават грешки. Ако сакате, можете да ја видите оригиналната англиска верзија овде:

Replacing a Failed Drive in an mdadm Array on Ubuntu

Информациите во овој пост се базираат на Ubuntu 18.04 и верзијата на mdadm вклучена во неговите складишта; во моментот на пишување v4.1-rc1. Може или не може да важи за други верзии.

Неодамна имав ненадеен дефект на дискот во мојот домашен сервер за датотеки, кој се состои од девет дискови во низата mdadm RAID-6. Тоа е секогаш страшно, но, за среќа, можев брзо да набавам заменет диск што беше испорачан веќе следниот ден за да можам да ја започнам обновата.

Очигледно бев премногу евтин кога првично го поставив серверот за датотеки; само два од дисковите се вистински NAS-дискови (Seagate IronWolf), додека останатите се десктоп дискови (Seagate Barracuda). Не е изненадувачки, тоа беше еден од десктоп-дисковите што се откажа (сепак, по речиси три години услуга). Беше целосно мртов; откако го преместив во десктоп USB комплет, сè што добив од него беше вознемирувачки звук на кликање и ниту Ubuntu 20.04 ниту Windows 10 не можеа да го детектираат.

О, добро, за заменливиот дел (и да, новиот диск што го купив беше IronWolf, научена лекција) - колку што е страшно колку што е губење на диск во тековната низа, уште пострашно е ако не ја знаете правилната процедура за негова замена. Не е прв пат да морам да заменам неуспешен диск во низа mdadm, но за среќа тоа е толку ретко што обично морам да ги барам соодветните команди. Овој пат решив да го подготвам мојот сопствен мал водич за идна референца.

Значи, пред сè, кога ќе ја добиете е-поштата за страшниот настан за неуспех од mdadm, треба да идентификувате кој диск не успеа. Секако, ќе ви го каже името на уредот (во мојот случај /dev/sdf), но веројатно не е очигледно кој физички уред е всушност бидејќи тие имиња можат да се променат кога машината ќе се подигне.

Ако дури и не сте сигурни кое име на уредот не успеа, можете да ја користите следнава команда за да дознаете (заменете го /dev/md0 со вашиот RAID уред):

mdadm -–query -–detail /dev/md0

Како што споменавме, во мојот случај тоа беше /dev/sdf, па да продолжиме со тоа.

Потоа, можете да се обидете да го пронајдете серискиот број на неуспешниот диск со издавање на оваа команда:

smartctl -–all /dev/sdf | grep -i 'Serial'

(ако smartctl не е пронајден, треба да го инсталирате пакетот smartmontools на Ubuntu)

Серискиот број потоа може да се спореди со сериските броеви на физичката етикета на погоните за да се открие кој не успеал.

Овој пат, сепак, немав толку среќа. Погонот беше целосно мртов, па дури и одби да обезбеди SMART или други податоци, вклучувајќи го и серискиот број.

Бидејќи имав физички пристап до серверот (кој навистина ви треба ако сакате сами да замените физички диск, претпоставувам ;-)) и серверот всушност работеше кога дискот не успеа (и продолжи да работи добро благодарение на вишокот RAID-6), отидов со навистина примитивниот, но всушност многу ефикасен и очигледен метод на едноставно копирање на голема датотека на серверот и гледајќи го HDD. За неколку секунди го идентификував виновникот.

Сега, пред да го отстраните физичкиот диск, добра идеја е формално да го информирате mdadm за оваа намера, со издавање на оваа команда (заменете ги имињата на уредите со вашите, како што е соодветно):

mdadm -–manage /dev/md0 -–remove /dev/sdf1

Кога ќе успее, mdadm ќе одговори со порака дека „жешко го отстрани“ уредот, очигледно затоа што уредот за виртуелна рација всушност работи во тоа време.

Ако не успее со порака за грешка слична на „уредот или ресурсот е зафатен“, можеби mdadm всушност не го регистрирал уредот за целосно откажување. За да го направите тоа, издадете ја оваа команда (повторно, не заборавајте да ги замените имињата на уредите со вашите, како што е соодветно):

mdadm --manage /dev/md0 --fail /dev/sdf

После тоа, треба да можете да го отстраните уредот од низата со претходната команда.

Сега е време всушност да го замените погонот. Ако сте навистина, навистина - како, навистина - сигурни дека вашата машина и контролор поддржуваат топла замена, можете да го направите ова без да ја исклучите машината. Тоа ќе биде начин да се оди на критичните системи за производство што работат на вистински, соодветен хардвер на серверот за кој знаете дека може да се справи со него. Мојот домашен сервер за датотеки се заснова на матична плоча за десктоп за потрошувачи со неколку полу-неименувани SATA контролери во слотовите PCIe за да се обезбедат повеќе SATA порти.

Иако SATA генерално треба да поддржува топла замена, јас не ризикував ништо во ова поставување, па се одлучив да ја исклучам машината додека го заменував погонот.

Пред да го направите тоа, добро е да го коментирате уредот за рација во датотеката /etc/fstab, така што Ubuntu нема да се обиде да го монтира автоматски при следното подигање, бидејќи може да виси и да ве принуди во режим за обновување поради деградираната RAID низа. Тоа можеби не е голем проблем ако е десктоп систем, но јас го работам овој сервер без глава без прикачен монитор или тастатура, така што ова ќе биде малку мака.

Откако ќе ја подигнете машината со инсталиран сјаен нов диск, користете lsblk или некое друго средство за да го идентификувате. Ако не сте смениле ништо друго, веројатно (но не нужно ) ќе го добие истото име како и дискот што сте го замениле. Во мојот случај беше така, така што новиот се вика и /dev/sdf.

Бидејќи мојата низа се заснова на партиции наместо на физички уреди, требаше да ја копирам табелата со партиции од работен диск на новиот диск за да се уверам дека тие се сосема исти. Ако наместо тоа ја извршувате низата на физички уреди, можете да го прескокнете овој чекор.

За оваа цел користев sgdisk, копирајќи ја табелата со партиции од /dev/sdc на /dev/sdf. Погрижете се да ги замените имињата на уредите за да одговараат на вашите, како што е соодветно.

Забележете го редоследот овде: прво го наведувате возењето „да“! Ова е малку контраинтуитивно за мене, но само погрижете се да го сфатите правилно за да не добиете уште еден дефект на дискот во низата ;-)

sgdisk -R /dev/sdf /dev/sdc

Потоа, за да избегнете конфликти на UUID, генерирајте нови UUID за новиот диск:

sgdisk -G /dev/sdf

И сега конечно дојде време да го додадеме новиот диск во низата и да ја започнеме забавата за обнова! (Во ред, тоа не е навистина забава, тоа е всушност прилично бавен и вознемирувачки процес бидејќи навистина, навистина не сакате уште едно возење да не успее во овој момент. Сепак, пивото може да помогне)

Како и да е, за да го додадете новиот диск во низата, издадете ја оваа команда (повторно, погрижете се да ги замените имињата на уредите со вашите, како што е соодветно):

mdadm -–manage /dev/md0 -–add /dev/sdf1

Ако сè оди добро, уредот ќе се додаде во низата без икање. Верувам дека всушност е стандардно додаден како „жешка резерва“, но бидејќи на оваа низа и недостасува диск (оној што не успеа), веднаш се става во употреба и ќе започне процесот на обнова.

Можете да внимавате на тоа вака:

watch cat /proc/mdstat

Ова веројатно ќе потрае некое време; на мојот ниски сервер (во голема мера врз основа на хардвер од потрошувачки квалитет и десктоп дискови, имајте предвид) тој можеше да достигне нешто помалку од 100 MB/s. Имајте на ум дека ова е RAID-6, така што има многу пресметки за паритет вклучени во обновата; RAID-10 би бил многу побрз. Оваа конкретна машина има AMD A10 9700E четири-јадрен процесор („Е“ што значи дека е енергетски ефикасен модел со недоволно такт, т.е. не е супер брз), само за да ви даде идеја што да очекувате. Со деветте дискови од 8 TB во моето поставување, целосната обнова траеше нешто повеќе од 24 часа.

За време на обновата, можете да го монтирате датотечниот систем на низата и да го користите како вообичаено ако сакате, но претпочитам да го оставам на обновата додека не заврши. Имајте на ум дека ако еден диск не успее, наскоро може да следи друг, така што сакате обновата да се направи што е можно побрзо бидејќи навистина не сакате друг диск да пропадне за време на тоа. Затоа, не го оптоварувајте со други ИО кои не се строго неопходни.

Откако ќе заврши, додајте го назад во вашата датотека /etc/fstab, рестартирајте и уживајте во вашите датотеки :-)

Споделете на BlueskyСподелете на ФејсбукСподелете на LinkedInСподелете на TumblrСподелете на XСподелете на LinkedInЗакачи на Pinterest

Микел Банг Кристенсен

За авторот

Микел Банг Кристенсен
Микел е креатор и сопственик на miklix.com. Тој има над 20 години искуство како професионален компјутерски програмер/развивач на софтвер и моментално е вработен со полно работно време во голема европска ИТ корпорација. Кога не пишува блог, тој го поминува своето слободно време на широк спектар на интереси, хоби и активности, кои до одреден степен може да се рефлектираат во разновидните теми опфатени на оваа веб-локација.