Linux 6.2 yadrosi Btrfs-da RAID5/6 uchun yaxshilanishlarni o'z ichiga oladi

Btrfs yaxshilanishlari RAID 6.2/5 ilovasida "yozish teshigi" muammosini hal qilish uchun Linux 6 yadrosiga kiritish uchun taklif etiladi. Muammoning mohiyati shundan iboratki, agar yozish paytida avariya sodir bo'lgan bo'lsa, dastlab qaysi blokda RAID qurilmalarining qaysi biri to'g'ri yozilganligini va qaysi birida yozuv tugallanmaganligini tushunish mumkin emas. Agar siz ushbu vaziyatda RAID-ni qayta tiklashga harakat qilsangiz, RAID bloklarining holati sinxronlashtirilmaganligi sababli yozma bloklarga mos keladigan bloklar buzilgan bo'lishi mumkin. Ushbu muammo bu ta'sirga qarshi kurashish uchun maxsus choralar ko'rilmagan har qanday RAID1/5/6 massivlarida uchraydi.

RAIDni amalga oshirishda, btrfs-dagi RAID1 kabi, bu muammo ikkala nusxada nazorat summalari yordamida hal qilinadi, agar nomuvofiqlik bo'lsa, ma'lumotlar shunchaki ikkinchi nusxadan tiklanadi. Agar ba'zi bir qurilma to'liq ishlamay qolish o'rniga noto'g'ri ma'lumot bera boshlasa, bu yondashuv ham ishlaydi.

Biroq, RAID5/6 holatida, fayl tizimi paritet bloklari uchun nazorat summalarini saqlamaydi: oddiy holatda, bloklarning to'g'riligi ularning barchasi nazorat summasi bilan jihozlanganligi bilan tekshiriladi va parite bloki ma'lumotlardan qayta yaratilishi mumkin. Biroq, qisman ro'yxatga olish holatida, bu yondashuv muayyan holatlarda ishlamasligi mumkin. Bunday holda, massivni tiklashda, to'liq bo'lmagan yozuv ostida qolgan bloklar noto'g'ri tiklanishi mumkin.

Btrfs holatida, agar ishlab chiqarilayotgan yozuv chiziqdan kichikroq bo'lsa, bu muammo eng dolzarbdir. Bunday holda, fayl tizimi o'qish-o'zgartirish-yozish (RMW) operatsiyasini bajarishi kerak. Agar u davom etayotgan yozish bloklariga duch kelsa, RMW operatsiyasi nazorat summalaridan qat'i nazar, aniqlanmaydigan buzilishlarga olib kelishi mumkin. Ishlab chiquvchilar o'zgartirishlar kiritdilar, unda RMW operatsiyasi ushbu operatsiyani bajarishdan oldin bloklarning nazorat summasini tekshiradi va agar kerak bo'lsa, ma'lumotlarni qayta tiklash ham yozishdan keyin nazorat summasini tekshirishni amalga oshiradi. Afsuski, to'liq bo'lmagan chiziqni (RMW) yozish bilan bog'liq vaziyatda bu nazorat summalarini hisoblash uchun qo'shimcha xarajatlarga olib keladi, ammo ishonchlilikni sezilarli darajada oshiradi. RAID6 uchun bunday mantiq hali tayyor emas, ammo RAID6-da bunday nosozlik uchun yozish bir vaqtning o'zida ikkita qurilmada muvaffaqiyatsiz bo'lishi kerak, bu kamroq.

Bundan tashqari, ishlab chiquvchilarning RAID5 / 6 dan foydalanish bo'yicha tavsiyalarini ta'kidlashimiz mumkin, ularning mohiyati Btrfs-da metadata va ma'lumotlarni saqlash profili farq qilishi mumkin. Bunday holda, siz metadata uchun RAID1 (oyna) yoki hatto RAID1C3 (3 nusxa) profilidan va ma'lumotlar uchun RAID5 yoki RAID6 dan foydalanishingiz mumkin. Bu, bir tomondan, metama'lumotlarning ishonchli himoyasini va "yozish teshigi" ning yo'qligini, ikkinchi tomondan, RAID5/6 uchun xos bo'lgan bo'sh joydan yanada samarali foydalanishni ta'minlaydi. Bu metama'lumotlarning buzilishining oldini oladi va ma'lumotlarning buzilishini tuzatish mumkin.

Shuni ham ta'kidlash mumkinki, 6.2 yadrosidagi Btrfs-dagi SSD-lar uchun "o'chirish" operatsiyasining asinxron bajarilishi (endi jismonan saqlanishi mumkin bo'lmagan bo'shatilgan bloklarni belgilash) sukut bo'yicha faollashtiriladi. Ushbu rejimning afzalligi navbatdagi "o'chirish" operatsiyalarini samarali guruhlash va fon ishlov beruvchisi tomonidan navbatni keyingi qayta ishlash tufayli yuqori unumdorlikdir, buning natijasida oddiy FS operatsiyalari sinxronlashda bo'lgani kabi sekinlashmaydi " bloklar bo'shatilganda, tashlab yuboring va SSD yaxshiroq qaror qabul qilishi mumkin. Boshqa tomondan, fstrim kabi yordamchi dasturlardan endi foydalanishingiz shart emas, chunki barcha mavjud bloklar FSda qo'shimcha skanerlashsiz va operatsiyalarni sekinlashtirmasdan o'chiriladi.

Manba: opennet.ru

a Izoh qo'shish