RAID (mdadm)
Bo'limlar maqolasida bitta diskni qismlarga bo'lish ko'rilgan edi. RAID esa teskari yo'nalishda ishlaydi: bir nechta jismoniy diskni birlashtirib, ular ustida ishonchliligi yoki tezligi oshirilgan bitta mantiqiy blok qurilma hosil qiladi. Diskning o'zi buzilib qolganda ma'lumot yo'qolmasligi, yoki bir nechta diskka parallel yozish orqali tezlik oshishi — bularning barchasi RAID darajasiga bog'liq.
RAID va LVM ko'pincha bir-biriga qarama-qarshi qo'yiladi, lekin aslida ular boshqa muammoni yechadi va birga ishlatiladi: RAID disk darajasida ishonchlilik va tezlik beradi, LVM esa shu RAID massivi ustida moslashuvchan hajm boshqaruvini ta'minlaydi. Amaliyotda odatiy joylashuv shunday: fizik disklar → RAID massivi (mdadm) → LVM PV → VG → LV → fayl tizimi.
O'quv maqsadlari
Maqolani tugatgach:
- RAID 0, 1, 5, 6 va 10 darajalari orasidagi farqni va har birining qachon mos kelishini tushunasiz;
mdadm --createbilan dasturiy RAID massivi yarata olasiz;/proc/mdstatvamdadm --detailorqali massiv holatini tekshira olasiz;mdadm.conforqali massivni reboot'dan keyin ham avtomatik yig'ilishini ta'minlay olasiz;- buzilgan diskni RAID massividan chiqarib, yangisini qo'shish jarayonini bajara olasiz;
- RAID'ning nima uchun backup o'rnini bosmasligini tushunasiz.
RAID nima va nima uchun kerak
RAID (Redundant Array of Independent Disks) bir nechta diskni bitta mantiqiy qurilmaga birlashtirib, quyidagi ikki maqsaddan biri yoki ikkalasini beradi:
- Ishonchlilik (redundancy) — bitta yoki bir nechta disk buzilganda ma'lumot yo'qolmasligi;
- Unumdorlik (performance) — bir nechta diskka parallel o'qish/yozish orqali tezlik oshishi.
Linux'da dasturiy RAID (software RAID) mdadm (multiple disk administration) vositasi orqali yaratiladi va boshqariladi. Bu apparat RAID kontrollerlariga qaraganda arzon, moslashuvchan va istalgan disk kombinatsiyasida ishlaydi, biroq RAID hisob-kitobi (parity va h.k.) protsessor resursini sarflaydi.
Info
Apparat RAID kontrolleri (hardware RAID) alohida chip orqali ishlaydi va operatsion tizimga bitta oddiy disk sifatida ko'rinadi. mdadm esa yadro darajasida ishlaydigan dasturiy yechim — kontroller narxisiz, lekin resurs sarfi va boshqaruv operatsion tizim tomonida.
RAID darajalari: 0, 1, 5, 6, 10
| Daraja | Tamoyil | Minimal disk soni | Foydali hajm | Toqat qiladigan disk buzilishi | Tezlik |
|---|---|---|---|---|---|
| RAID 0 | Striping (bo'lib yozish) | 2 | 100% (N disk) | 0 — bitta disk buzilsa, hammasi yo'qoladi | Eng yuqori o'qish/yozish |
| RAID 1 | Mirroring (aynan nusxalash) | 2 | 50% (N/2) | N-1 disk (kamida bittasi tirik qolsa) | O'qish tez, yozish oddiy disk darajasida |
| RAID 5 | Striping + 1 parity | 3 | (N-1)/N | 1 disk | Yaxshi o'qish, yozishda parity hisoblash xarajati |
| RAID 6 | Striping + 2 parity | 4 | (N-2)/N | 2 disk | RAID 5'ga o'xshash, biroz sekinroq yozish |
| RAID 10 | Mirror juftliklarini striping qilish | 4 | 50% (N/2) | Har mirror juftlikdan bittadan, to'g'ri kombinatsiyada ko'proq | Yuqori tezlik va ishonchlilik birga |
Qachon qaysi darajani tanlash:
- RAID 0 — faqat tezlik muhim, ma'lumot yo'qolishi muammo emas (masalan, vaqtinchalik cache yoki qayta yaratsa bo'ladigan hisoblash natijalari). Production ma'lumotlar uchun tavsiya etilmaydi.
- RAID 1 — ikkita disk, oddiy va ishonchli variant, masalan tizim diski (
/) uchun. - RAID 5 — uch va undan ko'p disk, hajm samaradorligi muhim, bitta disk buzilishiga chidashi kerak. Katta diskларда (masalan, 8+ TB) qayta tiklash (rebuild) vaqti uzoq bo'lib, shu davrda ikkinchi disk buzilish xavfi oshadi.
- RAID 6 — RAID 5 bilan bir xil, lekin ikkita disk buzilishiga chidaydi; katta massivlarda RAID 5 o'rniga tavsiya etiladi.
- RAID 10 — ma'lumotlar bazasi kabi ham tezlik, ham ishonchlilik muhim bo'lgan yuklamalar uchun, agar disk soni (kamida 4) va byudjet yetsa eng yaxshi tanlov.
Danger
RAID — bu backup emas. RAID diskning jismoniy buzilishidan himoya qiladi, lekin quyidagilardan himoya qilmaydi: tasodifiy rm -rf, fayl tizimi buzilishi, ransomware, yoki noto'g'ri mdadm buyrug'i natijasida butun massivning yo'qolishi. Muhim ma'lumot uchun RAID'dan tashqari alohida, boshqa joyda saqlanadigan backup shart.
Kerakli paket
Debian/Ubuntu oilasida:
O'rnatish jarayonida mdadm massivlarni monitoring qilish uchun email manzil so'rashi mumkin — buni keyinroq /etc/mdadm/mdadm.conf ichida ham sozlash mumkin.
Massiv yaratishdan oldin: diskni tekshirish
RAID yaratishdan oldin diskda mavjud ma'lumot yoki eski RAID metama'lumoti yo'qligini tekshirish kerak. Bu — read-only buyruq, hech narsani o'zgartirmaydi:
Agar diskda eski RAID superblock topilsa (mdadm --examine natija qaytarsa), uni yangi massiv yaratishdan oldin tozalash kerak bo'lishi mumkin:
Danger
mdadm --create va --zero-superblock diskdagi mavjud ma'lumotni va bo'lim jadvalini qaytarib bo'lmas holda o'chirib yuboradi. Quyidagi misollarni faqat bo'sh, ishlatilmayotgan disklarda, tercihan disposable test VM'da bajaring. Production diskda ishlatishdan oldin diskning to'g'ri tanlanganini (lsblk, mdadm --examine) ikki marta tekshiring va zaruriy ma'lumotlarning backup nusxasi borligiga ishonch hosil qiling.
RAID 1 massiv yaratish
Faraz qilaylik, /dev/sdb va /dev/sdc — ikkita bo'sh, bir xil hajmdagi disk.
1. Massivni yaratish
--create /dev/md0— yangi massiv nomi (md0,md1, ... ketma-ket beriladi);--level=1— RAID darajasi;--raid-devices=2— massivga kiritilayotgan disklar soni.
Buyruqdan keyin fon rejimida sinxronizatsiya (resync) boshlanadi — ikkala disk bir xil holatga keltiriladi. Katta disklarda bu bir necha soat davom etishi mumkin, lekin massiv shu jarayon davomida ham ishlatilishi mumkin.
2. Holatni tekshirish
Namunaviy natija:
Personalities : [raid1]
md0 : active raid1 sdc[1] sdb[0]
10476544 blocks super 1.2 [2/2] [UU]
[=========>...........] resync = 45.2% (4736000/10476544) finish=2.1min speed=42000K/sec
unused devices: <none>
[UU] — ikkala disk ham "up" (sog'lom) holatda ekanini bildiradi. Disk buzilganda shu joyda [U_] yoki [_U] ko'rinadi.
Batafsil ma'lumot:
Bu buyruq massiv holati, har bir diskning roli (active, spare, faulty) va RAID darajasi haqida to'liq hisobot beradi.
3. Fayl tizimi yaratish va mount qilish
RAID massiv uchun ham LVM ustiga qurish mumkin — masalan /dev/md0 ni PV sifatida pvcreate /dev/md0 orqali VG'ga kiritish, keyin oddiy LVM qatlamlari kabi davom ettirish.
Massivni doimiy qilish: mdadm.conf
mdadm --create bilan yaratilgan massiv reboot'dan keyin avtomatik yig'ilishi (assemble) uchun uning konfiguratsiyasi mdadm.conf fayliga yozilishi kerak:
Bu buyruq joriy massiv(lar)ning UUID va tarkibini mdadm.conf ga qo'shadi. Debian/Ubuntu'da bundan keyin initramfs ni yangilash tavsiya etiladi, aks holda massiv boot vaqtida to'g'ri yig'ilmasligi mumkin:
Doimiy mount uchun /etc/fstab ga UUID orqali yozuv qo'shiladi — bu fstab maqolasida batafsil ko'riladi:
Info
mdadm.conf da massiv UUID orqali aniqlanadi, disk nomlari (/dev/sdb, /dev/sdc) orqali emas — chunki disk nomlari reboot'dan reboot'ga o'zgarishi mumkin (masalan, yangi disk qo'shilganda). UUID esa massiv yaratilgan paytda belgilanadi va o'zgarmaydi.
Buzilgan diskni almashtirish
RAID'ning asosiy amaliy foydasi shu yerda ko'rinadi: disk buzilganda ma'lumot yo'qolmaydi, lekin buzilgan diskni to'g'ri chiqarib, yangisini qo'shish tartibi muhim.
1. Buzilgan diskni aniqlash
mdadm --detail natijasida buzilgan disk faulty deb belgilanadi. Agar disk hali faulty deb belgilanmagan bo'lsa-yu, lekin buzilganiga ishonch hosil qilingan bo'lsa (masalan, dmesg da disk xatolari ko'rinsa), uni qo'lda faulty deb belgilash mumkin:
2. Buzilgan diskni massivdan chiqarish
3. Diskni jismoniy almashtirish
Bu bosqichda server o'chirilib (hot-swap qo'llab-quvvatlamasa), buzilgan disk yangisiga almashtiriladi. Yangi disk odatda eski disk bilan bir xil yoki katta hajmda bo'lishi kerak.
4. Yangi diskni massivga qo'shish
Qo'shilgandan keyin mdadm avtomatik ravishda yangi diskka ma'lumotni tiklash (rebuild) jarayonini boshlaydi:
Rebuild tugagach, [UU] holati qayta tiklanadi.
Warning
Rebuild jarayoni davomida massiv qo'shimcha yuklama ostida bo'ladi va bu davrda boshqa diskning ham buzilish ehtimoli (ayniqsa RAID 5'da) ortadi — shuning uchun katta massivlarda RAID 6 yoki RAID 10 ko'proq tavsiya etiladi. Rebuild tezligini /proc/sys/dev/raid/speed_limit_min va speed_limit_max orqali sozlash mumkin, lekin ishlab turgan tizimda tezlikni oshirish boshqa I/O operatsiyalariga ta'sir qilishi mumkinligini hisobga oling.
Amaliy ssenariy: RAID 1 yaratish va disk buzilishini simulyatsiya qilish
Muammo: disposable test VM'da ikkita disk bor, ular ustida RAID 1 yaratib, disk buzilishi holatini sinab ko'rish kerak.
1. Tekshiruv (read-only):
Ikkala disk ham bo'sh va eski RAID metama'lumoti yo'qligiga ishonch hosil qilinadi.
2. Massiv yaratish:
Resync tugashini kutish, so'ng [UU] holatini tasdiqlash.
3. Fayl tizimi va test fayli:
sudo mkfs.ext4 /dev/md0
sudo mount /dev/md0 /mnt/raid1
echo "test data" | sudo tee /mnt/raid1/test.txt
4. Disk buzilishini simulyatsiya qilish:
Natija: /proc/mdstat [_U] holatini ko'rsatadi, lekin test.txt hali ham o'qiladi — massiv bitta disk bilan ishlashda davom etmoqda.
5. Diskni tiklash:
sudo mdadm --manage /dev/md0 --remove /dev/sdb
sudo mdadm --manage /dev/md0 --add /dev/sdb
cat /proc/mdstat
Xulosa: RAID 1 disk buzilishida ma'lumotga uzluksiz kirishni ta'minlaydi, biroq bu holatni tezroq aniqlash uchun monitoring (masalan, mdadm email xabarnomasi yoki mdadm --monitor) sozlangan bo'lishi kerak — aks holda ikkinchi disk buzilguncha muammo sezilmasdan qolishi mumkin.
Ko'p uchraydigan xatolar
RAID'ni backup o'rniga ishlatish
Yuqorida aytilganidek, RAID faqat disk buzilishidan himoya qiladi. Fayl tasodifan o'chirilsa yoki buzilsa, u RAID massividagi barcha disklarda ham o'chgan/buzilgan holda qoladi.
mdadm.conf ni yangilashni unutish
Massiv qo'lda mdadm --create bilan yaratilgandan keyin mdadm.conf va initramfs yangilanmasa, keyingi reboot'da massiv avtomatik yig'ilmasligi yoki noto'g'ri nom bilan (/dev/md127) paydo bo'lishi mumkin.
Turli hajmdagi disklarni birlashtirish
mdadm massiv hajmini eng kichik diskka moslaydi — qolgan disklardagi ortiqcha joy ishlatilmaydi. RAID uchun bir xil hajm va tezlikdagi disklarni tanlash tavsiya etiladi.
RAID 5'ni katta, eski disklarda ishlatishda davom etish
Diskning yoshi va hajmi oshgan sari rebuild vaqtidagi ikkinchi disk buzilish xavfi ortadi. Katta massivlar uchun RAID 6 yoki RAID 10 ko'proq mos keladi.
Amaliy mashqlar
- Disposable VM'da uchta virtual disk qo'shing va ular ustida RAID 5 massiv yarating.
/proc/mdstatvamdadm --detailnatijalarini solishtiring. - RAID 1 va RAID 5 massivlarda bittadan diskni
--failqilib, ma'lumotga kirish hali ham ishlashini tasdiqlang. mdadm --detail --scannatijasinimdadm.confga yozing va VM'ni qayta yuklab, massiv avtomatik yig'ilganini tekshiring.- RAID massiv ustida LVM PV yarating (
pvcreate /dev/md0) va uni VG'ga qo'shing — RAID va LVM qatlamlari birga qanday ishlashini kuzating.
Xulosa
mdadm orqali yaratilgan dasturiy RAID bir nechta diskni birlashtirib, tanlangan darajaga qarab ishonchlilik (RAID 1/5/6/10) yoki tezlik (RAID 0) beradi. Massiv holati doimiy ravishda /proc/mdstat va mdadm --detail orqali kuzatiladi, buzilgan disk esa --fail → --remove → --add tartibida almashtiriladi. RAID LVM bilan almashtiriladigan emas, balki qo'shiladigan qatlam — RAID massiv ustida PV yaratib, LVM asoslari maqolasida ko'rilgan moslashuvchan hajm boshqaruvini davom ettirish mumkin. Keyingi qadam sifatida shu tuzilma ustida disk shifrlashni ko'rib chiqamiz — bu LUKS disk shifrlash maqolasida davom etadi.