Ngganti Drive Gagal ing Array mdadm ing Ubuntu
Diterbitake: 15 Februari 2025 ing 22:03:25 UTC
Dianyari pungkasan: 12 Januari 2026 ing 08:50:14 UTC
Yen sampeyan ana ing kahanan sing nguwatirake amarga drive gagal ing array RAID mdadm, artikel iki nerangake carane ngganti kanthi bener ing sistem Ubuntu.
Replacing a Failed Drive in an mdadm Array on Ubuntu
Informasi ing kiriman iki adhedhasar Ubuntu 18.04 lan versi mdadm sing kalebu ing repositori; nalika nulis iki v4.1-rc1. Iki bisa uga valid utawa ora kanggo versi liyane.
Aku bubar iki ngalami kerusakan drive dadakan ing server file omahku, sing kasusun saka sangang drive ing array mdadm RAID-6. Kuwi mesthi medeni, nanging untunge aku bisa cepet golek drive pangganti sing wis dikirim dina candhake supaya aku bisa miwiti mbangun maneh.
Aku pancen rada kemurahan ati nalika wiwitane nyetel server file; mung loro drive sing asline drive NAS (Seagate IronWolf), dene liyane drive desktop (Seagate Barracuda). Ora nggumunake, iku salah siji drive desktop sing wis ora bisa digunakake (sanajan meh telung taun digunakake). Drive kasebut wis mati total; sawise dipindhah menyang wadhah USB desktop, sing tak rasakake mung swara klik sing ngganggu lan Ubuntu 20.04 utawa Windows 10 ora bisa ndeteksi.
Ya wis, ayo padha ngomong babagan bagean panggantos (lan ya, drive anyar sing tak tuku kuwi IronWolf, wis dadi pelajaran) - sanajan medeni kelangan drive ing array sing lagi mlaku, malah luwih medeni yen sampeyan ora ngerti prosedur sing bener kanggo ngganti. Iki dudu pisanan aku kudu ngganti drive sing rusak ing array mdadm, nanging untunge arang banget nganti aku biasane kudu nggoleki printah sing bener. Wektu iki aku mutusake kanggo nggawe pandhuan cilikku dhewe kanggo referensi ing mangsa ngarep.
Dadi, sing pertama, nalika sampeyan nampa email kedadeyan gagal sing nggegirisi saka mdadm, sampeyan kudu ngenali drive endi sing gagal. Mesthi, bakal ngandhani jeneng piranti (ing kasusku /dev/sdf), nanging mbokmenawa ora jelas drive fisik endi sing sejatine amarga jeneng kasebut bisa diganti nalika mesin di-boot.
Yen sampeyan ora yakin jeneng piranti endi sing gagal, sampeyan bisa nggunakake printah ing ngisor iki kanggo ngerteni (ganti /dev/md0 nganggo piranti RAID sampeyan):
Kaya sing wis kasebut, ing kasusku kuwi /dev/sdf, mula ayo diterusake.
Banjur, sampeyan bisa nyoba nemokake nomer seri drive sing gagal kanthi ngetokake printah iki:
(yen smartctl ora ditemokake, sampeyan kudu nginstal paket smartmontools ing Ubuntu)
Nomer seri banjur bisa dibandhingake karo nomer seri ing label fisik ing drive kanggo ngerteni endi sing rusak.
Nanging wektu iki, aku ora begja banget. Drive-e mati total lan malah ora gelem menehi data SMART utawa data liyane, kalebu nomer seri.
Amarga aku duwe akses fisik menyang server (sing pancen dibutuhake yen arep ngganti drive fisik dhewe, aku kira ;-)) lan server kasebut pancen mlaku nalika disk kasebut rusak (lan terus mlaku kanthi apik amarga redundansi RAID-6), aku milih cara sing primitif banget, nanging sejatine efektif banget lan jelas, yaiku mung nyalin file gedhe menyang server lan ndeleng lampu HDD endi sing ora kedhip-kedhip. Sajrone sawetara detik aku wis nemokake pelakune.
Saiki, sadurunge nyopot drive fisik, luwih becik menehi informasi resmi marang mdadm babagan tujuan iki, kanthi ngetokake prentah iki (ganti jeneng piranti nganggo jeneng piranti sampeyan dhewe):
Yen kasil, mdadm bakal bales nganggo pesen sing ujar manawa piranti kasebut "wis mbusak kanthi cepet" drive kasebut, ketoke amarga piranti serangan virtual lagi mlaku nalika semana.
Yen gagal kanthi pesen kesalahan sing padha karo "piranti utawa sumber daya sibuk", bisa uga mdadm durung ndhaptar drive kasebut lan ora bisa digunakake kanthi bener. Kanggo nindakake iku, lakoni prentah iki (maneh, elinga kanggo ngganti jeneng piranti nganggo jeneng piranti sampeyan dhewe):
Sawisé iku, sampeyan kudu bisa mbusak piranti saka array nganggo printah sadurungé.
Saiki wayahe ngganti drive kasebut. Yen sampeyan pancen yakin banget yen mesin lan controller sampeyan ndhukung hot swapping, sampeyan bisa nindakake iki tanpa mateni mesin kasebut. Kuwi cara sing kudu ditindakake ing sistem produksi penting sing mlaku ing perangkat keras server sing nyata lan tepat sing sampeyan ngerti bisa nangani. Server file omahku adhedhasar motherboard desktop kelas konsumen kanthi sawetara controller SATA semi-noname ing slot PCIe kanggo nyedhiyakake luwih akeh port SATA.
Senajan SATA umume kudune ndhukung hot swapping, aku ora arep njupuk risiko apa-apa ing persiyapan iki, mula aku milih mateni mesin nalika ngganti drive.
Sadurunge nindakake kuwi, luwih becik menehi komentar babagan piranti raid ing file /etc/fstab supaya Ubuntu ora nyoba masang kanthi otomatis ing boot sabanjure, amarga bisa uga macet lan meksa sampeyan mlebu mode pemulihan amarga array RAID sing rusak. Kuwi dudu masalah gedhe yen sistem desktop, nanging aku mbukak server iki tanpa headless tanpa monitor utawa keyboard sing dipasang, mula iki bakal rada repot.
Sawisé mesin di-boot nganggo drive anyar sing mengkilat, gunakna lsblk utawa cara liya kanggo ngenali. Yèn sampeyan ora ngowahi apa-apa manèh, kemungkinan (nanging ora mesthi) bakal éntuk jeneng sing padha karo drive sing sampeyan ganti. Ing kasusku, pancen ngono, mula sing anyar uga diarani /dev/sdf.
Amarga array-ku adhedhasar partisi tinimbang piranti fisik, aku kudu nyalin tabel partisi saka drive sing bisa digunakake menyang drive anyar supaya bisa mesthekake yen padha persis. Yen sampeyan mbukak array ing piranti fisik, sampeyan bisa ngliwati langkah iki.
Aku nggunakake sgdisk kanggo tujuan iki, nyalin tabel partisi saka /dev/sdc menyang /dev/sdf. Priksa manawa jeneng piranti diganti supaya cocog karo jeneng pirantimu dhewe.
Gatekna urutane ing kene: sampeyan dhaptar drive "menyang" dhisik! Iki rada kontra-intuitif kanggo aku, nanging priksa manawa sampeyan wis bener supaya sampeyan ora entuk kegagalan drive liyane ing array ;-)
Banjur kanggo nyegah konflik UUID, gawe UUID anyar kanggo drive anyar:
Lan saiki pungkasane wektune wis tekan kanggo nambahake drive anyar menyang array lan miwiti pesta mbangun maneh! (Oke, iki dudu pesta, sejatine proses sing alon lan nguwatirake amarga sampeyan pancen ora pengin drive liyane gagal ing wektu iki. Nanging bir bisa mbantu)
Oalah, kanggo nambah drive anyar menyang array, lakoni prentah iki (maneh, priksa manawa ngganti jeneng piranti nganggo jeneng sampeyan dhewe):
Nèk kabèh lancar, drive bakal ditambahake menyang array tanpa ana masalah. Aku percaya iki sejatine ditambahake minangka "hot spare" kanthi gawan, nanging amarga array iki kekurangan disk (sing gagal), mula langsung digunakake lan proses mbangun maneh bakal diwiwiti.
Sampeyan bisa terus ngawasi kaya ing ngisor iki:
Iki mbokmenawa butuh wektu rada suwe; ing serverku sing cilik (umume adhedhasar perangkat keras kelas konsumen lan drive desktop) kecepatane mung tekan kurang saka 100 MB/detik. Elinga yen iki RAID-6, mula ana akeh perhitungan paritas sing dibutuhake kanggo mbangun maneh; RAID-10 mesthine luwih cepet. Mesin iki duwe CPU quad core AMD A10 9700E ("E" tegese model hemat energi sing kurang saka jam, yaiku ora super cepet), mung kanggo menehi gambaran babagan apa sing bakal kedadeyan. Kanthi sangang drive 8 TB ing persiyapanku, mbangun maneh kanthi lengkap mung butuh luwih saka 24 jam.
Sajrone mbangun maneh, sampeyan bisa masang sistem file ing array lan nggunakake kaya biasane yen sampeyan pengin, nanging aku luwih seneng ninggalake mbangun maneh nganti rampung. Elinga yen salah siji drive gagal, drive liyane bisa uga bakal teka, mula sampeyan pengin mbangun maneh rampung kanthi cepet amarga sampeyan pancen ora pengin drive liyane gagal sajrone wektu kasebut. Mulane, aja ngebebani karo IO liyane sing ora prelu banget.
Sawise rampung, tambahake maneh menyang file /etc/fstab sampeyan, uripake maneh lan nikmati file sampeyan :-)
