Linux Kernel 6.2 ќе вклучува подобрувања RAID5/6 во Btrfs

Подобрувањата на Btrfs се предложени за вклучување во кернелот Linux 6.2 за да се реши проблемот со дупката за запишување во имплементацијата на RAID 5/6. Суштината на проблемот се сведува на фактот дека ако се случи пад за време на снимањето, првично е невозможно да се разбере кој блок на кој уред RAID е правилно напишан и во кој снимањето не е завршено. Ако се обидете да вратите RAID во оваа ситуација, блоковите што одговараат на преземените блокови може да бидат уништени бидејќи состојбата на блоковите RAID не е синхронизирана. Овој проблем се јавува во сите RAID1/5/6 низи каде што не се преземени посебни мерки за борба против овој ефект.

Во имплементација на RAID, како RAID1 во btrfs, овој проблем се решава со користење на контролни суми во двете копии; ако има несовпаѓање, податоците едноставно се враќаат од втората копија. Овој пристап функционира и ако некој уред почне да испраќа неточни податоци наместо целосен дефект.

Меѓутоа, во случајот на RAID5/6, датотечниот систем не складира контролни суми за блоковите на паритет: во нормална ситуација, валидноста на блоковите се потврдува со фактот дека сите тие се проверени, а блокот за паритет може да се реконструира од податоците. Меѓутоа, во случај на делумно снимање, овој пристап може да не работи во одредени ситуации. Во овој случај, при враќање на низа, можно е блоковите што спаѓаат во нецелосен запис да бидат погрешно обновени.

Во случај на btrfs, овој проблем е најрелевантен ако записот што се произведува е помал од лентата. Во овој случај, датотечниот систем мора да изврши операција за читање-измени-запишување (читај-измени-запишување, RMW). Ако ова наиде на блокови со нецелосно пишување, тогаш операцијата RMW може да предизвика корупција што нема да биде откриена, без оглед на контролните суми. Програмерите направија промени во кои операцијата RMW ја проверува контролната сума на блоковите пред да ја изврши оваа операција, а доколку е неопходно да се вратат податоците, ги проверува и контролните суми по снимањето. За жал, во ситуација со пишување нецелосна лента (RMW), ова води до дополнителни трошоци за пресметување на контролни суми, но значително ја зголемува веродостојноста. За RAID6, таквата логика сè уште не е подготвена, меѓутоа, за таков неуспех во RAID6 е неопходно запишувањето да не успее на 2 уреди одеднаш, што е помалку веројатно.

Дополнително, можеме да забележиме препораки за користење RAID5/6 од програмерите, чија суштина е дека во Btrfs метаподатоците и профилот за складирање податоци може да се разликуваат. Во овој случај, можете да го користите профилот RAID1 (огледало) или дури и RAID1C3 (3 копии) за метаподатоци и RAID5 или RAID6 за податоци. Ова обезбедува сигурна заштита на метаподатоци и отсуство на „дупка за пишување“, од една страна, и поефикасно користење на просторот, карактеристично за RAID5/6, од друга страна. Ова овозможува да се избегне корупцијата на метаподатоците и да се коригира корупцијата на податоците.

Исто така, може да се забележи дека за SSD-дискови во Btrfs во јадрото 6.2, асинхроното извршување на операцијата „отфрли“ ќе биде стандардно активирано (означување на ослободените блокови кои повеќе не треба физички да се складираат). Предноста на овој режим е високите перформанси поради ефективно групирање на операциите „отфрли“ во ред и понатамошна обработка на редот од процесор во позадина, поради што нормалните операции на FS не се забавуваат, како што е случајот со синхрони „ отфрли“ бидејќи блоковите се ослободуваат, а SSD може да донесе подобри одлуки. Од друга страна, веќе нема да треба да користите комунални услуги како fstrim, бидејќи сите достапни блокови ќе се бришат во FS без потреба од дополнително скенирање и без забавување на операциите.

Извор: opennet.ru

Додадете коментар