Linux 6.2 цөм нь Btrfs-ийн RAID5/6 сайжруулалтыг агуулсан болно

Btrfs сайжруулалтыг RAID 6.2/5 хэрэгжүүлэлт дэх бичих нүхний асуудлыг засахын тулд Linux 6 цөмд оруулахыг санал болгов. Асуудлын мөн чанар нь бичлэг хийх явцад эвдрэл гарсан тохиолдолд аль блок дээр RAID төхөөрөмж зөв бичигдсэн, аль хэсэгт бичлэг хийгдээгүй байгааг ойлгох боломжгүй юм. Хэрэв та энэ нөхцөлд RAID-г сэргээх гэж оролдвол RAID блокуудын төлөв синхрончлолгүй байгаа тул андерритлагдсан блокуудтай харгалзах блокууд устаж болзошгүй. Энэ асуудал нь энэ нөлөөг арилгах тусгай арга хэмжээ аваагүй аливаа RAID1/5/6 массивуудад тохиолддог.

btrfs дахь RAID1 шиг RAID хэрэгжилтийн хувьд энэ асуудлыг хоёр хуулбар дахь хяналтын нийлбэрийг ашиглан шийддэг; хэрэв таарахгүй бол хоёр дахь хуулбараас өгөгдлийг сэргээдэг. Хэрэв зарим төхөөрөмж бүрэн бүтэлгүйтлийн оронд буруу өгөгдөл илгээж эхэлбэл энэ арга нь бас ажилладаг.

Гэсэн хэдий ч, RAID5/6-ийн хувьд файлын систем нь паритын блокуудын хяналтын нийлбэрийг хадгалдаггүй: ердийн нөхцөлд блокуудын хүчинтэй эсэхийг тэдгээр нь бүгд шалгах нийлбэрээр баталгаажуулдаг бөгөөд паритын блокыг дахин бүтээх боломжтой. өгөгдлөөс. Гэсэн хэдий ч хэсэгчилсэн бичлэг хийх тохиолдолд энэ арга нь тодорхой нөхцөл байдалд ажиллахгүй байж магадгүй юм. Энэ тохиолдолд массивыг сэргээх үед бүрэн бус бичлэгт орсон блокууд буруу сэргээгдэх магадлалтай.

btrfs-ийн хувьд, хэрэв үйлдвэрлэж буй бичлэг нь зурааснаас бага байвал энэ асуудал хамгийн их хамааралтай болно. Энэ тохиолдолд файлын систем нь унших-өөрчлөх-бичих үйлдлийг (унших-өөрчлөх-бичих, RMW) гүйцэтгэх ёстой. Хэрэв энэ нь бүрэн бус бичигдсэн блокуудтай тулгарвал RMW үйл ажиллагаа нь шалгах нийлбэрээс үл хамааран илрэхгүй авлига үүсгэж болзошгүй. Хөгжүүлэгчид RMW үйл ажиллагаа нь энэ үйлдлийг гүйцэтгэхийн өмнө блокуудын хяналтын нийлбэрийг шалгадаг өөрчлөлтүүдийг хийсэн бөгөөд хэрэв өгөгдлийг сэргээх шаардлагатай бол бичлэг хийсний дараа хяналтын нийлбэрийг шалгадаг. Харамсалтай нь, бүрэн бус зураас (RMW) бичих тохиолдолд энэ нь хяналтын нийлбэрийг тооцоолох нэмэлт зардалд хүргэдэг боловч найдвартай байдлыг ихээхэн нэмэгдүүлдэг. RAID6-ийн хувьд ийм логик хараахан бэлэн болоогүй байгаа боловч RAID6-д ийм алдаа гарсан тохиолдолд 2 төхөөрөмж дээр нэг дор бичих ажиллагаа амжилтгүй болох шаардлагатай бөгөөд энэ нь магадлал багатай юм.

Нэмж дурдахад, хөгжүүлэгчдээс RAID5/6 ашиглах зөвлөмжийг тэмдэглэж болно, үүний мөн чанар нь Btrfs-д мета өгөгдөл болон өгөгдөл хадгалах профайл ялгаатай байж болно. Энэ тохиолдолд та мета өгөгдлийн хувьд RAID1 (толь) эсвэл бүр RAID1C3 (3 хувь) профайлыг, өгөгдөлд RAID5 эсвэл RAID6 профайлыг ашиглаж болно. Энэ нь нэг талаас мета өгөгдлийн найдвартай хамгаалалт, "бичих нүх" байхгүй, нөгөө талаас RAID5/6-ийн онцлог шинж чанартай орон зайг илүү үр ашигтай ашиглах боломжийг олгодог. Энэ нь мета өгөгдлийн эвдрэлээс зайлсхийх, өгөгдлийн эвдрэлийг засах боломжийг олгодог.

Цөм 6.2 дахь Btrfs-ийн SSD-ийн хувьд "хасах" үйлдлийг асинхрон гүйцэтгэх нь анхдагчаар идэвхждэг (биеийн хувьд хадгалах шаардлагагүй суллагдсан блокуудыг тэмдэглэж) гэдгийг тэмдэглэх нь зүйтэй. Энэ горимын давуу тал нь дараалалд "хаях" үйлдлүүдийг үр дүнтэй бүлэглэж, дарааллыг арын процессороор боловсруулдаг тул өндөр гүйцэтгэлтэй байдаг тул синхрон "хэрэглэдэг шиг ердийн FS үйл ажиллагаа удааширдаггүй. хаях" гэж блокууд чөлөөлөгдөж, SSD илүү сайн шийдвэр гаргах боломжтой. Нөгөөтэйгүүр, та fstrim гэх мэт хэрэгслүүдийг ашиглах шаардлагагүй болно, учир нь бүх боломжит блокууд нэмэлт скан хийх шаардлагагүй, үйл ажиллагааг удаашруулахгүйгээр FS-д цэвэрлэгдэх болно.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх