Linux 6.2 nukleoak RAID5/6 hobekuntzak izango ditu Btrfs-en

Btrfs hobekuntzak Linux 6.2 nukleoan sartzeko proposatu dira RAID 5/6 inplementazioan idazketa-zuloaren arazoa konpontzeko. Arazoaren funtsa grabatzean hutsegite bat gertatzen bada, hasiera batean ezinezkoa da ulertzea zein bloketan zein RAID gailutan idatzi behar den zuzen, eta zeinetan amaitu ez den grabazioa. Egoera honetan RAID bat leheneratzen saiatzen bazara, babestutako blokeei dagozkien blokeak suntsitu daitezke RAID blokeen egoera sinkronizatuta dagoelako. Arazo hau efektu horri aurre egiteko neurri bereziak hartu ez diren edozein RAID1/5/6 arraytan gertatzen da.

RAID inplementazio batean, RAID1 btrfs-en bezala, arazo hau bi kopietan checksumak erabiliz konpontzen da; bat-etortzerik ez badago, datuak bigarren kopiatik berrezartzen dira. Planteamendu honek funtzionatzen du gailuren bat hutsegite osoa izan beharrean datu okerrak bidaltzen hasten badira.

Hala ere, RAID5/6-ren kasuan, fitxategi-sistemak ez ditu parekotasun-blokeen kontrol-bagarik gordetzen: egoera normal batean, blokeen baliozkotasuna denak egiaztatzen direla egiaztatzen da, eta parekotasun-blokea berreraiki daiteke. datuetatik. Hala ere, grabaketa partzialaren kasuan, baliteke ikuspegi honek egoera jakin batzuetan ez funtzionatzea. Kasu honetan, array bat leheneratzean, baliteke erregistro osatugabe baten pean dauden blokeak gaizki leheneratzea.

Btrfs-en kasuan, arazo hau garrantzitsuena da ekoizten den diskoa marra baino txikiagoa bada. Kasu honetan, fitxategi-sistemak irakurketa-aldaketa-idazketa eragiketa bat egin behar du (irakurketa-aldatu-idazketa, RMW). Honek idazketa osatugabea duten blokeak aurkitzen baditu, RMW eragiketak detektatuko ez den ustelkeria eragin dezake, checksumak kontuan hartu gabe. Garatzaileek aldaketak egin dituzte RMW eragiketak blokeen checksum-a egiaztatzen du eragiketa hau egin aurretik, eta datuak leheneratu behar badira, checksumak ere egiaztatzen ditu grabatu ondoren. Zoritxarrez, marra osatugabea (RMW) idazteko egoeran, horrek gainkostu gehigarriak eragiten ditu checksumak kalkulatzeko, baina fidagarritasuna nabarmen handitzen du. RAID6rako, logika hori oraindik ez dago prest, hala ere, RAID6-n halako hutsegite bat izateko beharrezkoa da idazketa 2 gailutan huts egitea aldi berean, eta hori gutxiago da.

Gainera, garatzaileen RAID5/6 erabiltzeko gomendioak kontuan izan ditzakegu, eta horien funtsa da Btrfs-en metadatuak eta datuak biltegiratzeko profila desberdinak izan daitezkeela. Kasu honetan, RAID1 (ispilua) edo RAID1C3 (3 kopia) profila erabil dezakezu metadatuetarako, eta RAID5 edo RAID6 datuetarako. Horrek metadatuen babes fidagarria eta "idazketa-zulo"rik ez izatea bermatzen du, batetik, eta espazioaren erabilera eraginkorragoa, RAID5/6-ren ezaugarria, bestetik. Horri esker, metadatuen ustelkeria saihestu eta datuen ustelkeria zuzendu daiteke.

Kontuan izan daiteke 6.2 nukleoko Btrfs-en SSDetarako, "baztertu" eragiketaren exekuzio asinkronoa lehenespenez aktibatuko dela (jada fisikoki gorde behar ez diren askatutako blokeak markatuz). Modu honen abantaila errendimendu handia da, "baztertu" eragiketak ilara batean taldekatze eraginkorrean eta atzeko prozesadore baten bidez ilararen prozesamendu gehiagoren ondorioz, horregatik FS eragiketa normalak ez dira moteltzen, sinkronoekin gertatzen den bezala. baztertu” blokeak askatzen diren heinean, eta SSDak erabaki hobeak har ditzake. Bestalde, jada ez duzu fstrim bezalako utilitateak erabili beharko, erabilgarri dauden bloke guztiak garbituko baitira FSan eskaneatu gehigarririk egin gabe eta eragiketak moteldu gabe.

Iturria: opennet.ru

Gehitu iruzkin berria