Ang Linux 6.2 kernel ay magsasama ng mga pagpapahusay sa RAID5/6 sa Btrfs

Ang mga pagpapabuti ng Btrfs ay iminungkahi para sa pagsasama sa Linux 6.2 kernel upang ayusin ang problema sa write hole sa pagpapatupad ng RAID 5/6. Ang kakanyahan ng problema ay bumababa sa katotohanan na kung ang isang pag-crash ay nangyari sa panahon ng pag-record, sa una ay imposibleng maunawaan kung aling bloke kung saan ang RAID device ay isinulat nang tama, at kung saan ang pag-record ay hindi nakumpleto. Kung susubukan mong ibalik ang isang RAID sa sitwasyong ito, ang mga bloke na nauugnay sa mga underwritten na bloke ay maaaring sirain dahil ang estado ng mga bloke ng RAID ay hindi naka-sync. Ang problemang ito ay nangyayari sa anumang RAID1/5/6 arrays kung saan ang mga espesyal na hakbang ay hindi ginawa upang labanan ang epektong ito.

Sa isang pagpapatupad ng RAID, tulad ng RAID1 sa btrfs, ang problemang ito ay nalutas sa pamamagitan ng paggamit ng mga checksum sa parehong mga kopya; kung mayroong hindi tugma, ang data ay naibalik lamang mula sa pangalawang kopya. Gumagana rin ang diskarteng ito kung ang ilang device ay nagsimulang magpadala ng maling data sa halip na isang kumpletong pagkabigo.

Gayunpaman, sa kaso ng RAID5/6, ang file system ay hindi nag-iimbak ng mga checksum para sa mga bloke ng parity: sa isang normal na sitwasyon, ang bisa ng mga bloke ay na-verify sa pamamagitan ng katotohanan na ang mga ito ay lahat ng checksummed, at ang parity block ay maaaring muling itayo mula sa datos. Gayunpaman, sa kaso ng bahagyang pag-record, maaaring hindi gumana ang diskarteng ito sa ilang partikular na sitwasyon. Sa kasong ito, kapag nire-restore ang isang array, posibleng ma-restore nang hindi tama ang mga block na nasa ilalim ng hindi kumpletong record.

Sa kaso ng btrfs, ang problemang ito ay pinaka-may-katuturan kung ang record na ginawa ay mas maliit kaysa sa stripe. Sa kasong ito, ang file system ay dapat magsagawa ng read-modify-write operation (read-modify-write, RMW). Kung makakatagpo ito ng mga bloke na may hindi kumpletong pagsulat, ang operasyon ng RMW ay maaaring magdulot ng katiwalian na hindi matutukoy, anuman ang mga checksum. Ang mga developer ay gumawa ng mga pagbabago kung saan sinusuri ng operasyon ng RMW ang checksum ng mga bloke bago isagawa ang operasyong ito, at kung kinakailangan upang maibalik ang data, sinusuri din nito ang mga checksum pagkatapos ng pag-record. Sa kasamaang palad, sa isang sitwasyon na may pagsusulat ng hindi kumpletong stripe (RMW), humahantong ito sa karagdagang overhead para sa pagkalkula ng mga checksum, ngunit makabuluhang pinatataas ang pagiging maaasahan. Para sa RAID6, ang naturang lohika ay hindi pa handa, gayunpaman, para sa gayong pagkabigo sa RAID6 kinakailangan na ang pagsusulat ay nabigo sa 2 mga aparato nang sabay-sabay, na mas malamang.

Bukod pa rito, maaari naming tandaan ang mga rekomendasyon para sa paggamit ng RAID5/6 mula sa mga developer, ang esensya nito ay na sa Btrfs ang metadata at data storage profile ay maaaring mag-iba. Sa kasong ito, maaari mong gamitin ang profile na RAID1 (mirror) o kahit RAID1C3 (3 kopya) para sa metadata, at RAID5 o RAID6 para sa data. Tinitiyak nito ang maaasahang proteksyon ng metadata at ang kawalan ng "write hole," sa isang banda, at mas mahusay na paggamit ng espasyo, katangian ng RAID5/6, sa kabilang banda. Ito ay nagpapahintulot sa metadata corruption na iwasan at ang data corruption ay maaaring itama.

Mapapansin din na para sa mga SSD sa Btrfs sa kernel 6.2, ang asynchronous na pagpapatupad ng "discard" na operasyon ay isaaktibo bilang default (pagmamarka ng mga napalaya na bloke na hindi na kailangang pisikal na maimbak). Ang bentahe ng mode na ito ay mataas na pagganap dahil sa epektibong pagpapangkat ng mga operasyong "i-discard" sa isang pila at karagdagang pagproseso ng pila ng isang processor sa background, kaya naman ang mga normal na operasyon ng FS ay hindi bumabagal, tulad ng kaso sa kasabay na " itapon" habang ang mga bloke ay pinalaya, at ang SSD ay maaaring gumawa ng mas mahusay na mga desisyon. Sa kabilang banda, hindi mo na kakailanganing gumamit ng mga utility tulad ng fstrim, dahil ang lahat ng magagamit na mga bloke ay iki-clear sa FS nang hindi nangangailangan ng karagdagang pag-scan at nang hindi nagpapabagal sa mga operasyon.

Pinagmulan: opennet.ru

Magdagdag ng komento