Ubuntu дээрх mdadm массив дахь амжилтгүй дискийг солих
Нийтэлсэн: 2025 оны гуравдугаар сарын 19 21:33:59 (UTC)
Хэрэв та mdadm RAID массивын хөтөч доголдох вий гэсэн айдастай нөхцөл байдалд байгаа бол энэ нийтлэлд Ubuntu систем дээр үүнийг хэрхэн зөв солих талаар тайлбарласан болно.
Replacing a Failed Drive in an mdadm Array on Ubuntu
Энэхүү бичлэгийн мэдээлэл нь Ubuntu 18.04 болон түүний репозиториудад багтсан mdadm-ийн хувилбарт үндэслэгдсэн бөгөөд бичигдсэн үед v4.1-rc1 хувилбар байсан. Энэ нь бусад хувилбаруудад хүчинтэй байж магадгүй, эсвэл байж ч магадгүй.
Саяхан миний гэрийн файл серверт гэнэтийн дискний алдаа гарсан, уг сервер нь 9 диск бүхий mdadm RAID-6 массиваас бүрддэг. Энэ нь үргэлж айдас төрүүлдэг ч би азаар орлуулах дискээ хурдан олж, дараагийн өдөр нь хүргэгдсэн тул шинээр сэргээх процессыг эхлүүлэх боломжтой болсон.
Би эхэндээ файл серверийг тохируулсандаа жаахан хямд хандсан нь үнэн; хоёр диск нь л NAS диск (Seagate IronWolf) бөгөөд үлдсэн нь десктоп дискүүд (Seagate Barracuda) юм. Гайхалтай нь, энэ нь нэгэн десктоп диск байсан (ахиад гурван жил ажилласан ч гэсэн). Тэр нь бүрмөсөн ажиллахгүй болсон; түүнийг десктоп USB хайрцагт шилжүүлсний дараа би зүгээр л аймшигтай шажигнах чимээ сонссон бөгөөд Ubuntu 20.04 болон Windows 10 аль алинаар нь илрүүлж чадаагүй.
Юу ч гэж, орлуулах хэсэг рүү оръё (тийм ээ, би шинэ дискээ IronWolf-оор сольсон, сургамж авсан) - RAID массивд диск алдах нь аймшигтай ч, хэрэв та үүнийг солих зөв процедурийг мэдэхгүй бол илүү аймшигтай. Энэ нь mdadm массивд алдагдсан диск солих анхны тохиолдол биш ч, азаар энэ нь маш ховор байдаг тул би ер нь зөв командуудыг харах шаардлагатай болдог. Энэ удаа би ирээдүйд ашиглах зорилгоор өөрийнхөө жижиг гарын авлагыг бичихээр шийдсэн.
Тэгэхээр, хамгийн түрүүнд, mdadm-с сөрөг мэдэгдэл ирэхэд аль диск нь алдагдсаныг олж мэдэх хэрэгтэй. Мэдээж, энэ нь таны төхөөрөмжийн нэрийг хэлнэ (миний тохиолдолд /dev/sdf), гэхдээ энэ нь бодит физик дискийг тодорхойлоход амаргүй байх бөгөөд эдгээр нэрүүд нь машиныг ачааллах үед өөрчлөгдөж магадгүй.
Хэрэв та аль төхөөрөмжийн нэр нь алдагдсан гэдгийг мэдэхгүй бол дараах командыг ашиглан олж мэдэж болно (та RAID төхөөрөмжийнхөө /dev/md0-ийг сольж тавиарай):
Дээр дурдсанчлан, миний тохиолдолд энэ нь /dev/sdf байсан тул бид үүнийг үргэлжлүүлье.
Дараа нь, та энэ командыг гаргаж, алдагдсан дискийн серийн дугаарыг олохыг оролдож болно:
(Хэрэв smartctl олдохгүй бол, Ubuntu дээр smartmontools багцыг суулгах шаардлагатай.)
Дараа нь серийн дугаарыг дискний физик шошгон дээрх серийн дугаартай харьцуулж, аль нь алдагдсан болохыг тодорхойлох боломжтой болно.
Энэ удаа би төдийлөн азтай байгаагүй. Диск бүрмөсөн ажиллахгүй болж, SMART болон бусад мэдээллийг өгөхгүй байсан, үүнд серийн дугаар ч орно.
Би серверт физик хандах боломжтой байсан тул (иймээс өөрийнхөө физик дискийг солих гэж байгаа бол энэ нь үнэхээр шаардлагатай гэж би бодож байна ;-)) Мөн сервер нь диск алдагдсаны үед ч ажиллаж байсан (RAID-6-ийн илүүдэл байдлын ачаар), би үнэхээр энгийн, гэхдээ үр дүнтэй бөгөөд ойлгомжтой аргачлал болох том файлыг серверт хуулж, аль HDD гэрэл нь гялалзахгүй байгааг ажиглах аргаас хамаарч, хэргийг олсон.
Одоо, физик дискээ авхаас өмнө mdadm-д энэ санааг албан ёсоор мэдэгдэж, дараах командыг гаргаж болно (төхөөрөмжийн нэрийг тохируулах):
Амжилттай бол mdadm нь "халуун солих" гэж хариу өгнө, учир нь виртуаль raid төхөөрөмж нь тухайн үед ажиллаж байгаа нь харагдана.
Хэрэв "төхөөрөмж эсвэл нөөц ашиглагдаж байна" гэсэн алдааны мессеж гарвал, mdadm нь уг диск бүрэн алдагдсан гэж бүртгээгүй байж магадгүй. Үүнийг хийхийн тулд дараах командыг гаргана (мөн төхөөрөмжийн нэрийг тохируулах):
Үүний дараа, та өмнөх командыг ашиглан төхөөрөмжийг массиваас устгаж чадах байх.
Одоо дискийг солих цаг болсон. Хэрэв таны төхөөрөмж болон удирдлага халуун солихыг дэмжиж байгаа гэдгийг үнэхээр, үнэхээр - үнэхээр - итгэлтэй байгаа бол, та машинуудыг унтраахгүйгээр энэ үйлдлийг хийж болно. Энэ нь та нарын мэдэж байгаа үйлдвэрлэлийн системүүдэд, зөв серверийн төхөөрөмж дээр хийх аргачлал байж болох юм. Миний гэрийн файл сервер нь хэрэглэгчийн төвшний десктоп эх хавтартай бөгөөд PCIe порт дээр SATA удирдлагуудтай сервер биш.
SATA нь ерөнхийдөө халуун солихыг дэмжих ёстой ч, би энэ тохиргоондоо эрсдэл хүлээхгүй байхаар шийдэж, машиныг унтрааж, диск солихоор шийдсэн.
Тэгэхээс өмнө /etc/fstab файл дахь RAID төхөөрөмжийг комментлоод гаргах нь сайн санаа юм. Учир нь энэ нь Ubuntu-д автоматаар дахин суулгах оролдлогыг хийхээс сэргийлнэ, яагаад гэвэл RAID array муудсан үед энэ нь унтарч, сэргээх горимд ороход хүргэж магадгүй. Хэрэв энэ нь desktop систем бол том асуудал биш байж болох ч би энэ серверийг монитор эсвэл гар чөлөөтэйгээр удирдаж байгаа тул энэ нь жаахан төвөгтэй болох болно.
Шинэ диск суулгасны дараа машин эхлүүлээд, lsblk буюу бусад аргаар түүнийг таних хэрэгтэй. Хэрэв та бусад зүйлсийг өөрчлөөгүй бол энэ нь магадгүй (гэхдээ заавал биш) таны сольсон дисктэй ижил нэртэй болох болно. Миний хувьд тийм болсон тул шинэ диск нь бас /dev/sdf гэж нэрлэгдсэн.
Миний array нь физик төхөөрөмжүүдийн оронд хуваалтанд суурилсан учир, би ажиллаж буй дискаас шинэ диск рүү хуваалтын хүснэгтээ хуулбарлаж, тэдгээр нь яг адилхан байгаа эсэхийг шалгах шаардлагатай байсан. Хэрэв та физик төхөөрөмжүүд дээр array-гаа ажиллуулдаг бол энэ алхмыг алгасаж болно.
Би үүнийг хийхийн тулд sgdisk ашиглан /dev/sdc-аас /dev/sdf руу хуваалтын хүснэгтээ хуулбарласан. Төхөөрөмжийн нэрсийг өөрийнхтэйгээ тохирохоор сольж байгаарай.
Анхааруулга энд анхааралтай байгаарай: "түлхэх" дискээ эхлээд жагсааж оруулна! Энэ нь надад жаахан эвгүй санагддаг боловч зөв хийхийг зөвлөж байгаа учир, ингэснээр RAID array-д дахин нэг диск дутагдахаас сэргийлнэ ;-)
Дараа нь UUID мөргөлдөөнөөс зайлсхийхийн тулд шинэ дисктэй UUID шинэчлэх хэрэгтэй:
Тэгээд эцэст нь шинэ дискээ array-д нэмэж, сэргээн босгох процесс эхлүүлэх цаг болсон! (За, энэ бол үнэндээ үдэшлэг биш, харин удаан бөгөөд төвөгтэй процесс юм, яагаад гэвэл та дахин нэг диск алдмааргүй байна. Гэхдээ пиво тусалж магадгүй шүү)
Юутай ч, шинэ дискийг array-д нэмэхийн тулд энэ командыг оруулна уу (дахин хэлэхэд, төхөөрөмжийн нэрсийг өөрийнхтэйгээ тохируулахыг бүү март):
Хэрэв бүх зүйл сайн явбал диск array-д амжилттай нэмэгдэх болно. Миний бодлоор энэ нь анхдагчаар "халуун сэлбэг" гэж нэмэгдэх болно, гэхдээ энэ array-нд диск алдагдсан учраас (амжилтгүй болсон диск) тэр даруй ашиглагдаж эхлэх бөгөөд сэргээн босгох процесс эхлэх болно.
Түүнийг дараах байдлаар хянах боломжтой:
Энэ нь багагүй цаг авах магадлалтай; миний доод зэрэглэлийн сервер (ихэвчлэн хэрэглэгчийн ангиллын тоног төхөөрөмж болон desktop дискуудтай, анхааралтай!) 100 MB/sec орчим хурдтай байлаа. Энэ нь RAID-6 байна гэдгийг санаарай, сэргээн босгох процесс нь олон паритетийн тооцоолол хийдэг тул удаан байх болно; RAID-10 нь хурдан байсан байх. Энэ төхөөрөмж нь AMD A10 9700E дөрвөн цөмт CPU-тай ( "E" нь энергийн хэмнэлттэй загвар бөгөөд хурдтай биш гэсэн үг), иймээс та ямар хурдаар хүлээх талаар төсөөлж болох юм. Миний тохиргоонд 9 ширхэг 8 TB диск бүхий серверийн бүрэн сэргээн босголт нь 24 цаг орчим хугацаа авсан.
Сэргээн босголтын явцад та array-ийн файл системийг mount хийж, энгийн хэрэглэж болох боловч би сэргээн босгох процесст нь дуусах хүртэл орхиод, юу ч хийхгүй байхыг илүүд үздэг. Хэрэв нэг диск алдагдвал өөр нэг нь удахгүй алдагдах магадлалтай гэдгийг санаарай, тиймээс сэргээн босгох процессыг хамгийн хурдан дуусгахыг хүсэх хэрэгтэй, учир нь та дахин нэг диск алдмааргүй байна. Иймээс шаардлагагүй IO-оор системээ ачаалалтай бүү орхиорой.
Бүх зүйл дууссан бол /etc/fstab файлд нь дахин нэмээд, дахин эхлүүлж, файлууддаа баяртай хандаарай :-)